]> git.proxmox.com Git - mirror_frr.git/commitdiff
pimd: Reduce RP checks a bit
authorDonald Sharp <sharpd@cumulusnetworks.com>
Thu, 28 Mar 2019 19:26:06 +0000 (15:26 -0400)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Thu, 28 Mar 2019 19:51:49 +0000 (15:51 -0400)
The pim_rp_check_is_my_ip_address function was checking to see
if we were the actual RP as well as the pim_register code
was doing the same thing.  Remove the reduncancy a bit and
just make this function check for that we are the actual receiver
of this data.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
pimd/pim_register.c
pimd/pim_rp.c
pimd/pim_rp.h

index a4965b8ffe43733081adacf7908d731ec36cf2a3..a5b1c577e749b3408dd6657c531d5a862ed6339f 100644 (file)
@@ -279,14 +279,13 @@ int pim_register_recv(struct interface *ifp, struct in_addr dest_addr,
 #define PIM_MSG_REGISTER_BIT_RESERVED_LEN 4
        ip_hdr = (struct ip *)(tlv_buf + PIM_MSG_REGISTER_BIT_RESERVED_LEN);
 
-       if (!pim_rp_check_is_my_ip_address(pim_ifp->pim, ip_hdr->ip_dst,
-                                          dest_addr)) {
+       if (!pim_rp_check_is_my_ip_address(pim_ifp->pim, dest_addr)) {
                if (PIM_DEBUG_PIM_REG) {
                        char dest[INET_ADDRSTRLEN];
 
                        pim_inet4_dump("<dst?>", dest_addr, dest, sizeof(dest));
                        zlog_debug(
-                               "%s: Received Register message for %s that I do not own",
+                               "%s: Received Register message for destination address: %s that I do not own",
                                __func__, dest);
                }
                return 0;
index 7094b93a45d5fe62f3bfe54339e3f6af01569968..0a98a2f7e90acbee061da0339d762e53928a0ace 100644 (file)
@@ -1091,34 +1091,13 @@ int pim_rp_config_write(struct pim_instance *pim, struct vty *vty,
        return count;
 }
 
-int pim_rp_check_is_my_ip_address(struct pim_instance *pim,
-                                 struct in_addr group,
-                                 struct in_addr dest_addr)
+bool pim_rp_check_is_my_ip_address(struct pim_instance *pim,
+                                  struct in_addr dest_addr)
 {
-       struct rp_info *rp_info;
-       struct prefix g;
-
-       memset(&g, 0, sizeof(g));
-       g.family = AF_INET;
-       g.prefixlen = 32;
-       g.u.prefix4 = group;
-
-       rp_info = pim_rp_find_match_group(pim, &g);
-       /*
-        * See if we can short-cut some?
-        * This might not make sense if we ever leave a static RP
-        * type of configuration.
-        * Note - Premature optimization might bite our patooeys' here.
-        */
-       if (I_am_RP(pim, group)) {
-               if (dest_addr.s_addr == rp_info->rp.rpf_addr.u.prefix4.s_addr)
-                       return 1;
-       }
-
        if (if_lookup_exact_address(&dest_addr, AF_INET, pim->vrf_id))
-               return 1;
+               return true;
 
-       return 0;
+       return false;
 }
 
 void pim_rp_show_information(struct pim_instance *pim, struct vty *vty, bool uj)
index 7769864c08b35d8da940fcca257db1cf15e8f735..e0f8e16be0d37e1e549b4eeb1d19c8ea8936f714 100644 (file)
@@ -55,9 +55,8 @@ int pim_rp_i_am_rp(struct pim_instance *pim, struct in_addr group);
 void pim_rp_check_on_if_add(struct pim_interface *pim_ifp);
 void pim_i_am_rp_re_evaluate(struct pim_instance *pim);
 
-int pim_rp_check_is_my_ip_address(struct pim_instance *pim,
-                                 struct in_addr group,
-                                 struct in_addr dest_addr);
+bool pim_rp_check_is_my_ip_address(struct pim_instance *pim,
+                                  struct in_addr dest_addr);
 
 int pim_rp_set_upstream_addr(struct pim_instance *pim, struct in_addr *up,
                             struct in_addr source, struct in_addr group);