diff options
Diffstat (limited to 'ospfd')
-rw-r--r-- | ospfd/ospf_apiserver.c | 2 | ||||
-rw-r--r-- | ospfd/ospf_dump.c | 4 | ||||
-rw-r--r-- | ospfd/ospf_ism.c | 6 | ||||
-rw-r--r-- | ospfd/ospf_neighbor.c | 13 | ||||
-rw-r--r-- | ospfd/ospf_neighbor.h | 8 | ||||
-rw-r--r-- | ospfd/ospf_nsm.c | 6 | ||||
-rw-r--r-- | ospfd/ospf_packet.c | 52 | ||||
-rw-r--r-- | ospfd/ospf_vty.c | 6 | ||||
-rw-r--r-- | ospfd/ospfd.c | 3 |
9 files changed, 44 insertions, 56 deletions
diff --git a/ospfd/ospf_apiserver.c b/ospfd/ospf_apiserver.c index 15fd2e5f..bd5c026c 100644 --- a/ospfd/ospf_apiserver.c +++ b/ospfd/ospf_apiserver.c @@ -2470,7 +2470,7 @@ ospf_apiserver_clients_notify_nsm_change (struct ospf_neighbor *nbr) ifaddr = nbr->oi->address->u.prefix4; } - nbraddr = nbr->address.u.prefix4; + nbraddr = nbr->src; msg = new_msg_nsm_change (0, ifaddr, nbraddr, nbr->router_id, nbr->state); if (!msg) diff --git a/ospfd/ospf_dump.c b/ospfd/ospf_dump.c index e65b2e33..4786a87c 100644 --- a/ospfd/ospf_dump.c +++ b/ospfd/ospf_dump.c @@ -215,9 +215,9 @@ ospf_nbr_state_message (struct ospf_neighbor *nbr, char *buf, size_t size) int state; struct ospf_interface *oi = nbr->oi; - if (IPV4_ADDR_SAME (&DR (oi), &nbr->address.u.prefix4)) + if (IPV4_ADDR_SAME (&DR (oi), &nbr->src)) state = ISM_DR; - else if (IPV4_ADDR_SAME (&BDR (oi), &nbr->address.u.prefix4)) + else if (IPV4_ADDR_SAME (&BDR (oi), &nbr->src)) state = ISM_Backup; else state = ISM_DROther; diff --git a/ospfd/ospf_ism.c b/ospfd/ospf_ism.c index e7bdbf2c..2186e894 100644 --- a/ospfd/ospf_ism.c +++ b/ospfd/ospf_ism.c @@ -88,7 +88,7 @@ ospf_elect_dr (struct ospf_interface *oi, struct list *el_list) listnode_add (dr_list, nbr); /* Preserve neighbor BDR. */ - if (IPV4_ADDR_SAME (&BDR (oi), &nbr->address.u.prefix4)) + if (IPV4_ADDR_SAME (&BDR (oi), &nbr->src)) bdr = nbr; } @@ -100,7 +100,7 @@ ospf_elect_dr (struct ospf_interface *oi, struct list *el_list) /* Set DR to interface. */ if (dr) - DR (oi) = dr->address.u.prefix4; + DR (oi) = dr->src; else DR (oi).s_addr = 0; @@ -141,7 +141,7 @@ ospf_elect_bdr (struct ospf_interface *oi, struct list *el_list) /* Set BDR to interface. */ if (bdr) - BDR (oi) = bdr->address.u.prefix4; + BDR (oi) = bdr->src; else BDR (oi).s_addr = 0; diff --git a/ospfd/ospf_neighbor.c b/ospfd/ospf_neighbor.c index 03efba57..b0517ff4 100644 --- a/ospfd/ospf_neighbor.c +++ b/ospfd/ospf_neighbor.c @@ -188,7 +188,6 @@ ospf_nbr_add_self (struct ospf_interface *oi) struct ospf_neighbor *nbr; /* Initial state */ - oi->nbr_self->address = *oi->address; oi->nbr_self->priority = OSPF_IF_PARAM (oi, priority); oi->nbr_self->router_id = oi->ospf->router_id; oi->nbr_self->src = oi->address->u.prefix4; @@ -304,14 +303,13 @@ ospf_nbr_lookup (struct ospf_interface *oi, struct ip *iph, static struct ospf_neighbor * ospf_nbr_add (struct ospf_interface *oi, struct ospf_header *ospfh, - struct prefix *p) + struct ip *iph) { struct ospf_neighbor *nbr; nbr = ospf_nbr_new (oi); nbr->state = NSM_Down; - nbr->src = p->u.prefix4; - memcpy (&nbr->address, p, sizeof (struct prefix)); + nbr->src = iph->ip_src; nbr->nbr_nbma = NULL; if (oi->type == OSPF_IFTYPE_NBMA) @@ -348,7 +346,7 @@ ospf_nbr_add (struct ospf_interface *oi, struct ospf_header *ospfh, struct ospf_neighbor * ospf_nbr_get (struct ospf_interface *oi, struct ospf_header *ospfh, - struct ip *iph, struct prefix *p) + struct ip *iph) { struct ospf_neighbor *nbr; @@ -358,14 +356,13 @@ ospf_nbr_get (struct ospf_interface *oi, struct ospf_header *ospfh, if (oi->type == OSPF_IFTYPE_NBMA && nbr->state == NSM_Attempt) { nbr->src = iph->ip_src; - memcpy (&nbr->address, p, sizeof (struct prefix)); } } else { - nbr = ospf_nbr_add (oi, ospfh, p); + nbr = ospf_nbr_add (oi, ospfh, iph); } - + nbr->router_id = ospfh->router_id; return nbr; diff --git a/ospfd/ospf_neighbor.h b/ospfd/ospf_neighbor.h index af8fb2c2..70cc7855 100644 --- a/ospfd/ospf_neighbor.h +++ b/ospfd/ospf_neighbor.h @@ -37,8 +37,6 @@ struct ospf_neighbor u_int32_t dd_seqnum; /* DD Sequence Number. */ /* Neighbor Information from Hello. */ - struct prefix address; /* Neighbor Interface Address. */ - struct in_addr src; /* Src address. */ struct in_addr router_id; /* Router ID. */ u_char options; /* Options. */ @@ -91,8 +89,8 @@ struct ospf_neighbor }; /* Macros. */ -#define NBR_IS_DR(n) IPV4_ADDR_SAME (&n->address.u.prefix4, &n->d_router) -#define NBR_IS_BDR(n) IPV4_ADDR_SAME (&n->address.u.prefix4, &n->bd_router) +#define NBR_IS_DR(n) IPV4_ADDR_SAME (&n->src, &n->d_router) +#define NBR_IS_BDR(n) IPV4_ADDR_SAME (&n->src, &n->bd_router) /* Prototypes. */ extern struct ospf_neighbor *ospf_nbr_new (struct ospf_interface *); @@ -106,7 +104,7 @@ extern int ospf_nbr_count_opaque_capable (struct ospf_interface *); #endif /* HAVE_OPAQUE_LSA */ extern struct ospf_neighbor *ospf_nbr_get (struct ospf_interface *, struct ospf_header *, - struct ip *, struct prefix *); + struct ip *); extern struct ospf_neighbor *ospf_nbr_lookup (struct ospf_interface *, struct ip *, struct ospf_header *); diff --git a/ospfd/ospf_nsm.c b/ospfd/ospf_nsm.c index 15fff349..b15efbd6 100644 --- a/ospfd/ospf_nsm.c +++ b/ospfd/ospf_nsm.c @@ -153,8 +153,8 @@ nsm_should_adj (struct ospf_neighbor *nbr) || IPV4_ADDR_SAME (&oi->address->u.prefix4, &DR (oi)) || IPV4_ADDR_SAME (&oi->address->u.prefix4, &BDR (oi)) /* Neighboring Router is the DRouter or the BDRouter. */ - || IPV4_ADDR_SAME (&nbr->address.u.prefix4, &DR (oi)) - || IPV4_ADDR_SAME (&nbr->address.u.prefix4, &BDR (oi))) + || IPV4_ADDR_SAME (&nbr->src, &DR (oi)) + || IPV4_ADDR_SAME (&nbr->src, &BDR (oi))) return 1; return 0; @@ -393,7 +393,7 @@ nsm_kill_nbr (struct ospf_neighbor *nbr) if (IS_DEBUG_OSPF (nsm, NSM_EVENTS)) zlog_debug ("NSM[%s:%s]: Down (PollIntervalTimer scheduled)", - IF_NAME (nbr->oi), inet_ntoa (nbr->address.u.prefix4)); + IF_NAME (nbr->oi), inet_ntoa (nbr->src)); } return 0; diff --git a/ospfd/ospf_packet.c b/ospfd/ospf_packet.c index 22cce7a3..bc00def4 100644 --- a/ospfd/ospf_packet.c +++ b/ospfd/ospf_packet.c @@ -745,7 +745,6 @@ ospf_hello (struct ip *iph, struct ospf_header *ospfh, struct ospf_hello *hello; struct ospf_neighbor *nbr; int old_state; - struct prefix p; /* increment statistics. */ oi->hello_in++; @@ -765,20 +764,15 @@ ospf_hello (struct ip *iph, struct ospf_header *ospfh, return; } - /* get neighbor prefix. */ - p.family = AF_INET; - p.prefixlen = ip_masklen (hello->network_mask); - p.u.prefix4 = iph->ip_src; - /* Compare network mask. */ /* Checking is ignored for Point-to-Point and Virtual link. */ if (oi->type != OSPF_IFTYPE_POINTOPOINT && oi->type != OSPF_IFTYPE_VIRTUALLINK) - if (oi->address->prefixlen != p.prefixlen) + if (oi->address->prefixlen != ip_masklen (hello->network_mask)) { zlog_warn ("Packet %s [Hello:RECV]: NetworkMask mismatch on %s (configured prefix length is %d, but hello packet indicates %d).", inet_ntoa(ospfh->router_id), IF_NAME(oi), - (int)oi->address->prefixlen, (int)p.prefixlen); + (int)oi->address->prefixlen, (int)ip_masklen (hello->network_mask)); return; } @@ -873,7 +867,7 @@ ospf_hello (struct ip *iph, struct ospf_header *ospfh, } /* get neighbour struct */ - nbr = ospf_nbr_get (oi, ospfh, iph, &p); + nbr = ospf_nbr_get (oi, ospfh, iph); /* neighbour must be valid, ospf_nbr_get creates if none existed */ assert (nbr); @@ -924,17 +918,17 @@ ospf_hello (struct ip *iph, struct ospf_header *ospfh, /* If neighbor itself declares DR and no BDR exists, cause event BackupSeen */ if (oi->state == ISM_Waiting && - IPV4_ADDR_SAME (&nbr->address.u.prefix4, &hello->d_router) && + IPV4_ADDR_SAME (&nbr->src, &hello->d_router) && hello->bd_router.s_addr == 0) { OSPF_ISM_EVENT_SCHEDULE (oi, ISM_BackupSeen); goto done; } /* had not previously. */ - if ((IPV4_ADDR_SAME (&nbr->address.u.prefix4, &hello->d_router) && - IPV4_ADDR_CMP (&nbr->address.u.prefix4, &nbr->d_router)) || - (IPV4_ADDR_CMP (&nbr->address.u.prefix4, &hello->d_router) && - IPV4_ADDR_SAME (&nbr->address.u.prefix4, &nbr->d_router))) + if ((IPV4_ADDR_SAME (&nbr->src, &hello->d_router) && + IPV4_ADDR_CMP (&nbr->src, &nbr->d_router)) || + (IPV4_ADDR_CMP (&nbr->src, &hello->d_router) && + IPV4_ADDR_SAME (&nbr->src, &nbr->d_router))) { OSPF_ISM_EVENT_SCHEDULE (oi, ISM_NeighborChange); goto done; @@ -942,16 +936,16 @@ ospf_hello (struct ip *iph, struct ospf_header *ospfh, /* neighbor itself declares BDR. */ if (oi->state == ISM_Waiting && - IPV4_ADDR_SAME (&nbr->address.u.prefix4, &hello->bd_router)) + IPV4_ADDR_SAME (&nbr->src, &hello->bd_router)) { OSPF_ISM_EVENT_SCHEDULE (oi, ISM_BackupSeen); goto done; } /* had not previously. */ - if ((IPV4_ADDR_SAME (&nbr->address.u.prefix4, &hello->bd_router) && - IPV4_ADDR_CMP (&nbr->address.u.prefix4, &nbr->bd_router)) || - (IPV4_ADDR_CMP (&nbr->address.u.prefix4, &hello->bd_router) && - IPV4_ADDR_SAME (&nbr->address.u.prefix4, &nbr->bd_router))) + if ((IPV4_ADDR_SAME (&nbr->src, &hello->bd_router) && + IPV4_ADDR_CMP (&nbr->src, &nbr->bd_router)) || + (IPV4_ADDR_CMP (&nbr->src, &hello->bd_router) && + IPV4_ADDR_SAME (&nbr->src, &nbr->bd_router))) { OSPF_ISM_EVENT_SCHEDULE (oi, ISM_NeighborChange); goto done; @@ -1265,7 +1259,7 @@ ospf_db_desc (struct ip *iph, struct ospf_header *ospfh, CHECK_FLAG (nbr->options, OSPF_OPTION_O) ? "" : "NOT "); if (! CHECK_FLAG (nbr->options, OSPF_OPTION_O) - && IPV4_ADDR_SAME (&DR (oi), &nbr->address.u.prefix4)) + && IPV4_ADDR_SAME (&DR (oi), &nbr->src)) { zlog_warn ("DR-neighbor[%s] is NOT opaque-capable; " "Opaque-LSAs cannot be reliably advertised " @@ -3052,7 +3046,7 @@ ospf_hello_reply_timer (struct thread *thread) zlog (NULL, LOG_DEBUG, "NSM[%s:%s]: Timer (hello-reply timer expire)", IF_NAME (nbr->oi), inet_ntoa (nbr->router_id)); - ospf_hello_send_sub (nbr->oi, &nbr->address.u.prefix4); + ospf_hello_send_sub (nbr->oi, &nbr->src); return 0; } @@ -3097,8 +3091,8 @@ ospf_hello_send (struct ospf_interface *oi) Designated Router and the Backup Designated Router (if they exist). */ if (PRIORITY(oi) == 0 && - IPV4_ADDR_CMP(&DR(oi), &nbr->address.u.prefix4) && - IPV4_ADDR_CMP(&BDR(oi), &nbr->address.u.prefix4)) + IPV4_ADDR_CMP(&DR(oi), &nbr->src) && + IPV4_ADDR_CMP(&BDR(oi), &nbr->src)) continue; /* If the router is eligible to become Designated Router, it @@ -3114,7 +3108,7 @@ ospf_hello_send (struct ospf_interface *oi) struct ospf_packet *op_dup; op_dup = ospf_packet_dup(op); - op_dup->dst = nbr->address.u.prefix4; + op_dup->dst = nbr->src; /* Add packet to the interface output queue. */ ospf_packet_add (oi, op_dup); @@ -3167,7 +3161,7 @@ ospf_db_desc_send (struct ospf_neighbor *nbr) if (oi->type == OSPF_IFTYPE_POINTOPOINT) op->dst.s_addr = htonl (OSPF_ALLSPFROUTERS); else - op->dst = nbr->address.u.prefix4; + op->dst = nbr->src; /* Add packet to the interface output queue. */ ospf_packet_add (oi, op); @@ -3229,7 +3223,7 @@ ospf_ls_req_send (struct ospf_neighbor *nbr) if (oi->type == OSPF_IFTYPE_POINTOPOINT) op->dst.s_addr = htonl (OSPF_ALLSPFROUTERS); else - op->dst = nbr->address.u.prefix4; + op->dst = nbr->src; /* Add packet to the interface output queue. */ ospf_packet_add (oi, op); @@ -3436,7 +3430,7 @@ ospf_ls_upd_send (struct ospf_neighbor *nbr, struct list *update, int flag) else if (oi->type == OSPF_IFTYPE_POINTOPOINT) p.prefix.s_addr = htonl (OSPF_ALLSPFROUTERS); else if (flag == OSPF_SEND_PACKET_DIRECT) - p.prefix = nbr->address.u.prefix4; + p.prefix = nbr->src; else if (oi->state == ISM_DR || oi->state == ISM_Backup) p.prefix.s_addr = htonl (OSPF_ALLSPFROUTERS); else if (oi->type == OSPF_IFTYPE_POINTOMULTIPOINT) @@ -3516,7 +3510,7 @@ ospf_ls_ack_send (struct ospf_neighbor *nbr, struct ospf_lsa *lsa) struct ospf_interface *oi = nbr->oi; if (listcount (oi->ls_ack_direct.ls_ack) == 0) - oi->ls_ack_direct.dst = nbr->address.u.prefix4; + oi->ls_ack_direct.dst = nbr->src; listnode_add (oi->ls_ack_direct.ls_ack, ospf_lsa_lock (lsa)); @@ -3544,7 +3538,7 @@ ospf_ls_ack_send_delayed (struct ospf_interface *oi) for (ALL_LIST_ELEMENTS_RO (oi->nbrs, node, nbr)) if (nbr != oi->nbr_self && nbr->state >= NSM_Exchange) while (listcount (oi->ls_ack)) - ospf_ls_ack_send_list (oi, oi->ls_ack, nbr->address.u.prefix4); + ospf_ls_ack_send_list (oi, oi->ls_ack, nbr->src); return; } if (oi->type == OSPF_IFTYPE_VIRTUALLINK) diff --git a/ospfd/ospf_vty.c b/ospfd/ospf_vty.c index 2c97488e..a3c39447 100644 --- a/ospfd/ospf_vty.c +++ b/ospfd/ospf_vty.c @@ -2911,7 +2911,7 @@ show_ip_ospf_interface_sub (struct vty *vty, struct ospf *ospf, vty_out (vty, " Designated Router (ID) %s,", inet_ntoa (nbr->router_id)); vty_out (vty, " Interface Address %s%s", - inet_ntoa (nbr->address.u.prefix4), VTY_NEWLINE); + inet_ntoa (nbr->src), VTY_NEWLINE); } } @@ -2930,7 +2930,7 @@ show_ip_ospf_interface_sub (struct vty *vty, struct ospf *ospf, vty_out (vty, " Backup Designated Router (ID) %s,", inet_ntoa (nbr->router_id)); vty_out (vty, " Interface Address %s%s", - inet_ntoa (nbr->address.u.prefix4), VTY_NEWLINE); + inet_ntoa (nbr->src), VTY_NEWLINE); } } @@ -3220,7 +3220,7 @@ show_ip_ospf_neighbor_detail_sub (struct vty *vty, struct ospf_interface *oi, /* Show interface address. */ vty_out (vty, " interface address %s%s", - inet_ntoa (nbr->address.u.prefix4), VTY_NEWLINE); + inet_ntoa (nbr->src), VTY_NEWLINE); /* Show Area ID. */ vty_out (vty, " In the area %s via interface %s%s", ospf_area_desc_string (oi->area), oi->ifp->name, VTY_NEWLINE); diff --git a/ospfd/ospfd.c b/ospfd/ospfd.c index 22db4498..1f32a484 100644 --- a/ospfd/ospfd.c +++ b/ospfd/ospfd.c @@ -1404,7 +1404,7 @@ ospf_nbr_nbma_add (struct ospf_nbr_nbma *nbr_nbma, if (nbr_nbma->nbr != NULL) return; - if (IPV4_ADDR_SAME (&oi->nbr_self->address.u.prefix4, &nbr_nbma->addr)) + if (IPV4_ADDR_SAME (&oi->nbr_self->src, &nbr_nbma->addr)) return; nbr_nbma->oi = oi; @@ -1424,7 +1424,6 @@ ospf_nbr_nbma_add (struct ospf_nbr_nbma *nbr_nbma, nbr->src = nbr_nbma->addr; nbr->nbr_nbma = nbr_nbma; nbr->priority = nbr_nbma->priority; - nbr->address.u.prefix4 = nbr_nbma->addr; nbr_nbma->nbr = nbr; OSPF_NSM_EVENT_EXECUTE (nbr, NSM_Start); } |