# struct netinfo { # struct sockaddr rip_dst; /* destination net/host */ # int rip_metric; /* cost of route */ # }; # struct rip { # u_char rip_cmd; /* request/response */ # u_char rip_vers; /* protocol version # */ # u_char rip_res1[2]; /* pad to 32-bit boundary */ # union { # struct netinfo ru_nets[1]; /* variable length... */ # char ru_tracefile[1]; /* ditto ... */ # } ripun; #define rip_nets ripun.ru_nets #define rip_tracefile ripun.ru_tracefile #define RIPCMD_REQUEST 1 /* want info */ #define RIPCMD_RESPONSE 2 /* responding to request */ #define RIPCMD_TRACEON 3 /* turn tracing on */ #define RIPCMD_TRACEOFF 4 /* turn it off */ #define HOPCNT_INFINITY 16 /* per Xerox NS */ #define MAXPACKETSIZE 512 /* max broadcast size */ ### RIP packet redux ### UDP send FROM clued-rtr/520 to target/520 2 # RIPCMD_RESPONSE 1 # version 0 # padding 0 # sockaddr-plus-metric structs begin, as many as necessary... 0 # len 2 # AF_INET 0 # port 0 # addr bytes: X Y Z Q 0 # filler, out to 16 bytes [sizeof (sockaddr)] ... 0 0 0 0 0 0 0 0 # metric: net-order integer 0 0 1 ## that's it