- len = 0;
- while ((u8)(((struct rt0_hdr *)route)->
- addr[temp].s6_addr[len]) ==
- (u8)(rtinfo->addrs[ptr].s6_addr[len])){
- DEBUGP("%02X?%02X ",
- (u8)(((struct rt0_hdr *)route)->addr[temp].s6_addr[len]),
- (u8)(rtinfo->addrs[ptr].s6_addr[len]));
- len++;
- if ( len == 16 ) break;
- }
- if (len==16) {
- DEBUGP("ptr=%d temp=%d;\n",ptr,temp);
- ptr++;
- } else {
- DEBUGP("%02X?%02X ",
- (u8)(((struct rt0_hdr *)route)->addr[temp].s6_addr[len]),
- (u8)(rtinfo->addrs[ptr].s6_addr[len]));
- DEBUGP("!ptr=%d temp=%d;\n",ptr,temp);
+ ap = skb_header_pointer(skb,
+ ptr
+ + sizeof(struct rt0_hdr)
+ + temp * sizeof(_addr),
+ sizeof(_addr),
+ &_addr);
+
+ BUG_ON(ap == NULL);
+
+ if (ipv6_addr_equal(ap, &rtinfo->addrs[i])) {
+ DEBUGP("i=%d temp=%d;\n",i,temp);
+ i++;