… | |
… | |
622 | |
622 | |
623 | pkt->flags = htons (DEFAULT_CLIENT_FLAGS); |
623 | pkt->flags = htons (DEFAULT_CLIENT_FLAGS); |
624 | pkt->qdcount = htons (1); |
624 | pkt->qdcount = htons (1); |
625 | |
625 | |
626 | int offs = 6*2; |
626 | int offs = 6*2; |
627 | int dlen = MAX_DOMAIN_SIZE - (strlen (THISNODE->domain) + 2); |
627 | int dlen = MAX_DOMAIN_SIZE - (strlen (dns->c->conf->domain) + 2); |
628 | // MAX_DOMAIN_SIZE is technically 255, but bind doesn't compress responses well, |
628 | // MAX_DOMAIN_SIZE is technically 255, but bind doesn't compress responses well, |
629 | // so we need to have space for 2*MAX_DOMAIN_SIZE + header + extra |
629 | // so we need to have space for 2*MAX_DOMAIN_SIZE + header + extra |
630 | |
630 | |
631 | char enc[256], *encp = enc; |
631 | char enc[256], *encp = enc; |
632 | encode_header (enc, THISNODE->id, seqno); |
632 | encode_header (enc, THISNODE->id, seqno); |
… | |
… | |
650 | encp += lbllen; |
650 | encp += lbllen; |
651 | |
651 | |
652 | enclen -= lbllen; |
652 | enclen -= lbllen; |
653 | } |
653 | } |
654 | |
654 | |
655 | append_domain (*pkt, offs, THISNODE->domain); |
655 | append_domain (*pkt, offs, dns->c->conf->domain); |
656 | |
656 | |
657 | (*pkt)[offs++] = 0; |
657 | (*pkt)[offs++] = 0; |
658 | (*pkt)[offs++] = RR_TYPE_ANY >> 8; (*pkt)[offs++] = RR_TYPE_ANY; |
658 | (*pkt)[offs++] = RR_TYPE_ANY >> 8; (*pkt)[offs++] = RR_TYPE_ANY; |
659 | (*pkt)[offs++] = RR_CLASS_IN >> 8; (*pkt)[offs++] = RR_CLASS_IN; |
659 | (*pkt)[offs++] = RR_CLASS_IN >> 8; (*pkt)[offs++] = RR_CLASS_IN; |
660 | |
660 | |
… | |
… | |
676 | |
676 | |
677 | assert (elen <= MAX_LBL_SIZE); |
677 | assert (elen <= MAX_LBL_SIZE); |
678 | |
678 | |
679 | (*pkt)[offs] = elen; |
679 | (*pkt)[offs] = elen; |
680 | offs += elen + 1; |
680 | offs += elen + 1; |
681 | append_domain (*pkt, offs, THISNODE->domain); |
681 | append_domain (*pkt, offs, dns->c->conf->domain); |
682 | |
682 | |
683 | (*pkt)[offs++] = 0; |
683 | (*pkt)[offs++] = 0; |
684 | (*pkt)[offs++] = RR_TYPE_A >> 8; (*pkt)[offs++] = RR_TYPE_A; |
684 | (*pkt)[offs++] = RR_TYPE_A >> 8; (*pkt)[offs++] = RR_TYPE_A; |
685 | (*pkt)[offs++] = RR_CLASS_IN >> 8; (*pkt)[offs++] = RR_CLASS_IN; |
685 | (*pkt)[offs++] = RR_CLASS_IN >> 8; (*pkt)[offs++] = RR_CLASS_IN; |
686 | |
686 | |