ndb/dns: fix ndb serialization of RR*
have todo multiple fmtprint() calls for idnname() as the buffer is shared. do not idnname() rp->os and rp->cpu, these are symbols. always quote txt= records.
This commit is contained in:
parent
245bf71e61
commit
28f67bba84
1 changed files with 14 additions and 26 deletions
|
@ -1201,8 +1201,7 @@ int
|
||||||
rrfmt(Fmt *f)
|
rrfmt(Fmt *f)
|
||||||
{
|
{
|
||||||
int rv;
|
int rv;
|
||||||
char *strp;
|
char *strp, buf[Domlen];
|
||||||
char buf[Domlen];
|
|
||||||
Fmt fstr;
|
Fmt fstr;
|
||||||
RR *rp;
|
RR *rp;
|
||||||
Server *s;
|
Server *s;
|
||||||
|
@ -1333,8 +1332,8 @@ out:
|
||||||
int
|
int
|
||||||
rravfmt(Fmt *f)
|
rravfmt(Fmt *f)
|
||||||
{
|
{
|
||||||
int rv, quote;
|
int rv;
|
||||||
char buf[Domlen], *strp;
|
char *strp, buf[Domlen];
|
||||||
Fmt fstr;
|
Fmt fstr;
|
||||||
RR *rp;
|
RR *rp;
|
||||||
Server *s;
|
Server *s;
|
||||||
|
@ -1357,9 +1356,7 @@ rravfmt(Fmt *f)
|
||||||
|
|
||||||
switch(rp->type){
|
switch(rp->type){
|
||||||
case Thinfo:
|
case Thinfo:
|
||||||
fmtprint(&fstr, " cpu=%s os=%s",
|
fmtprint(&fstr, " cpu=%s os=%s", dnname(rp->cpu), dnname(rp->os));
|
||||||
idnname(rp->cpu, buf, sizeof(buf)),
|
|
||||||
idnname(rp->os, buf, sizeof(buf)));
|
|
||||||
break;
|
break;
|
||||||
case Tcname:
|
case Tcname:
|
||||||
fmtprint(&fstr, " cname=%s", idnname(rp->host, buf, sizeof(buf)));
|
fmtprint(&fstr, " cname=%s", idnname(rp->host, buf, sizeof(buf)));
|
||||||
|
@ -1377,9 +1374,8 @@ rravfmt(Fmt *f)
|
||||||
fmtprint(&fstr, " mbox=%s", idnname(rp->mb, buf, sizeof(buf)));
|
fmtprint(&fstr, " mbox=%s", idnname(rp->mb, buf, sizeof(buf)));
|
||||||
break;
|
break;
|
||||||
case Tminfo:
|
case Tminfo:
|
||||||
fmtprint(&fstr, " mbox=%s mbox=%s",
|
fmtprint(&fstr, " mbox=%s", idnname(rp->mb, buf, sizeof(buf)));
|
||||||
idnname(rp->mb, buf, sizeof(buf)),
|
fmtprint(&fstr, " mbox=%s", idnname(rp->rmb, buf, sizeof(buf)));
|
||||||
idnname(rp->rmb, buf, sizeof(buf)));
|
|
||||||
break;
|
break;
|
||||||
case Tmx:
|
case Tmx:
|
||||||
fmtprint(&fstr, " pref=%lud mx=%s", rp->pref,
|
fmtprint(&fstr, " pref=%lud mx=%s", rp->pref,
|
||||||
|
@ -1390,14 +1386,14 @@ rravfmt(Fmt *f)
|
||||||
fmtprint(&fstr, " ip=%s", dnname(rp->ip));
|
fmtprint(&fstr, " ip=%s", dnname(rp->ip));
|
||||||
break;
|
break;
|
||||||
case Tptr:
|
case Tptr:
|
||||||
fmtprint(&fstr, " dom=%s", dnname(rp->ptr));
|
fmtprint(&fstr, " dom=%s", idnname(rp->ptr, buf, sizeof(buf)));
|
||||||
break;
|
break;
|
||||||
case Tsoa:
|
case Tsoa:
|
||||||
soa = rp->soa;
|
soa = rp->soa;
|
||||||
|
fmtprint(&fstr, " ns=%s", idnname(rp->host, buf, sizeof(buf)));
|
||||||
|
fmtprint(&fstr, " mbox=%s", idnname(rp->rmb, buf, sizeof(buf)));
|
||||||
fmtprint(&fstr,
|
fmtprint(&fstr,
|
||||||
" ns=%s mbox=%s serial=%lud refresh=%lud retry=%lud expire=%lud ttl=%lud",
|
" serial=%lud refresh=%lud retry=%lud expire=%lud ttl=%lud",
|
||||||
idnname(rp->host, buf, sizeof(buf)),
|
|
||||||
idnname(rp->rmb, buf, sizeof(buf)),
|
|
||||||
(soa? soa->serial: 0),
|
(soa? soa->serial: 0),
|
||||||
(soa? soa->refresh: 0), (soa? soa->retry: 0),
|
(soa? soa->refresh: 0), (soa? soa->retry: 0),
|
||||||
(soa? soa->expire: 0), (soa? soa->minttl: 0));
|
(soa? soa->expire: 0), (soa? soa->minttl: 0));
|
||||||
|
@ -1418,22 +1414,14 @@ rravfmt(Fmt *f)
|
||||||
rp->null->data);
|
rp->null->data);
|
||||||
break;
|
break;
|
||||||
case Ttxt:
|
case Ttxt:
|
||||||
fmtprint(&fstr, " txt=");
|
fmtprint(&fstr, " txt=\"");
|
||||||
quote = 0;
|
|
||||||
for(t = rp->txt; t != nil; t = t->next)
|
|
||||||
if(strchr(t->p, ' '))
|
|
||||||
quote = 1;
|
|
||||||
if(quote)
|
|
||||||
fmtprint(&fstr, "\"");
|
|
||||||
for(t = rp->txt; t != nil; t = t->next)
|
for(t = rp->txt; t != nil; t = t->next)
|
||||||
fmtprint(&fstr, "%s", t->p);
|
fmtprint(&fstr, "%s", t->p);
|
||||||
if(quote)
|
fmtprint(&fstr, "\"");
|
||||||
fmtprint(&fstr, "\"");
|
|
||||||
break;
|
break;
|
||||||
case Trp:
|
case Trp:
|
||||||
fmtprint(&fstr, " rp=%s txt=%s",
|
fmtprint(&fstr, " mbox=%s", idnname(rp->rmb, buf, sizeof(buf)));
|
||||||
idnname(rp->rmb, buf, sizeof(buf)),
|
fmtprint(&fstr, " rp=%s", idnname(rp->rp, buf, sizeof(buf)));
|
||||||
idnname(rp->rp, buf, sizeof(buf)));
|
|
||||||
break;
|
break;
|
||||||
case Tdnskey:
|
case Tdnskey:
|
||||||
case Tkey:
|
case Tkey:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue