#include #include "rpc-bootparam.h" #include "main.h" #include "xdr.h" #include "util.h" #include "vars.h" #define PROC_NULL 0 #define PROC_WHOAMI 1 #define PROC_GETFILE 2 #define IP_ADDR_TYPE 1 static void dump_addr(const char *tag) { unsigned int type; unsigned int a[4]; int i; need(4,"bootparam address type"); printx(pkt,4); type = get32(0); printf("%stype = %u",tag,type); consume(4); switch (type) { case IP_ADDR_TYPE: printf(" [IP]\n"); need(16,"bootparam IP address"); printx(pkt,16); for (i=0;i<4;i++) { a[i] = get32(0) & 0xff; consume(4); } printf("%s[%u.%u.%u.%u]\n",tag,a[0],a[1],a[2],a[3]); break; default: printf("\n**** Unknown address type\n"); dumpabort(); break; } } void *dumprpc_bootparam(RPCDUMP_ARGS) { switch (op) { case DO_CALL: printx(pkt,0); switch (proc) { case PROC_NULL: printf("bootparam NULL request\n"); break; case PROC_WHOAMI: printf("bootparam WHOAMI request\n"); dump_addr("address "); break; case PROC_GETFILE: printf("bootparam GETFILE request\n"); dump_xdr_string("machine name "); dump_xdr_string("file id "); break; default: printf("bootparam request, unknown proc %u\n",proc); break; } return(0); break; case DO_REPLY: printx(pkt,0); switch (proc) { case PROC_NULL: printf("bootparam NULL reply\n"); break; case PROC_WHOAMI: printf("bootparam WHOAMI reply\n"); dump_xdr_string("client name "); dump_xdr_string("domain name "); dump_addr("router address "); break; case PROC_GETFILE: printf("bootparam GETFILE reply\n"); dump_xdr_string("server name "); dump_addr("server address "); dump_xdr_string("path "); break; default: printf("bootparam reply, unknown proc %u\n",proc); break; } break; case DO_FREE: break; } return(0); }