dvmrp_hdr
struct dvmrp_hdr *dvmrp_hdr;
if (len < sizeof(*dvmrp_hdr)) {
dvmrp_hdr = (struct dvmrp_hdr *)buf;
switch (dvmrp_hdr->type) {
if ((l = dvmrp_hdr_sanity_check(&ip_hdr, dvmrp_hdr, len,
(dvmrp_hdr->code == DVMRP_CODE_REPORT)) {
if ((dvmrp_hdr->type == PKT_TYPE_DVMRP) &&
(dvmrp_hdr->code != DVMRP_CODE_PROBE))
buf += sizeof(*dvmrp_hdr);
len = l - sizeof(*dvmrp_hdr);
switch (dvmrp_hdr->code) {
dvmrp_hdr->capabilities, buf, len);
dvmrp_hdr->type);
dvmrp_hdr_sanity_check(const struct ip *ip_hdr, struct dvmrp_hdr *dvmrp_hdr,
if (dvmrp_hdr->major_version != DVMRP_MAJOR_VERSION) {
int dvmrp_hdr_sanity_check(const struct ip *, struct dvmrp_hdr *,
struct dvmrp_hdr dvmrp_hdr;
memset(&dvmrp_hdr, 0, sizeof(dvmrp_hdr));
dvmrp_hdr.type = PKT_TYPE_DVMRP;
dvmrp_hdr.code = code;
dvmrp_hdr.chksum = 0; /* updated later */
dvmrp_hdr.capabilities = DVMRP_CAP_DEFAULT; /* XXX update */
dvmrp_hdr.minor_version = DVMRP_MINOR_VERSION;
dvmrp_hdr.major_version = DVMRP_MAJOR_VERSION;
return (ibuf_add(buf, &dvmrp_hdr, sizeof(dvmrp_hdr)));
if (ibuf_set(pkt, offsetof(struct dvmrp_hdr, chksum),