eigrp: Make the eigrp_interface have a prefix instead of a *prefix

The prefix data structure was being freed yet still needed in the
future and it's a fundamental part of the eigrp_interface data
structure let's keep it there instead of having it be deleted
and then not.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
This commit is contained in:
Donald Sharp 2019-02-11 07:16:35 -05:00
parent 5edc2cf3ea
commit b245781a6b
6 changed files with 17 additions and 17 deletions

View File

@ -174,7 +174,7 @@ const char *eigrp_if_ip_string(struct eigrp_interface *ei)
if (!ei) if (!ei)
return "inactive"; return "inactive";
ifaddr = ntohl(ei->address->u.prefix4.s_addr); ifaddr = ntohl(ei->address.u.prefix4.s_addr);
snprintf(buf, EIGRP_IF_STRING_MAXLEN, "%u.%u.%u.%u", snprintf(buf, EIGRP_IF_STRING_MAXLEN, "%u.%u.%u.%u",
(ifaddr >> 24) & 0xff, (ifaddr >> 16) & 0xff, (ifaddr >> 24) & 0xff, (ifaddr >> 16) & 0xff,
(ifaddr >> 8) & 0xff, ifaddr & 0xff); (ifaddr >> 8) & 0xff, ifaddr & 0xff);

View File

