#include #include "xdr.h" #include "util.h" #include "vars.h" void dump_xdr_bool(const char *tag, int *bp) { unsigned long int v; need(4,"XDR boolean"); printx(pkt,4); v = get32(0); consume(4); printf("%s = ",tag); switch (v) { case 0: printf("FALSE"); if (bp) *bp = 0; break; case 1: printf("TRUE"); if (bp) *bp = 1; break; default: printf("%lu (unknown)",v); if (bp) *bp = -1; break; } printf("\n"); } void dump_xdr_string(const char *tag) { unsigned int len; unsigned int plen; need(4,"XDR string length"); printx(pkt,4); len = get32(0); consume(4); printf("%slen = %u\n",tag,len); plen = ROUNDUP(len,4); need(plen,"XDR string"); printxu(pkt,len); printf("%sstring\n",tag); if (plen > len) { printx(pkt+len,plen-len); printf("%spadding\n",tag); } consume(plen); } void dump_limited_xdr_string(const char *tag, unsigned int maxfull, unsigned int truncto) { unsigned int len; unsigned int plen; need(4,"XDR string length"); printx(pkt,4); len = get32(0); consume(4); printf("%slen = %u\n",tag,len); plen = ROUNDUP(len,4); need(plen,"XDR string"); printxu_limited(pkt,len,maxfull,truncto); printf("%sstring\n",tag); if (plen > len) { printx(pkt+len,plen-len); printf("%spadding\n",tag); } consume(plen); }