/* Create fake NEXT_HOP attribute */
if (len < 1 || (*x != 16 && *x != 32) || len < *x + 2)
goto bad;
- memcpy(bgp_attach_attr_wa(&a0->eattrs, bgp_linpool, BA_NEXT_HOP, 16), x+1, 16);
- len -= *x + 2;
- x += *x + 1;
- /* Ignore SNPA info */
- i = *x++;
- while (i--)
- {
- if (len < 1 || len < 1 + *x)
- goto bad;
- len -= *x + 1;
- x += *x + 1;
- }
+ byte *nh = bgp_attach_attr_wa(&a0->eattrs, bgp_linpool, BA_NEXT_HOP, 16);
+ memcpy(nh, x+1, 16);
+ ipa_ntoh(*(ip_addr *)nh);
+
+ /* Also ignore one reserved byte */
+ len -= *x + 2;
+ x += *x + 2;
if (bgp_get_nexthop(p, a0))
{