]> git.ipfire.org Git - thirdparty/dhcpcd.git/commitdiff
minor fix for prior
authorRoy Marples <roy@marples.name>
Fri, 4 Oct 2024 16:11:26 +0000 (17:11 +0100)
committerRoy Marples <roy@marples.name>
Fri, 4 Oct 2024 16:11:26 +0000 (17:11 +0100)
src/arp.c
src/arp.h
src/ipv4.c
src/ipv4ll.c

index b1c7952de6fbf693a2ba6e672a58974faab9821b..c9ca6f864aa3bcb093862d35c14d41e645baf424 100644 (file)
--- a/src/arp.c
+++ b/src/arp.c
@@ -530,32 +530,6 @@ arp_ifannounceaddr(struct interface *ifp, const struct in_addr *ia)
        arp_announce(astate);
        return astate;
 }
-
-struct arp_state *
-arp_announceaddr(struct dhcpcd_ctx *ctx, const struct in_addr *ia)
-{
-       struct interface *ifp, *iff = NULL;
-       struct ipv4_addr *iap;
-
-       TAILQ_FOREACH(ifp, ctx->ifaces, next) {
-               if (!ifp->active || !if_is_link_up(ifp))
-                       continue;
-               iap = ipv4_iffindaddr(ifp, ia, NULL);
-               if (iap == NULL)
-                       continue;
-#ifdef IN_IFF_NOTUSEABLE
-               if (iap->addr_flags & IN_IFF_NOTUSEABLE)
-                       continue;
-#endif
-               if (iff != NULL && iff->metric < ifp->metric)
-                       continue;
-               iff = ifp;
-       }
-       if (iff == NULL)
-               return NULL;
-
-       return arp_ifannounceaddr(iff, ia);
-}
 #endif
 
 struct arp_state *
index 1a5f41f087fb98f945439a6b551d53a50b8343d8..2edbc53067c76d17ecf5762a7c9910df992daa3d 100644 (file)
--- a/src/arp.h
+++ b/src/arp.h
@@ -96,7 +96,6 @@ struct iarp_state {
 void arp_packet(struct interface *, uint8_t *, size_t, unsigned int);
 struct arp_state *arp_new(struct interface *, const struct in_addr *);
 void arp_probe(struct arp_state *);
-struct arp_state *arp_announceaddr(struct dhcpcd_ctx *, const struct in_addr *);
 struct arp_state *arp_ifannounceaddr(struct interface *, const struct in_addr *);
 struct arp_state * arp_find(struct interface *, const struct in_addr *);
 void arp_free(struct arp_state *);
index 69e0dab8a3f198a3f2354e4a06bc9a6121db9c1a..be7d7cffd21b9a0d9774c05b3c1e5e5af60115c4 100644 (file)
@@ -715,8 +715,13 @@ ipv4_addaddr(struct interface *ifp, const struct in_addr *addr,
        }
 #endif
 
-       if (ia->flags & IPV4_AF_NEW)
+       if (ia->flags & IPV4_AF_NEW) {
                TAILQ_INSERT_TAIL(&state->addrs, ia, next);
+#ifdef ARP
+               arp_ifannounceaddr(ifp, &ia->addr);
+#endif
+       }
+
        return ia;
 }
 
index ebe8aae06083a1cef1351847db359b8fd0dd5c6f..01556cab593148218d5798bb3b0ce140042e0db6 100644 (file)
@@ -268,7 +268,7 @@ ipv4ll_not_found(struct interface *ifp)
        rt_build(ifp->ctx, AF_INET);
 
 #ifndef KERNEL_RFC5227
-       astate = arp_announceaddr(ifp->ctx, &ia->addr);
+       astate = arp_ifannounceaddr(ifp, &ia->addr);
        if (astate != NULL)
                astate->announced_cb = ipv4ll_announced_arp;
 #endif