diff options
author | Igor Ryzhov <iryzhov@nfware.com> | 2021-07-27 15:06:40 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-27 15:06:40 +0200 |
commit | 36d3fcccb4b4427acbe0cafe6dbcdec6b7b2a569 (patch) | |
tree | 203eaf9c11488a7878ac719cd9765ddf53057bc2 /ospf6d | |
parent | Merge pull request #8897 from gpnaveen/ospfv3_base_cases (diff) | |
parent | Revert "ospf6d: Limit the number of interface addresses being supported" (diff) | |
download | frr-36d3fcccb4b4427acbe0cafe6dbcdec6b7b2a569.tar.xz frr-36d3fcccb4b4427acbe0cafe6dbcdec6b7b2a569.zip |
Merge pull request #8944 from opensourcerouting/ospf6-mtu-revert
ospf6d: revert PR #8622
Diffstat (limited to 'ospf6d')
-rw-r--r-- | ospf6d/ospf6_interface.c | 31 | ||||
-rw-r--r-- | ospf6d/ospf6_interface.h | 1 | ||||
-rw-r--r-- | ospf6d/ospf6_intra.c | 32 | ||||
-rw-r--r-- | ospf6d/ospf6_top.c | 18 | ||||
-rw-r--r-- | ospf6d/ospf6_top.h | 4 | ||||
-rw-r--r-- | ospf6d/ospf6_zebra.c | 21 |
6 files changed, 6 insertions, 101 deletions
diff --git a/ospf6d/ospf6_interface.c b/ospf6d/ospf6_interface.c index 2727f01d8..468a4b8e8 100644 --- a/ospf6d/ospf6_interface.c +++ b/ospf6d/ospf6_interface.c @@ -385,7 +385,6 @@ void ospf6_interface_connected_route_update(struct interface *ifp) struct connected *c; struct listnode *node, *nnode; struct in6_addr nh_addr; - int count = 0, max_addr_count; oi = (struct ospf6_interface *)ifp->info; if (oi == NULL) @@ -404,22 +403,10 @@ void ospf6_interface_connected_route_update(struct interface *ifp) /* update "route to advertise" interface route table */ ospf6_route_remove_all(oi->route_connected); - if (oi->ifmtu >= OSPF6_JUMBO_MTU) - max_addr_count = OSPF6_MAX_IF_ADDRS_JUMBO; - else - max_addr_count = OSPF6_MAX_IF_ADDRS; - for (ALL_LIST_ELEMENTS(oi->interface->connected, node, nnode, c)) { if (c->address->family != AF_INET6) continue; - /* number of interface addresses supported is based on MTU - * size of OSPFv3 packet - */ - count++; - if (count >= max_addr_count) - break; - CONTINUE_IF_ADDRESS_LINKLOCAL(IS_OSPF6_DEBUG_INTERFACE, c->address); CONTINUE_IF_ADDRESS_UNSPECIFIED(IS_OSPF6_DEBUG_INTERFACE, @@ -1730,7 +1717,6 @@ DEFUN (ipv6_ospf6_area, int idx_ipv4 = 3; uint32_t area_id; int format; - int ipv6_count = 0; assert(ifp); @@ -1745,23 +1731,6 @@ DEFUN (ipv6_ospf6_area, return CMD_SUCCESS; } - /* if more than OSPF6_MAX_IF_ADDRS are configured on this interface - * then don't allow ospfv3 to be configured - */ - ipv6_count = connected_count_by_family(ifp, AF_INET6); - if (oi->ifmtu == OSPF6_DEFAULT_MTU && ipv6_count > OSPF6_MAX_IF_ADDRS) { - vty_out(vty, - "can not configure OSPFv3 on if %s, must have less than %d interface addresses but has %d addresses\n", - ifp->name, OSPF6_MAX_IF_ADDRS, ipv6_count); - return CMD_WARNING_CONFIG_FAILED; - } else if (oi->ifmtu >= OSPF6_JUMBO_MTU - && ipv6_count > OSPF6_MAX_IF_ADDRS_JUMBO) { - vty_out(vty, - "can not configure OSPFv3 on if %s, must have less than %d interface addresses but has %d addresses\n", - ifp->name, OSPF6_MAX_IF_ADDRS_JUMBO, ipv6_count); - return CMD_WARNING_CONFIG_FAILED; - } - if (str2area_id(argv[idx_ipv4]->arg, &area_id, &format)) { vty_out(vty, "Malformed Area-ID: %s\n", argv[idx_ipv4]->arg); return CMD_WARNING_CONFIG_FAILED; diff --git a/ospf6d/ospf6_interface.h b/ospf6d/ospf6_interface.h index c9cd74b69..b5efca743 100644 --- a/ospf6d/ospf6_interface.h +++ b/ospf6d/ospf6_interface.h @@ -201,7 +201,6 @@ extern void ospf6_interface_disable(struct ospf6_interface *); extern void ospf6_interface_state_update(struct interface *); extern void ospf6_interface_connected_route_update(struct interface *); -extern void ospf6_interface_connected_route_add(struct connected *); extern struct in6_addr * ospf6_interface_get_global_address(struct interface *ifp); diff --git a/ospf6d/ospf6_intra.c b/ospf6d/ospf6_intra.c index 1bcfc133f..06f64bbc4 100644 --- a/ospf6d/ospf6_intra.c +++ b/ospf6d/ospf6_intra.c @@ -767,7 +767,6 @@ int ospf6_link_lsa_originate(struct thread *thread) struct ospf6_link_lsa *link_lsa; struct ospf6_route *route; struct ospf6_prefix *op; - int count, max_addr_count; oi = (struct ospf6_interface *)THREAD_ARG(thread); oi->thread_link_lsa = NULL; @@ -811,20 +810,14 @@ int ospf6_link_lsa_originate(struct thread *thread) memcpy(link_lsa->options, oi->area->options, 3); memcpy(&link_lsa->linklocal_addr, oi->linklocal_addr, sizeof(struct in6_addr)); + link_lsa->prefix_num = htonl(oi->route_connected->count); op = (struct ospf6_prefix *)((caddr_t)link_lsa + sizeof(struct ospf6_link_lsa)); - /* connected prefix to advertise, number of interface addresses - * supported is based on MTU size of OSPFv3 packets - */ - if (oi->ifmtu >= OSPF6_JUMBO_MTU) - max_addr_count = OSPF6_MAX_IF_ADDRS_JUMBO; - else - max_addr_count = OSPF6_MAX_IF_ADDRS; - for (route = ospf6_route_head(oi->route_connected), count = 0; - route && count < max_addr_count; - route = ospf6_route_next(route), count++) { + /* connected prefix to advertise */ + for (route = ospf6_route_head(oi->route_connected); route; + route = ospf6_route_next(route)) { op->prefix_length = route->prefix.prefixlen; op->prefix_options = route->prefix_options; op->prefix_metric = htons(0); @@ -833,8 +826,6 @@ int ospf6_link_lsa_originate(struct thread *thread) op = OSPF6_PREFIX_NEXT(op); } - link_lsa->prefix_num = htonl(count); - /* Fill LSA Header */ lsa_header->age = 0; lsa_header->type = htons(OSPF6_LSTYPE_LINK); @@ -1014,7 +1005,6 @@ int ospf6_intra_prefix_lsa_originate_stub(struct thread *thread) unsigned short prefix_num = 0; struct ospf6_route_table *route_advertise; int ls_id = 0; - int count, max_addr_count; oa = (struct ospf6_area *)THREAD_ARG(thread); oa->thread_intra_prefix_lsa = NULL; @@ -1060,8 +1050,6 @@ int ospf6_intra_prefix_lsa_originate_stub(struct thread *thread) intra_prefix_lsa->ref_adv_router = oa->ospf6->router_id; route_advertise = ospf6_route_table_create(0, 0); - route_advertise->hook_add = NULL; - route_advertise->hook_remove = NULL; for (ALL_LIST_ELEMENTS_RO(oa->if_list, i, oi)) { if (oi->state == OSPF6_INTERFACE_DOWN) { @@ -1090,14 +1078,8 @@ int ospf6_intra_prefix_lsa_originate_stub(struct thread *thread) zlog_debug(" Interface %s:", oi->interface->name); /* connected prefix to advertise */ - if (oi->ifmtu >= OSPF6_JUMBO_MTU) - max_addr_count = OSPF6_MAX_IF_ADDRS_JUMBO; - else - max_addr_count = OSPF6_MAX_IF_ADDRS; - - for (route = ospf6_route_head(oi->route_connected), count = 0; - route && count < max_addr_count; - route = ospf6_route_best_next(route), count++) { + for (route = ospf6_route_head(oi->route_connected); route; + route = ospf6_route_best_next(route)) { if (IS_OSPF6_DEBUG_ORIGINATE(INTRA_PREFIX)) zlog_debug(" include %pFX", &route->prefix); ospf6_route_add(ospf6_route_copy(route), @@ -1312,8 +1294,6 @@ int ospf6_intra_prefix_lsa_originate_transit(struct thread *thread) /* connected prefix to advertise */ route_advertise = ospf6_route_table_create(0, 0); - route_advertise->hook_add = NULL; - route_advertise->hook_remove = NULL; type = ntohs(OSPF6_LSTYPE_LINK); for (ALL_LSDB_TYPED(oi->lsdb, type, lsa)) { diff --git a/ospf6d/ospf6_top.c b/ospf6d/ospf6_top.c index 6f40989ef..92f1e50c6 100644 --- a/ospf6d/ospf6_top.c +++ b/ospf6d/ospf6_top.c @@ -989,7 +989,6 @@ DEFUN_HIDDEN (ospf6_interface_area, struct ospf6_interface *oi; struct interface *ifp; vrf_id_t vrf_id = VRF_DEFAULT; - int ipv6_count = 0; uint32_t area_id; int format; @@ -1012,23 +1011,6 @@ DEFUN_HIDDEN (ospf6_interface_area, return CMD_SUCCESS; } - /* if more than OSPF6_MAX_IF_ADDRS are configured on this interface - * then don't allow ospfv3 to be configured - */ - ipv6_count = connected_count_by_family(ifp, AF_INET6); - if (oi->ifmtu == OSPF6_DEFAULT_MTU && ipv6_count > OSPF6_MAX_IF_ADDRS) { - vty_out(vty, - "can not configure OSPFv3 on if %s, must have less than %d interface addresses but has %d addresses\n", - ifp->name, OSPF6_MAX_IF_ADDRS, ipv6_count); - return CMD_WARNING_CONFIG_FAILED; - } else if (oi->ifmtu >= OSPF6_JUMBO_MTU - && ipv6_count > OSPF6_MAX_IF_ADDRS_JUMBO) { - vty_out(vty, - "can not configure OSPFv3 on if %s, must have less than %d interface addresses but has %d addresses\n", - ifp->name, OSPF6_MAX_IF_ADDRS_JUMBO, ipv6_count); - return CMD_WARNING_CONFIG_FAILED; - } - if (str2area_id(argv[idx_ipv4]->arg, &area_id, &format)) { vty_out(vty, "Malformed Area-ID: %s\n", argv[idx_ipv4]->arg); return CMD_WARNING_CONFIG_FAILED; diff --git a/ospf6d/ospf6_top.h b/ospf6d/ospf6_top.h index 3eb423f68..b546ee87a 100644 --- a/ospf6d/ospf6_top.h +++ b/ospf6d/ospf6_top.h @@ -164,10 +164,6 @@ DECLARE_QOBJ_TYPE(ospf6); #define OSPF6_DISABLED 0x01 #define OSPF6_STUB_ROUTER 0x02 -#define OSPF6_MAX_IF_ADDRS 100 -#define OSPF6_MAX_IF_ADDRS_JUMBO 200 -#define OSPF6_DEFAULT_MTU 1500 -#define OSPF6_JUMBO_MTU 9000 /* global pointer for OSPF top data structure */ extern struct ospf6 *ospf6; diff --git a/ospf6d/ospf6_zebra.c b/ospf6d/ospf6_zebra.c index 72bc3a2f3..5403e643d 100644 --- a/ospf6d/ospf6_zebra.c +++ b/ospf6d/ospf6_zebra.c @@ -131,38 +131,17 @@ void ospf6_zebra_no_redistribute(int type, vrf_id_t vrf_id) static int ospf6_zebra_if_address_update_add(ZAPI_CALLBACK_ARGS) { struct connected *c; - struct ospf6_interface *oi; - int ipv6_count = 0; c = zebra_interface_address_read(ZEBRA_INTERFACE_ADDRESS_ADD, zclient->ibuf, vrf_id); if (c == NULL) return 0; - oi = (struct ospf6_interface *)c->ifp->info; - if (oi == NULL) - oi = ospf6_interface_create(c->ifp); - assert(oi); - if (IS_OSPF6_DEBUG_ZEBRA(RECV)) zlog_debug("Zebra Interface address add: %s %5s %pFX", c->ifp->name, prefix_family_str(c->address), c->address); - ipv6_count = connected_count_by_family(c->ifp, AF_INET6); - if (oi->ifmtu == OSPF6_DEFAULT_MTU && ipv6_count > OSPF6_MAX_IF_ADDRS) { - zlog_warn( - "Zebra Interface : %s has too many interface addresses %d only support %d, increase MTU", - c->ifp->name, ipv6_count, OSPF6_MAX_IF_ADDRS); - return 0; - } else if (oi->ifmtu >= OSPF6_JUMBO_MTU - && ipv6_count > OSPF6_MAX_IF_ADDRS_JUMBO) { - zlog_warn( - "Zebra Interface : %s has too many interface addresses %d only support %d", - c->ifp->name, ipv6_count, OSPF6_MAX_IF_ADDRS_JUMBO); - return 0; - } - if (c->address->family == AF_INET6) { ospf6_interface_state_update(c->ifp); ospf6_interface_connected_route_update(c->ifp); |