diff options
Diffstat (limited to 'testcode/pktview.c')
-rw-r--r-- | testcode/pktview.c | 97 |
1 files changed, 49 insertions, 48 deletions
diff --git a/testcode/pktview.c b/testcode/pktview.c index 3cbdfc395810..e59283fa854c 100644 --- a/testcode/pktview.c +++ b/testcode/pktview.c @@ -21,16 +21,16 @@ * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /** @@ -40,12 +40,13 @@ */ #include "config.h" -#include <ldns/ldns.h> #include "util/log.h" #include "util/data/dname.h" #include "util/data/msgparse.h" #include "testcode/unitmain.h" #include "testcode/readhex.h" +#include "ldns/sbuffer.h" +#include "ldns/parseutil.h" /** usage information for pktview */ static void usage(char* argv[]) @@ -56,7 +57,7 @@ static void usage(char* argv[]) } /** read hex input */ -static void read_input(ldns_buffer* pkt, FILE* in) +static void read_input(sldns_buffer* pkt, FILE* in) { char buf[102400]; char* np = buf; @@ -69,22 +70,22 @@ static void read_input(ldns_buffer* pkt, FILE* in) } /** analyze domain name in packet, possibly compressed */ -static void analyze_dname(ldns_buffer* pkt) +static void analyze_dname(sldns_buffer* pkt) { - size_t oldpos = ldns_buffer_position(pkt); + size_t oldpos = sldns_buffer_position(pkt); size_t len; printf("[pos %d] dname: ", (int)oldpos); - dname_print(stdout, pkt, ldns_buffer_current(pkt)); + dname_print(stdout, pkt, sldns_buffer_current(pkt)); len = pkt_dname_len(pkt); printf(" len=%d", (int)len); - if(ldns_buffer_position(pkt)-oldpos != len) + if(sldns_buffer_position(pkt)-oldpos != len) printf(" comprlen=%d\n", - (int)(ldns_buffer_position(pkt)-oldpos)); + (int)(sldns_buffer_position(pkt)-oldpos)); else printf("\n"); } /** analyze rdata in packet */ -static void analyze_rdata(ldns_buffer*pkt, const ldns_rr_descriptor* desc, +static void analyze_rdata(sldns_buffer*pkt, const sldns_rr_descriptor* desc, uint16_t rdlen) { int rdf = 0; @@ -93,21 +94,21 @@ static void analyze_rdata(ldns_buffer*pkt, const ldns_rr_descriptor* desc, while(rdlen > 0 && count) { switch(desc->_wireformat[rdf]) { case LDNS_RDF_TYPE_DNAME: - oldpos = ldns_buffer_position(pkt); + oldpos = sldns_buffer_position(pkt); analyze_dname(pkt); - rdlen -= ldns_buffer_position(pkt)-oldpos; + rdlen -= sldns_buffer_position(pkt)-oldpos; count --; len = 0; break; case LDNS_RDF_TYPE_STR: - len = ldns_buffer_current(pkt)[0] + 1; + len = sldns_buffer_current(pkt)[0] + 1; break; default: len = get_rdf_size(desc->_wireformat[rdf]); } if(len) { printf(" wf[%d]", (int)len); - ldns_buffer_skip(pkt, (ssize_t)len); + sldns_buffer_skip(pkt, (ssize_t)len); rdlen -= len; } rdf++; @@ -116,62 +117,62 @@ static void analyze_rdata(ldns_buffer*pkt, const ldns_rr_descriptor* desc, size_t i; printf(" remain[%d]\n", (int)rdlen); for(i=0; i<rdlen; i++) - printf(" %2.2X", (unsigned)ldns_buffer_current(pkt)[i]); + printf(" %2.2X", (unsigned)sldns_buffer_current(pkt)[i]); printf("\n"); } else printf("\n"); - ldns_buffer_skip(pkt, (ssize_t)rdlen); + sldns_buffer_skip(pkt, (ssize_t)rdlen); } /** analyze rr in packet */ -static void analyze_rr(ldns_buffer* pkt, int q) +static void analyze_rr(sldns_buffer* pkt, int q) { uint16_t type, dclass, len; uint32_t ttl; analyze_dname(pkt); - type = ldns_buffer_read_u16(pkt); - dclass = ldns_buffer_read_u16(pkt); - printf("type %s(%d)", ldns_rr_descript(type)? - ldns_rr_descript(type)->_name: "??" , (int)type); - printf(" class %s(%d) ", ldns_lookup_by_id(ldns_rr_classes, - (int)dclass)?ldns_lookup_by_id( ldns_rr_classes, + type = sldns_buffer_read_u16(pkt); + dclass = sldns_buffer_read_u16(pkt); + printf("type %s(%d)", sldns_rr_descript(type)? + sldns_rr_descript(type)->_name: "??" , (int)type); + printf(" class %s(%d) ", sldns_lookup_by_id(sldns_rr_classes, + (int)dclass)?sldns_lookup_by_id(sldns_rr_classes, (int)dclass)->name:"??", (int)dclass); if(q) { printf("\n"); } else { - ttl = ldns_buffer_read_u32(pkt); + ttl = sldns_buffer_read_u32(pkt); printf(" ttl %d (0x%x)", (int)ttl, (unsigned)ttl); - len = ldns_buffer_read_u16(pkt); + len = sldns_buffer_read_u16(pkt); printf(" rdata len %d:\n", (int)len); - if(ldns_rr_descript(type)) - analyze_rdata(pkt, ldns_rr_descript(type), len); - else ldns_buffer_skip(pkt, (ssize_t)len); + if(sldns_rr_descript(type)) + analyze_rdata(pkt, sldns_rr_descript(type), len); + else sldns_buffer_skip(pkt, (ssize_t)len); } } /** analyse pkt */ -static void analyze(ldns_buffer* pkt) +static void analyze(sldns_buffer* pkt) { uint16_t i, f, qd, an, ns, ar; int rrnum = 0; - printf("packet length %d\n", (int)ldns_buffer_limit(pkt)); - if(ldns_buffer_limit(pkt) < 12) return; + printf("packet length %d\n", (int)sldns_buffer_limit(pkt)); + if(sldns_buffer_limit(pkt) < 12) return; - i = ldns_buffer_read_u16(pkt); + i = sldns_buffer_read_u16(pkt); printf("id (hostorder): %d (0x%x)\n", (int)i, (unsigned)i); - f = ldns_buffer_read_u16(pkt); + f = sldns_buffer_read_u16(pkt); printf("flags: 0x%x\n", (unsigned)f); - qd = ldns_buffer_read_u16(pkt); + qd = sldns_buffer_read_u16(pkt); printf("qdcount: %d\n", (int)qd); - an = ldns_buffer_read_u16(pkt); + an = sldns_buffer_read_u16(pkt); printf("ancount: %d\n", (int)an); - ns = ldns_buffer_read_u16(pkt); + ns = sldns_buffer_read_u16(pkt); printf("nscount: %d\n", (int)ns); - ar = ldns_buffer_read_u16(pkt); + ar = sldns_buffer_read_u16(pkt); printf("arcount: %d\n", (int)ar); printf(";-- query section\n"); - while(ldns_buffer_remaining(pkt) > 0) { + while(sldns_buffer_remaining(pkt) > 0) { if(rrnum == (int)qd) printf(";-- answer section\n"); if(rrnum == (int)qd+(int)an) @@ -187,7 +188,7 @@ static void analyze(ldns_buffer* pkt) /** main program for pktview */ int main(int argc, char* argv[]) { - ldns_buffer* pkt = ldns_buffer_new(65553); + sldns_buffer* pkt = sldns_buffer_new(65553); if(argc != 1) { usage(argv); } @@ -196,6 +197,6 @@ int main(int argc, char* argv[]) read_input(pkt, stdin); analyze(pkt); - ldns_buffer_free(pkt); + sldns_buffer_free(pkt); return 0; } |