route_map_object_t type, void *object)
{
struct rmap_ip_nexthop_set *rins = rule;
- struct in_addr peer_address;
struct bgp_info *bgp_info;
struct peer *peer;
&& peer->su_remote
&& sockunion_family (peer->su_remote) == AF_INET)
{
- inet_aton (sockunion_su2str (peer->su_remote), &peer_address);
- bgp_info->attr->nexthop = peer_address;
+ bgp_info->attr->nexthop.s_addr = sockunion2ip (peer->su_remote);
bgp_info->attr->flag |= ATTR_FLAG_BIT (BGP_ATTR_NEXT_HOP);
}
else if (CHECK_FLAG (peer->rmap_type, PEER_RMAP_TYPE_OUT)
&& peer->su_local
&& sockunion_family (peer->su_local) == AF_INET)
{
- inet_aton (sockunion_su2str (peer->su_local), &peer_address);
- bgp_info->attr->nexthop = peer_address;
+ bgp_info->attr->nexthop.s_addr = sockunion2ip (peer->su_local);
bgp_info->attr->flag |= ATTR_FLAG_BIT (BGP_ATTR_NEXT_HOP);
}
}
#define sockunion_family(X) (X)->sa.sa_family
+#define sockunion2ip(X) (X)->sin.sin_addr.s_addr
+
/* Prototypes. */
extern int str2sockunion (const char *, union sockunion *);
extern const char *sockunion2str (union sockunion *, char *, size_t);