- bp += sizeof(u_int32_t);
- switch (EXTRACT_16BITS(bp)) {
- case AFI_IP:
- addr_size = sizeof(struct in_addr);
- nla_af = AF_INET;
+ bp += 4;
+ nla_afnum = EXTRACT_16BITS(bp);
+ bp += 2+2;
+ switch (nla_afnum) {
+ case AFNUM_INET:
+ if (opt_len != PGM_OPT_PGMCC_FEEDBACK_FIXED_LEN + sizeof(struct in_addr)) {
+ ND_PRINT((ndo, "[Bad OPT_PGMCC_FEEDBACK option, length %u != %u + address size]",
+ opt_len, PGM_OPT_PGMCC_FEEDBACK_FIXED_LEN));
+ return;
+ }
+ ND_TCHECK2(*bp, sizeof(struct in_addr));
+ addrtostr(bp, nla_buf, sizeof(nla_buf));
+ bp += sizeof(struct in_addr);
+ opts_len -= PGM_OPT_PGMCC_FEEDBACK_FIXED_LEN + sizeof(struct in_addr);