summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ospf6d/ospf6_area.c16
-rw-r--r--ospf6d/ospf6_area.h15
-rw-r--r--ospf6d/ospf6_top.c23
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 <A.B.C.D|(0-4294967295)> range X:X::X:X/M [<advertise|not-advertise|cost (0-16777215)>]",
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 <A.B.C.D|(0-4294967295)>",
"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 <A.B.C.D|(0-4294967295)>",
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) {