conf: Drop duplicate, diverging optstring assignments

This originated as a result of copy and paste to introduce a second
stage for processing options related to port forwarding, has already
bitten David in the past, and just gave me hours of fun.

As a matter of fact, the second set of optstring assignments was
already incorrect, but it didn't matter because the first one was
more restrictive, not allowing optional arguments for -P, -D, -S.

Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
Stefano Brivio 2022-10-06 12:55:03 +02:00
parent da152331cf
commit 51fa9bfd7b

20
conf.c
View file

@ -1043,25 +1043,23 @@ void conf(struct ctx *c, int argc, char **argv)
struct fqdn *dnss = c->dns_search; struct fqdn *dnss = c->dns_search;
uint32_t *dns4 = c->ip4.dns; uint32_t *dns4 = c->ip4.dns;
int name, ret, mask, b, i; int name, ret, mask, b, i;
const char *optstring;
unsigned int ifi = 0; unsigned int ifi = 0;
char *runas = NULL; char *runas = NULL;
uid_t uid; uid_t uid;
gid_t gid; gid_t gid;
if (c->mode == MODE_PASTA) if (c->mode == MODE_PASTA) {
c->no_dhcp_dns = c->no_dhcp_dns_search = 1; c->no_dhcp_dns = c->no_dhcp_dns_search = 1;
optstring = "dqfehI:p:P:m:a:n:M:g:i:D:S:46t:u:T:U:";
} else {
optstring = "dqfehs:p:P:m:a:n:M:g:i:D:S:46t:u:";
}
c->tcp.fwd_in.mode = c->tcp.fwd_out.mode = 0; c->tcp.fwd_in.mode = c->tcp.fwd_out.mode = 0;
c->udp.fwd_in.f.mode = c->udp.fwd_out.f.mode = 0; c->udp.fwd_in.f.mode = c->udp.fwd_out.f.mode = 0;
do { do {
const char *optstring;
if (c->mode == MODE_PASST)
optstring = "dqfehs:p:P:m:a:n:M:g:i:D:S:46t:u:";
else
optstring = "dqfehI:p:P:m:a:n:M:g:i:D:S:46t:u:T:U:";
name = getopt_long(argc, argv, optstring, options, NULL); name = getopt_long(argc, argv, optstring, options, NULL);
switch (name) { switch (name) {
@ -1505,12 +1503,6 @@ void conf(struct ctx *c, int argc, char **argv)
optind = 1; optind = 1;
do { do {
struct port_fwd *fwd = NULL; struct port_fwd *fwd = NULL;
const char *optstring;
if (c->mode == MODE_PASST)
optstring = "dqfehs:p::P:m:a:n:M:g:i:D::S::46t:u:";
else
optstring = "dqfehI:p::P:m:a:n:M:g:i:D::S::46t:u:T:U:";
name = getopt_long(argc, argv, optstring, options, NULL); name = getopt_long(argc, argv, optstring, options, NULL);
switch (name) { switch (name) {