ip/ipconfig: use unique ip/ipmask/ipgw values close to match for ndbconfig
This commit is contained in:
parent
c4603260f8
commit
93ab48008e
2 changed files with 31 additions and 13 deletions
|
@ -25,7 +25,7 @@ struct Conf
|
||||||
uchar dns[2*IPaddrlen];
|
uchar dns[2*IPaddrlen];
|
||||||
uchar fs[2*IPaddrlen];
|
uchar fs[2*IPaddrlen];
|
||||||
uchar auth[2*IPaddrlen];
|
uchar auth[2*IPaddrlen];
|
||||||
uchar ntp[IPaddrlen];
|
uchar ntp[2*IPaddrlen];
|
||||||
int mtu;
|
int mtu;
|
||||||
|
|
||||||
/* dhcp specific */
|
/* dhcp specific */
|
||||||
|
|
|
@ -1776,11 +1776,29 @@ procsetname(char *fmt, ...)
|
||||||
free(cmdname);
|
free(cmdname);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static Ndbtuple*
|
||||||
|
uniquent(Ndbtuple *t)
|
||||||
|
{
|
||||||
|
Ndbtuple **l, *x;
|
||||||
|
|
||||||
|
l = &t->entry;
|
||||||
|
while((x = *l) != nil){
|
||||||
|
if(strcmp(t->attr, x->attr) != 0){
|
||||||
|
l = &x->entry;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
*l = x->entry;
|
||||||
|
x->entry = nil;
|
||||||
|
ndbfree(x);
|
||||||
|
}
|
||||||
|
return t;
|
||||||
|
}
|
||||||
|
|
||||||
/* get everything out of ndb */
|
/* get everything out of ndb */
|
||||||
void
|
void
|
||||||
ndbconfig(void)
|
ndbconfig(void)
|
||||||
{
|
{
|
||||||
int nattr, nauth = 0, ndns = 0, nfs = 0, ok;
|
int nattr, nauth = 0, ndns = 0, nfs = 0, nntp = 0, ok;
|
||||||
char etheraddr[32];
|
char etheraddr[32];
|
||||||
char *attrs[10];
|
char *attrs[10];
|
||||||
Ndb *db;
|
Ndb *db;
|
||||||
|
@ -1806,19 +1824,19 @@ ndbconfig(void)
|
||||||
for(nt = t; nt != nil; nt = nt->entry) {
|
for(nt = t; nt != nil; nt = nt->entry) {
|
||||||
ok = 1;
|
ok = 1;
|
||||||
if(strcmp(nt->attr, "ip") == 0)
|
if(strcmp(nt->attr, "ip") == 0)
|
||||||
ok = parseip(conf.laddr, nt->val);
|
ok = parseip(conf.laddr, uniquent(nt)->val);
|
||||||
else if(strcmp(nt->attr, "ipmask") == 0)
|
else if(strcmp(nt->attr, "ipmask") == 0)
|
||||||
parseipmask(conf.mask, nt->val); /* could be -1 */
|
parseipmask(conf.mask, uniquent(nt)->val); /* could be -1 */
|
||||||
else if(strcmp(nt->attr, "ipgw") == 0)
|
else if(strcmp(nt->attr, "ipgw") == 0)
|
||||||
ok = parseip(conf.gaddr, nt->val);
|
ok = parseip(conf.gaddr, uniquent(nt)->val);
|
||||||
else if(ndns < 2 && strcmp(nt->attr, "dns") == 0)
|
else if(ndns < sizeof(conf.dns)/IPaddrlen && strcmp(nt->attr, "dns") == 0)
|
||||||
ok = parseip(conf.dns+IPaddrlen*ndns, nt->val);
|
ok = parseip(conf.dns+IPaddrlen*ndns++, nt->val);
|
||||||
else if(strcmp(nt->attr, "ntp") == 0)
|
else if(nntp < sizeof(conf.ntp)/IPaddrlen && strcmp(nt->attr, "ntp") == 0)
|
||||||
ok = parseip(conf.ntp, nt->val);
|
ok = parseip(conf.ntp+IPaddrlen*nntp++, nt->val);
|
||||||
else if(nfs < 2 && strcmp(nt->attr, "fs") == 0)
|
else if(nfs < sizeof(conf.fs)/IPaddrlen && strcmp(nt->attr, "fs") == 0)
|
||||||
ok = parseip(conf.fs+IPaddrlen*nfs, nt->val);
|
ok = parseip(conf.fs+IPaddrlen*nfs++, nt->val);
|
||||||
else if(nauth < 2 && strcmp(nt->attr, "auth") == 0)
|
else if(nauth < sizeof(conf.auth)/IPaddrlen && strcmp(nt->attr, "auth") == 0)
|
||||||
ok = parseip(conf.auth+IPaddrlen*nauth, nt->val);
|
ok = parseip(conf.auth+IPaddrlen*nauth++, nt->val);
|
||||||
if (!ok)
|
if (!ok)
|
||||||
fprint(2, "%s: bad %s address in ndb: %s\n", argv0,
|
fprint(2, "%s: bad %s address in ndb: %s\n", argv0,
|
||||||
nt->attr, nt->val);
|
nt->attr, nt->val);
|
||||||
|
|
Loading…
Reference in a new issue