From 579933fb975dc8b7b078b58ffd8428d85520cfce Mon Sep 17 00:00:00 2001 From: Christian Poessinger Date: Wed, 14 Oct 2020 21:40:36 +0200 Subject: frr: T2980: use consistent patch naming --- ...-decimal-area-format-in-interface-command.patch | 146 +++++++++++++++++++++ .../frr/patches/ospf-decimal-area-format.patch | 143 -------------------- 2 files changed, 146 insertions(+), 143 deletions(-) create mode 100644 packages/frr/patches/0002-ospf6d-decimal-area-format-in-interface-command.patch delete mode 100644 packages/frr/patches/ospf-decimal-area-format.patch (limited to 'packages/frr') diff --git a/packages/frr/patches/0002-ospf6d-decimal-area-format-in-interface-command.patch b/packages/frr/patches/0002-ospf6d-decimal-area-format-in-interface-command.patch new file mode 100644 index 00000000..570ebd57 --- /dev/null +++ b/packages/frr/patches/0002-ospf6d-decimal-area-format-in-interface-command.patch @@ -0,0 +1,146 @@ +From de842255f9a1930d7f927e94e7ea800bcfd1434c Mon Sep 17 00:00:00 2001 +From: Patrick Ruddy +Date: Wed, 3 Oct 2018 18:22:34 +0100 +Subject: [PATCH] ospf6d: decimal area format in interface command + +The ospf6 "interface area " command only allows the area to +be specified in the ipv4 address format, whereas the show run command +always shows it in the format in which the area was created. This causes +the frr-reload script to be unable to remove ospfv3 interfaces when the +area was created in decimal format. The solution is to allow both formats +to be configured as they can be for other area commands. + +Signed-off-by: Duncan Eastoe +--- + ospf6d/ospf6_area.c | 16 ---------------- + ospf6d/ospf6_area.h | 15 +++++++++++++++ + ospf6d/ospf6_top.c | 23 +++++++---------------- + 3 files changed, 22 insertions(+), 32 deletions(-) + +diff --git a/ospf6d/ospf6_area.c b/ospf6d/ospf6_area.c +index 9fe077b54..713ce26ec 100644 +--- a/ospf6d/ospf6_area.c ++++ b/ospf6d/ospf6_area.c +@@ -379,22 +379,6 @@ void ospf6_area_show(struct vty *vty, struct ospf6_area *oa) + vty_out(vty, "SPF has not been run\n"); + } + +- +-#define OSPF6_CMD_AREA_GET(str, oa) \ +- { \ +- char *ep; \ +- uint32_t area_id = htonl(strtoul(str, &ep, 10)); \ +- if (*ep && inet_pton(AF_INET, str, &area_id) != 1) { \ +- vty_out(vty, "Malformed Area-ID: %s\n", str); \ +- return CMD_SUCCESS; \ +- } \ +- int format = !*ep ? OSPF6_AREA_FMT_DECIMAL \ +- : OSPF6_AREA_FMT_DOTTEDQUAD; \ +- oa = ospf6_area_lookup(area_id, ospf6); \ +- if (oa == NULL) \ +- oa = ospf6_area_create(area_id, ospf6, format); \ +- } +- + DEFUN (area_range, + area_range_cmd, + "area range X:X::X:X/M []", +diff --git a/ospf6d/ospf6_area.h b/ospf6d/ospf6_area.h +index 5648b1dfe..7ce6717fc 100644 +--- a/ospf6d/ospf6_area.h ++++ b/ospf6d/ospf6_area.h +@@ -117,6 +117,21 @@ struct ospf6_area { + #define IS_AREA_TRANSIT(oa) (CHECK_FLAG ((oa)->flag, OSPF6_AREA_TRANSIT)) + #define IS_AREA_STUB(oa) (CHECK_FLAG ((oa)->flag, OSPF6_AREA_STUB)) + ++#define OSPF6_CMD_AREA_GET(str, oa) \ ++ { \ ++ char *ep; \ ++ uint32_t area_id = htonl(strtoul(str, &ep, 10)); \ ++ if (*ep && inet_pton(AF_INET, str, &area_id) != 1) { \ ++ vty_out(vty, "Malformed Area-ID: %s\n", str); \ ++ return CMD_SUCCESS; \ ++ } \ ++ int format = !*ep ? OSPF6_AREA_FMT_DECIMAL \ ++ : OSPF6_AREA_FMT_DOTTEDQUAD; \ ++ oa = ospf6_area_lookup(area_id, ospf6); \ ++ if (oa == NULL) \ ++ oa = ospf6_area_create(area_id, ospf6, format); \ ++ } ++ + /* prototypes */ + extern int ospf6_area_cmp(void *va, void *vb); + +diff --git a/ospf6d/ospf6_top.c b/ospf6d/ospf6_top.c +index dd672dd1c..f49ea9add 100644 +--- a/ospf6d/ospf6_top.c ++++ b/ospf6d/ospf6_top.c +@@ -644,11 +644,12 @@ DEFUN (no_ospf6_distance_source, + + DEFUN (ospf6_interface_area, + ospf6_interface_area_cmd, +- "interface IFNAME area A.B.C.D", ++ "interface IFNAME area ", + "Enable routing on an IPv6 interface\n" + IFNAME_STR + "Specify the OSPF6 area ID\n" + "OSPF6 area ID in IPv4 address notation\n" ++ "OSPF6 area ID in decimal notation\n" + ) + { + VTY_DECLVAR_CONTEXT(ospf6, o); +@@ -657,7 +658,6 @@ DEFUN (ospf6_interface_area, + struct ospf6_area *oa; + struct ospf6_interface *oi; + struct interface *ifp; +- uint32_t area_id; + + /* find/create ospf6 interface */ + ifp = if_get_by_name(argv[idx_ifname]->arg, VRF_DEFAULT); +@@ -671,15 +671,7 @@ DEFUN (ospf6_interface_area, + } + + /* parse Area-ID */ +- if (inet_pton(AF_INET, argv[idx_ipv4]->arg, &area_id) != 1) { +- vty_out(vty, "Invalid Area-ID: %s\n", argv[idx_ipv4]->arg); +- return CMD_SUCCESS; +- } +- +- /* find/create ospf6 area */ +- oa = ospf6_area_lookup(area_id, o); +- if (oa == NULL) +- oa = ospf6_area_create(area_id, o, OSPF6_AREA_FMT_DOTTEDQUAD); ++ OSPF6_CMD_AREA_GET(argv[idx_ipv4]->arg, oa); + + /* attach interface to area */ + listnode_add(oa->if_list, oi); /* sort ?? */ +@@ -703,12 +695,13 @@ DEFUN (ospf6_interface_area, + + DEFUN (no_ospf6_interface_area, + no_ospf6_interface_area_cmd, +- "no interface IFNAME area A.B.C.D", ++ "no interface IFNAME area ", + NO_STR + "Disable routing on an IPv6 interface\n" + IFNAME_STR + "Specify the OSPF6 area ID\n" + "OSPF6 area ID in IPv4 address notation\n" ++ "OSPF6 area ID in decimal notation\n" + ) + { + int idx_ifname = 2; +@@ -731,10 +724,8 @@ DEFUN (no_ospf6_interface_area, + } + + /* parse Area-ID */ +- if (inet_pton(AF_INET, argv[idx_ipv4]->arg, &area_id) != 1) { +- vty_out(vty, "Invalid Area-ID: %s\n", argv[idx_ipv4]->arg); +- return CMD_SUCCESS; +- } ++ if (inet_pton(AF_INET, argv[idx_ipv4]->arg, &area_id) != 1) ++ area_id = htonl(strtoul(argv[idx_ipv4]->arg, NULL, 10)); + + /* Verify Area */ + if (oi->area == NULL) { +-- +2.20.1 + diff --git a/packages/frr/patches/ospf-decimal-area-format.patch b/packages/frr/patches/ospf-decimal-area-format.patch deleted file mode 100644 index 298ef6e5..00000000 --- a/packages/frr/patches/ospf-decimal-area-format.patch +++ /dev/null @@ -1,143 +0,0 @@ -From de842255f9a1930d7f927e94e7ea800bcfd1434c Mon Sep 17 00:00:00 2001 -From: Patrick Ruddy -Date: Wed, 3 Oct 2018 18:22:34 +0100 -Subject: [PATCH] ospf6d: decimal area format in interface command - -The ospf6 "interface area " command only allows the area to -be specified in the ipv4 address format, whereas the show run command -always shows it in the format in which the area was created. This causes -the frr-reload script to be unable to remove ospfv3 interfaces when the -area was created in decimal format. The solution is to allow both formats -to be configured as they can be for other area commands. - -Signed-off-by: Duncan Eastoe ---- - ospf6d/ospf6_area.c | 16 ---------------- - ospf6d/ospf6_area.h | 15 +++++++++++++++ - ospf6d/ospf6_top.c | 23 +++++++---------------- - 3 files changed, 22 insertions(+), 32 deletions(-) - -diff --git a/ospf6d/ospf6_area.c b/ospf6d/ospf6_area.c -index 9fe077b544..713ce26ecb 100644 ---- a/ospf6d/ospf6_area.c -+++ b/ospf6d/ospf6_area.c -@@ -379,22 +379,6 @@ void ospf6_area_show(struct vty *vty, struct ospf6_area *oa) - vty_out(vty, "SPF has not been run\n"); - } - -- --#define OSPF6_CMD_AREA_GET(str, oa) \ -- { \ -- char *ep; \ -- uint32_t area_id = htonl(strtoul(str, &ep, 10)); \ -- if (*ep && inet_pton(AF_INET, str, &area_id) != 1) { \ -- vty_out(vty, "Malformed Area-ID: %s\n", str); \ -- return CMD_SUCCESS; \ -- } \ -- int format = !*ep ? OSPF6_AREA_FMT_DECIMAL \ -- : OSPF6_AREA_FMT_DOTTEDQUAD; \ -- oa = ospf6_area_lookup(area_id, ospf6); \ -- if (oa == NULL) \ -- oa = ospf6_area_create(area_id, ospf6, format); \ -- } -- - DEFUN (area_range, - area_range_cmd, - "area range X:X::X:X/M []", -diff --git a/ospf6d/ospf6_area.h b/ospf6d/ospf6_area.h -index 5648b1dfec..7ce6717fcc 100644 ---- a/ospf6d/ospf6_area.h -+++ b/ospf6d/ospf6_area.h -@@ -117,6 +117,21 @@ struct ospf6_area { - #define IS_AREA_TRANSIT(oa) (CHECK_FLAG ((oa)->flag, OSPF6_AREA_TRANSIT)) - #define IS_AREA_STUB(oa) (CHECK_FLAG ((oa)->flag, OSPF6_AREA_STUB)) - -+#define OSPF6_CMD_AREA_GET(str, oa) \ -+ { \ -+ char *ep; \ -+ uint32_t area_id = htonl(strtoul(str, &ep, 10)); \ -+ if (*ep && inet_pton(AF_INET, str, &area_id) != 1) { \ -+ vty_out(vty, "Malformed Area-ID: %s\n", str); \ -+ return CMD_SUCCESS; \ -+ } \ -+ int format = !*ep ? OSPF6_AREA_FMT_DECIMAL \ -+ : OSPF6_AREA_FMT_DOTTEDQUAD; \ -+ oa = ospf6_area_lookup(area_id, ospf6); \ -+ if (oa == NULL) \ -+ oa = ospf6_area_create(area_id, ospf6, format); \ -+ } -+ - /* prototypes */ - extern int ospf6_area_cmp(void *va, void *vb); - -diff --git a/ospf6d/ospf6_top.c b/ospf6d/ospf6_top.c -index dd672dd1c5..f49ea9add2 100644 ---- a/ospf6d/ospf6_top.c -+++ b/ospf6d/ospf6_top.c -@@ -644,11 +644,12 @@ DEFUN (no_ospf6_distance_source, - - DEFUN (ospf6_interface_area, - ospf6_interface_area_cmd, -- "interface IFNAME area A.B.C.D", -+ "interface IFNAME area ", - "Enable routing on an IPv6 interface\n" - IFNAME_STR - "Specify the OSPF6 area ID\n" - "OSPF6 area ID in IPv4 address notation\n" -+ "OSPF6 area ID in decimal notation\n" - ) - { - VTY_DECLVAR_CONTEXT(ospf6, o); -@@ -657,7 +658,6 @@ DEFUN (ospf6_interface_area, - struct ospf6_area *oa; - struct ospf6_interface *oi; - struct interface *ifp; -- uint32_t area_id; - - /* find/create ospf6 interface */ - ifp = if_get_by_name(argv[idx_ifname]->arg, VRF_DEFAULT); -@@ -671,15 +671,7 @@ DEFUN (ospf6_interface_area, - } - - /* parse Area-ID */ -- if (inet_pton(AF_INET, argv[idx_ipv4]->arg, &area_id) != 1) { -- vty_out(vty, "Invalid Area-ID: %s\n", argv[idx_ipv4]->arg); -- return CMD_SUCCESS; -- } -- -- /* find/create ospf6 area */ -- oa = ospf6_area_lookup(area_id, o); -- if (oa == NULL) -- oa = ospf6_area_create(area_id, o, OSPF6_AREA_FMT_DOTTEDQUAD); -+ OSPF6_CMD_AREA_GET(argv[idx_ipv4]->arg, oa); - - /* attach interface to area */ - listnode_add(oa->if_list, oi); /* sort ?? */ -@@ -703,12 +695,13 @@ DEFUN (ospf6_interface_area, - - DEFUN (no_ospf6_interface_area, - no_ospf6_interface_area_cmd, -- "no interface IFNAME area A.B.C.D", -+ "no interface IFNAME area ", - NO_STR - "Disable routing on an IPv6 interface\n" - IFNAME_STR - "Specify the OSPF6 area ID\n" - "OSPF6 area ID in IPv4 address notation\n" -+ "OSPF6 area ID in decimal notation\n" - ) - { - int idx_ifname = 2; -@@ -731,10 +724,8 @@ DEFUN (no_ospf6_interface_area, - } - - /* parse Area-ID */ -- if (inet_pton(AF_INET, argv[idx_ipv4]->arg, &area_id) != 1) { -- vty_out(vty, "Invalid Area-ID: %s\n", argv[idx_ipv4]->arg); -- return CMD_SUCCESS; -- } -+ if (inet_pton(AF_INET, argv[idx_ipv4]->arg, &area_id) != 1) -+ area_id = htonl(strtoul(argv[idx_ipv4]->arg, NULL, 10)); - - /* Verify Area */ - if (oi->area == NULL) { -- cgit v1.2.3