]> git.puffer.fish Git - matthieu/frr.git/commitdiff
eigrp: Make the eigrp_interface have a prefix instead of a *prefix
authorDonald Sharp <sharpd@cumulusnetworks.com>
Mon, 11 Feb 2019 12:16:35 +0000 (07:16 -0500)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Mon, 11 Feb 2019 12:16:35 +0000 (07:16 -0500)
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>
eigrpd/eigrp_dump.c
eigrpd/eigrp_hello.c
eigrpd/eigrp_interface.c
eigrpd/eigrp_network.c
eigrpd/eigrp_packet.c
eigrpd/eigrp_structs.h

index 6033290914f4b1dae5e7559db30efc294b9eaaae..583db6622de8569992dcb7f325b66be2f24d7c56 100644 (file)
@@ -174,7 +174,7 @@ const char *eigrp_if_ip_string(struct eigrp_interface *ei)
        if (!ei)
                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",
                 (ifaddr >> 24) & 0xff, (ifaddr >> 16) & 0xff,
                 (ifaddr >> 8) & 0xff, ifaddr & 0xff);
index 413a35f2fa5285c4acbfc91ab768a9f0fa40e574..b4d850be086f2da137b54a644f5f0ed090ee7d47 100644 (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 *)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;
 
        if (my_ip == received_ip) {
index 4ad1005f2ff964e38cc8105accbccf7069ec0c99..c52a98ee2544099996970e76c3c40327e8378956 100644 (file)
@@ -68,7 +68,7 @@ struct eigrp_interface *eigrp_if_new(struct eigrp *eigrp, struct interface *ifp,
 
        /* Set zebra interface pointer. */
        ei->ifp = ifp;
-       ei->address = p;
+       prefix_copy(&ei->address, p);
 
        ifp->info = ei;
        listnode_add(eigrp->eiflist, ei);
@@ -185,7 +185,7 @@ int eigrp_if_up(struct eigrp_interface *ei)
 
        struct prefix dest_addr;
 
-       dest_addr = *ei->address;
+       dest_addr = ei->address;
        apply_mask(&dest_addr);
        pe = eigrp_topology_table_lookup_ipv4(eigrp->topology_table,
                                              &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.
                 */
                if (!ei->member_allrouters
-                   && (eigrp_if_add_allspfrouters(ei->eigrp, ei->address,
+                   && (eigrp_if_add_allspfrouters(ei->eigrp, &ei->address,
                                                   ei->ifp->ifindex)
                        >= 0))
                        /* Set the flag only if the system call to join
@@ -303,7 +303,7 @@ void eigrp_if_set_multicast(struct eigrp_interface *ei)
                 * group. */
                if (ei->member_allrouters) {
                        /* 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);
                        /* Unset the flag regardless of whether the system call
                           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);
        }
 
-       dest_addr = *ei->address;
+       dest_addr = ei->address;
        apply_mask(&dest_addr);
        pe = eigrp_topology_table_lookup_ipv4(eigrp->topology_table,
                                              &dest_addr);
@@ -375,7 +375,7 @@ struct eigrp_interface *eigrp_if_lookup_by_local_addr(struct eigrp *eigrp,
                if (ifp && ei->ifp != ifp)
                        continue;
 
-               if (IPV4_ADDR_SAME(&address, &ei->address->u.prefix4))
+               if (IPV4_ADDR_SAME(&address, &ei->address.u.prefix4))
                        return ei;
        }
 
index 944bf6f55cea10062bb61a77791400b35cffbbe4..76f8cfc93b9f3224112b598ae1553d8e7db2cb80 100644 (file)
@@ -333,7 +333,7 @@ int eigrp_network_unset(struct eigrp *eigrp, struct prefix *p)
                        if (rn->info == NULL)
                                continue;
 
-                       if (eigrp_network_match_iface(ei->address, &rn->p)) {
+                       if (eigrp_network_match_iface(&ei->address, &rn->p)) {
                                found = true;
                                route_unlock_node(rn);
                                break;
index ee0476b28dab00a8d8895facc00c157280c6909e..bedaf15c4744f7d9f28a1730913b832e06f9a1b9 100644 (file)
@@ -281,7 +281,7 @@ int eigrp_make_sha256_digest(struct eigrp_interface *ei, struct stream *s,
                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));
        buffer[0] = '\n';
@@ -362,7 +362,7 @@ int eigrp_write(struct thread *thread)
        }
 
        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(&sa_dst, 0, sizeof(sa_dst));
@@ -418,7 +418,7 @@ int eigrp_write(struct thread *thread)
        iph.ip_ttl = EIGRP_IP_TTL;
        iph.ip_p = IPPROTO_EIGRPIGP;
        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;
 
        memset(&msg, 0, sizeof(msg));
@@ -547,7 +547,7 @@ int eigrp_read(struct thread *thread)
 
        /* Self-originated packet should be discarded silently. */
        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))
                        zlog_debug(
                                "eigrp_read[%s]: Dropping self-originated packet",
@@ -581,7 +581,7 @@ int eigrp_read(struct thread *thread)
                                          sizeof(buf[0])),
                                inet_ntop(AF_INET, &iph->ip_dst, 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])));
 
                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)
                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;
 
        if (IPV4_ADDR_SAME(&me, &him))
index 644ab0829f8b32bc85f66bc590f720d841c2f383..a78e5a53cf751918dab908df63a289bf01a4231c 100644 (file)
@@ -180,7 +180,7 @@ struct eigrp_interface {
        /* EIGRP Network Type. */
        uint8_t type;
 
-       struct prefix *address;      /* Interface prefix */
+       struct prefix address;      /* Interface prefix */
 
        /* Neighbor information. */
        struct list *nbrs; /* EIGRP Neighbor List */