{
LOG(4, 0, 0, "BGP peer %s doesn't support BGP Capabilities\n", peer->name);
peer->mp_handling = DoesntHandleIPv6Routes;
{
LOG(4, 0, 0, "BGP peer %s doesn't support BGP Capabilities\n", peer->name);
peer->mp_handling = DoesntHandleIPv6Routes;
/* copy usual attributes */
memcpy(data, peer->path_attrs, peer->path_attr_len_without_nexthop);
data += peer->path_attr_len_without_nexthop;
/* copy usual attributes */
memcpy(data, peer->path_attrs, peer->path_attr_len_without_nexthop);
data += peer->path_attr_len_without_nexthop;
/* copy MP unreachable NLRI heading */
memcpy(data, peer->mp_unreach_nlri_partial,
/* copy MP unreachable NLRI heading */
memcpy(data, peer->mp_unreach_nlri_partial,
/* remember where to update this attr len */
unreach_len_pos = data + 2;
data += BGP_PATH_ATTR_MP_UNREACH_NLRI_PARTIAL_SIZE;
/* remember where to update this attr len */
unreach_len_pos = data + 2;
data += BGP_PATH_ATTR_MP_UNREACH_NLRI_PARTIAL_SIZE;
LOG(5, 0, 0, "Withdrawing route %s/%d from BGP peer %s\n",
inet_ntop(AF_INET6, &tmp->dest.prefix, ipv6addr, INET6_ADDRSTRLEN),
LOG(5, 0, 0, "Withdrawing route %s/%d from BGP peer %s\n",
inet_ntop(AF_INET6, &tmp->dest.prefix, ipv6addr, INET6_ADDRSTRLEN),
{
/* we can remove this attribute, then */
data -= BGP_PATH_ATTR_MP_UNREACH_NLRI_PARTIAL_SIZE;
{
/* we can remove this attribute, then */
data -= BGP_PATH_ATTR_MP_UNREACH_NLRI_PARTIAL_SIZE;
reach_len = BGP_IP_PREFIX_SIZE(add->dest);
data[2] = sizeof(struct bgp_attr_mp_reach_nlri_partial) + reach_len;
data += BGP_PATH_ATTR_MP_REACH_NLRI_PARTIAL_SIZE;
reach_len = BGP_IP_PREFIX_SIZE(add->dest);
data[2] = sizeof(struct bgp_attr_mp_reach_nlri_partial) + reach_len;
data += BGP_PATH_ATTR_MP_REACH_NLRI_PARTIAL_SIZE;
LOG(5, 0, 0, "Advertising route %s/%d to BGP peer %s\n",
inet_ntop(AF_INET6, &add->dest.prefix, ipv6addr, INET6_ADDRSTRLEN),
add->dest.len, peer->name);
}
LOG(5, 0, 0, "Advertising route %s/%d to BGP peer %s\n",
inet_ntop(AF_INET6, &add->dest.prefix, ipv6addr, INET6_ADDRSTRLEN),
add->dest.len, peer->name);
}
- attr_len = htons(len - 4);
- memcpy(&peer->outbuf->packet.data + 2, &attr_len, sizeof(attr_len));
+ attr_len = htons(attr_len);
+ memcpy((char *)&peer->outbuf->packet.data + 2, &attr_len, sizeof(attr_len));