set_cloexec(bmp_sock);
shutdown(bmp_sock, SHUT_RD);
- sockunion2hostprefix(&su, &p);
+ if (!sockunion2hostprefix(&su, &p)) {
+ close(bmp_sock);
+ return NULL;
+ }
acl = NULL;
switch (p.family) {
struct listnode *node;
int common;
- sockunion2hostprefix(dst, &d);
+ if (!sockunion2hostprefix(dst, &d))
+ return 1;
+
sel = NULL;
common = -1;
return pinfo->attr->distance;
/* Check source address. */
- sockunion2hostprefix(&peer->su, &q);
+ if (!sockunion2hostprefix(&peer->su, &q))
+ return 0;
+
dest = bgp_node_match(bgp_distance_table[afi][safi], &q);
if (dest) {
bdistance = bgp_dest_get_bgp_distance_info(dest);
if (dn_flag[0]) {
struct prefix prefix, *range = NULL;
- sockunion2hostprefix(&(p->su), &prefix);
- range = peer_group_lookup_dynamic_neighbor_range(
- p->group, &prefix);
+ if (sockunion2hostprefix(&(p->su), &prefix))
+ range = peer_group_lookup_dynamic_neighbor_range(
+ p->group, &prefix);
if (range) {
prefix2str(range, buf1, sizeof(buf1));
if (dn_flag[0]) {
struct prefix prefix, *range = NULL;
- sockunion2hostprefix(&(p->su), &prefix);
- range = peer_group_lookup_dynamic_neighbor_range(
- p->group, &prefix);
+ if (sockunion2hostprefix(&(p->su), &prefix))
+ range = peer_group_lookup_dynamic_neighbor_range(
+ p->group, &prefix);
if (range) {
vty_out(vty,
if (!peer_dynamic_neighbor(peer))
continue;
- sockunion2hostprefix(&peer->su, &prefix2);
- if (prefix_match(prefix, &prefix2)) {
+ if (sockunion2hostprefix(&peer->su, &prefix2)
+ && prefix_match(prefix, &prefix2)) {
if (bgp_debug_neighbor_events(peer))
zlog_debug(
"Deleting dynamic neighbor %s group %s upon delete of listen range %pFX",
int dncount;
char buf[PREFIX2STR_BUFFER];
- sockunion2hostprefix(su, &prefix);
+ if (!sockunion2hostprefix(su, &prefix))
+ return NULL;
/* See if incoming connection matches a configured listen range. */
group = peer_group_lookup_dynamic_neighbor(bgp, &prefix, &listen_range);
set_nonblocking(vty_sock);
set_cloexec(vty_sock);
- sockunion2hostprefix(&su, &p);
+ if (!sockunion2hostprefix(&su, &p)) {
+ zlog_info("Vty unable to convert prefix from sockunion %s",
+ sockunion2str(&su, buf, SU_ADDRSTRLEN));
+ return -1;
+ }
/* VTY's accesslist apply. */
if (p.family == AF_INET && vty_accesslist_name) {
char buf[3][SU_ADDRSTRLEN];
struct nhrp_interface *nifp;
- sockunion2hostprefix(&c->remote_addr, &pfx);
+ if (!sockunion2hostprefix(&c->remote_addr, &pfx))
+ return;
if (p && nhrp_peer_check(p, 1)) {
if (sockunion_family(&c->cur.remote_nbma_natoa) != AF_UNSPEC) {
c->nhrp_route_installed = 0;
}
if (c->route_installed) {
- sockunion2hostprefix(&c->remote_addr, &pfx);
+ assert(sockunion2hostprefix(&c->remote_addr, &pfx));
notifier_call(&c->notifier_list, NOTIFY_CACHE_DOWN);
nhrp_route_announce(0, c->cur.type, &pfx, NULL, NULL,
0);
struct prefix p;
struct nhrp_shortcut *s;
- sockunion2hostprefix(addr, &p);
+ if (!sockunion2hostprefix(addr, &p))
+ return;
+
s = nhrp_shortcut_get(&p);
if (s && s->type != NHRP_CACHE_INCOMPLETE) {
s->addr = *addr;
if (addr)
p = sockunion2hostprefix(addr, &prefix);
+ if (!p)
+ return CMD_WARNING;
+
zebra_print_rnh_table(vrf_id, afi, vty, rtype, p);
return CMD_SUCCESS;
}