@ -248,7 +248,7 @@ static void eigrp_peer_termination_decode(struct eigrp_neighbor *nbr,
struct TLV_Peer_Termination_type *param = struct TLV_Peer_Termination_type *param =
(struct TLV_Peer_Termination_type *)tlv; (struct TLV_Peer_Termination_type *)tlv;
uint32_t my_ip = nbr->ei->address->u.prefix4.s_addr; uint32_t my_ip = nbr->ei->address.u.prefix4.s_addr;
uint32_t received_ip = param->neighbor_ip; uint32_t received_ip = param->neighbor_ip;
if (my_ip == received_ip) { if (my_ip == received_ip) {

View File

@ -68,7 +68,7 @@ struct eigrp_interface *eigrp_if_new(struct eigrp *eigrp, struct interface *ifp,
/* Set zebra interface pointer. */ /* Set zebra interface pointer. */
ei->ifp = ifp; ei->ifp = ifp;
ei->address = p; prefix_copy(&ei->address, p);
ifp->info = ei; ifp->info = ei;
listnode_add(eigrp->eiflist, ei); listnode_add(eigrp->eiflist, ei);
@ -185,7 +185,7 @@ int eigrp_if_up(struct eigrp_interface *ei)
struct prefix dest_addr; struct prefix dest_addr;
dest_addr = *ei->address; dest_addr = ei->address;
apply_mask(&dest_addr); apply_mask(&dest_addr);
pe = eigrp_topology_table_lookup_ipv4(eigrp->topology_table, pe = eigrp_topology_table_lookup_ipv4(eigrp->topology_table,
&dest_addr); &dest_addr);
@ -292,7 +292,7 @@ void eigrp_if_set_multicast(struct eigrp_interface *ei)
/* The interface should belong to the EIGRP-all-routers group. /* The interface should belong to the EIGRP-all-routers group.
*/ */
if (!ei->member_allrouters if (!ei->member_allrouters
&& (eigrp_if_add_allspfrouters(ei->eigrp, ei->address, && (eigrp_if_add_allspfrouters(ei->eigrp, &ei->address,
ei->ifp->ifindex) ei->ifp->ifindex)
>= 0)) >= 0))
/* Set the flag only if the system call to join /* Set the flag only if the system call to join
@ -303,7 +303,7 @@ void eigrp_if_set_multicast(struct eigrp_interface *ei)
* group. */ * group. */
if (ei->member_allrouters) { if (ei->member_allrouters) {
/* Only actually drop if this is the last reference */ /* Only actually drop if this is the last reference */
eigrp_if_drop_allspfrouters(ei->eigrp, ei->address, eigrp_if_drop_allspfrouters(ei->eigrp, &ei->address,
ei->ifp->ifindex); ei->ifp->ifindex);
/* Unset the flag regardless of whether the system call /* Unset the flag regardless of whether the system call
to leave to leave
@ -339,7 +339,7 @@ void eigrp_if_free(struct eigrp_interface *ei, int source)
eigrp_hello_send(ei, EIGRP_HELLO_GRACEFUL_SHUTDOWN, NULL); eigrp_hello_send(ei, EIGRP_HELLO_GRACEFUL_SHUTDOWN, NULL);
} }
dest_addr = *ei->address; dest_addr = ei->address;
apply_mask(&dest_addr); apply_mask(&dest_addr);
pe = eigrp_topology_table_lookup_ipv4(eigrp->topology_table, pe = eigrp_topology_table_lookup_ipv4(eigrp->topology_table,
&dest_addr); &dest_addr);
@ -375,7 +375,7 @@ struct eigrp_interface *eigrp_if_lookup_by_local_addr(struct eigrp *eigrp,
if (ifp && ei->ifp != ifp) if (ifp && ei->ifp != ifp)
continue; continue;
if (IPV4_ADDR_SAME(&address, &ei->address->u.prefix4)) if (IPV4_ADDR_SAME(&address, &ei->address.u.prefix4))
return ei; return ei;
} }

View File

@ -333,7 +333,7 @@ int eigrp_network_unset(struct eigrp *eigrp, struct prefix *p)
if (rn->info == NULL) if (rn->info == NULL)
continue; continue;
if (eigrp_network_match_iface(ei->address, &rn->p)) { if (eigrp_network_match_iface(&ei->address, &rn->p)) {
found = true; found = true;
route_unlock_node(rn); route_unlock_node(rn);
break; break;

View File

@ -281,7 +281,7 @@ int eigrp_make_sha256_digest(struct eigrp_interface *ei, struct stream *s,
return 0; return 0;
} }
inet_ntop(AF_INET, &ei->address->u.prefix4, source_ip, PREFIX_STRLEN); inet_ntop(AF_INET, &ei->address.u.prefix4, source_ip, PREFIX_STRLEN);
memset(&ctx, 0, sizeof(ctx)); memset(&ctx, 0, sizeof(ctx));
buffer[0] = '\n'; buffer[0] = '\n';
@ -362,7 +362,7 @@ int eigrp_write(struct thread *thread)
} }
if (ep->dst.s_addr == htonl(EIGRP_MULTICAST_ADDRESS)) if (ep->dst.s_addr == htonl(EIGRP_MULTICAST_ADDRESS))
eigrp_if_ipmulticast(eigrp, ei->address, ei->ifp->ifindex); eigrp_if_ipmulticast(eigrp, &ei->address, ei->ifp->ifindex);
memset(&iph, 0, sizeof(struct ip)); memset(&iph, 0, sizeof(struct ip));
memset(&sa_dst, 0, sizeof(sa_dst)); memset(&sa_dst, 0, sizeof(sa_dst));
@ -418,7 +418,7 @@ int eigrp_write(struct thread *thread)
iph.ip_ttl = EIGRP_IP_TTL; iph.ip_ttl = EIGRP_IP_TTL;
iph.ip_p = IPPROTO_EIGRPIGP; iph.ip_p = IPPROTO_EIGRPIGP;
iph.ip_sum = 0; iph.ip_sum = 0;
iph.ip_src.s_addr = ei->address->u.prefix4.s_addr; iph.ip_src.s_addr = ei->address.u.prefix4.s_addr;
iph.ip_dst.s_addr = ep->dst.s_addr; iph.ip_dst.s_addr = ep->dst.s_addr;
memset(&msg, 0, sizeof(msg)); memset(&msg, 0, sizeof(msg));
@ -547,7 +547,7 @@ int eigrp_read(struct thread *thread)
/* Self-originated packet should be discarded silently. */ /* Self-originated packet should be discarded silently. */
if (eigrp_if_lookup_by_local_addr(eigrp, NULL, iph->ip_src) if (eigrp_if_lookup_by_local_addr(eigrp, NULL, iph->ip_src)
|| (IPV4_ADDR_SAME(&iph->ip_src, &ei->address->u.prefix4))) { || (IPV4_ADDR_SAME(&iph->ip_src, &ei->address.u.prefix4))) {
if (IS_DEBUG_EIGRP_TRANSMIT(0, RECV)) if (IS_DEBUG_EIGRP_TRANSMIT(0, RECV))
zlog_debug( zlog_debug(
"eigrp_read[%s]: Dropping self-originated packet", "eigrp_read[%s]: Dropping self-originated packet",
@ -581,7 +581,7 @@ int eigrp_read(struct thread *thread)
sizeof(buf[0])), sizeof(buf[0])),
inet_ntop(AF_INET, &iph->ip_dst, buf[1], inet_ntop(AF_INET, &iph->ip_dst, buf[1],
sizeof(buf[1])), sizeof(buf[1])),
inet_ntop(AF_INET, &ei->address->u.prefix4, inet_ntop(AF_INET, &ei->address.u.prefix4,
buf[2], sizeof(buf[2]))); buf[2], sizeof(buf[2])));
if (iph->ip_dst.s_addr == htonl(EIGRP_MULTICAST_ADDRESS)) { if (iph->ip_dst.s_addr == htonl(EIGRP_MULTICAST_ADDRESS)) {
@ -981,9 +981,9 @@ static int eigrp_check_network_mask(struct eigrp_interface *ei,
if (ei->type == EIGRP_IFTYPE_POINTOPOINT) if (ei->type == EIGRP_IFTYPE_POINTOPOINT)
return 1; return 1;
masklen2ip(ei->address->prefixlen, &mask); masklen2ip(ei->address.prefixlen, &mask);
me.s_addr = ei->address->u.prefix4.s_addr & mask.s_addr; me.s_addr = ei->address.u.prefix4.s_addr & mask.s_addr;
him.s_addr = ip_src.s_addr & mask.s_addr; him.s_addr = ip_src.s_addr & mask.s_addr;
if (IPV4_ADDR_SAME(&me, &him)) if (IPV4_ADDR_SAME(&me, &him))

View File

@ -180,7 +180,7 @@ struct eigrp_interface {
/* EIGRP Network Type. */ /* EIGRP Network Type. */
uint8_t type; uint8_t type;
struct prefix *address; /* Interface prefix */ struct prefix address; /* Interface prefix */
/* Neighbor information. */ /* Neighbor information. */
struct list *nbrs; /* EIGRP Neighbor List */ struct list *nbrs; /* EIGRP Neighbor List */