|
|
@@ -296,11 +296,14 @@ void dp_dhcpv6_check(dp_conf *conf, unsigned char *pkt, int pktlen, int offset, |
|
|
|
offset += 2; // msg-type, hop-count |
|
|
|
} |
|
|
|
|
|
|
|
while(offset+1<pktlen) { |
|
|
|
uint8_t code = (uint8_t)pkt[offset]; |
|
|
|
uint8_t len = (uint8_t)pkt[offset+1]; |
|
|
|
while(offset+4<=pktlen) { |
|
|
|
uint16_t code = ntohs((uint16_t)pkt[offset]); |
|
|
|
uint16_t len = ntohs((uint16_t)pkt[offset+2]); |
|
|
|
|
|
|
|
offset+=2; |
|
|
|
offset+=4; |
|
|
|
|
|
|
|
if ( code == 9 ) // relay message |
|
|
|
continue; |
|
|
|
|
|
|
|
if ( code == 1 ) { // Client identifier / DUID |
|
|
|
// make sure there's enough space |