diff options
| author | Donatas Abraitis <donatas.abraitis@gmail.com> | 2021-04-28 08:33:24 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-04-28 08:33:24 +0300 |
| commit | a1fc0cb01e2ae004cf178c2f2eb712a0fb2c86d9 (patch) | |
| tree | 1b9b7143d953f427d8b16b68a8b8dcb1bc5b1650 /lib/filter.c | |
| parent | d8c3daca19add1c3cedea05e9a30fb33f2b4e9ad (diff) | |
| parent | 3eff8e2f44b0810074e88ff2bc885f51b5f787d6 (diff) | |
Merge pull request #8471 from idryzhov/cleanup-num-named-lists
*: cleanup number-named access-lists and prefix-lists
Diffstat (limited to 'lib/filter.c')
| -rw-r--r-- | lib/filter.c | 117 |
1 files changed, 7 insertions, 110 deletions
diff --git a/lib/filter.c b/lib/filter.c index ba8a3086af..b7a935d076 100644 --- a/lib/filter.c +++ b/lib/filter.c @@ -38,7 +38,6 @@ DEFINE_MTYPE_STATIC(LIB, ACCESS_FILTER, "Access Filter"); /* Static structure for mac access_list's master. */ static struct access_master access_master_mac = { {NULL, NULL}, - {NULL, NULL}, NULL, NULL, }; @@ -46,7 +45,6 @@ static struct access_master access_master_mac = { /* Static structure for IPv4 access_list's master. */ static struct access_master access_master_ipv4 = { {NULL, NULL}, - {NULL, NULL}, NULL, NULL, }; @@ -54,7 +52,6 @@ static struct access_master access_master_ipv4 = { /* Static structure for IPv6 access_list's master. */ static struct access_master access_master_ipv6 = { {NULL, NULL}, - {NULL, NULL}, NULL, NULL, }; @@ -166,10 +163,7 @@ void access_list_delete(struct access_list *access) master = access->master; - if (access->type == ACCESS_TYPE_NUMBER) - list = &master->num; - else - list = &master->str; + list = &master->str; if (access->next) access->next->prev = access->prev; @@ -197,8 +191,6 @@ void access_list_delete(struct access_list *access) is sorted by the name. */ static struct access_list *access_list_insert(afi_t afi, const char *name) { - unsigned int i; - long number; struct access_list *access; struct access_list *point; struct access_list_list *alist; @@ -213,36 +205,13 @@ static struct access_list *access_list_insert(afi_t afi, const char *name) access->name = XSTRDUP(MTYPE_ACCESS_LIST_STR, name); access->master = master; - /* If name is made by all digit character. We treat it as - number. */ - for (number = 0, i = 0; i < strlen(name); i++) { - if (isdigit((unsigned char)name[i])) - number = (number * 10) + (name[i] - '0'); - else - break; - } - - /* In case of name is all digit character */ - if (i == strlen(name)) { - access->type = ACCESS_TYPE_NUMBER; - - /* Set access_list to number list. */ - alist = &master->num; - - for (point = alist->head; point; point = point->next) - if (atol(point->name) >= number) - break; - } else { - access->type = ACCESS_TYPE_STRING; - - /* Set access_list to string list. */ - alist = &master->str; + /* Set access_list to string list. */ + alist = &master->str; - /* Set point to insertion point. */ - for (point = alist->head; point; point = point->next) - if (strcmp(point->name, name) >= 0) - break; - } + /* Set point to insertion point. */ + for (point = alist->head; point; point = point->next) + if (strcmp(point->name, name) >= 0) + break; /* In case of this is the first element of master. */ if (alist->head == NULL) { @@ -290,10 +259,6 @@ struct access_list *access_list_lookup(afi_t afi, const char *name) if (master == NULL) return NULL; - for (access = master->num.head; access; access = access->next) - if (strcmp(access->name, name) == 0) - return access; - for (access = master->str.head; access; access = access->next) if (strcmp(access->name, name) == 0) return access; @@ -493,53 +458,6 @@ static int filter_show(struct vty *vty, const char *name, afi_t afi) /* Print the name of the protocol */ vty_out(vty, "%s:\n", frr_protoname); - for (access = master->num.head; access; access = access->next) { - if (name && strcmp(access->name, name) != 0) - continue; - - write = 1; - - for (mfilter = access->head; mfilter; mfilter = mfilter->next) { - filter = &mfilter->u.cfilter; - - if (write) { - vty_out(vty, "%s %s access list %s\n", - mfilter->cisco ? (filter->extended - ? "Extended" - : "Standard") - : "Zebra", - (afi == AFI_IP) - ? ("IP") - : ((afi == AFI_IP6) ? ("IPv6 ") - : ("MAC ")), - access->name); - write = 0; - } - - vty_out(vty, " seq %" PRId64, mfilter->seq); - vty_out(vty, " %s%s", filter_type_str(mfilter), - mfilter->type == FILTER_DENY ? " " : ""); - - if (!mfilter->cisco) - config_write_access_zebra(vty, mfilter); - else if (filter->extended) - config_write_access_cisco(vty, mfilter); - else { - if (filter->addr_mask.s_addr == 0xffffffff) - vty_out(vty, " any\n"); - else { - vty_out(vty, " %pI4", &filter->addr); - if (filter->addr_mask.s_addr - != INADDR_ANY) - vty_out(vty, - ", wildcard bits %pI4", - &filter->addr_mask); - vty_out(vty, "\n"); - } - } - } - } - for (access = master->str.head; access; access = access->next) { if (name && strcmp(access->name, name) != 0) continue; @@ -739,18 +657,11 @@ static void access_list_reset_mac(void) if (master == NULL) return; - for (access = master->num.head; access; access = next) { - next = access->next; - access_list_delete(access); - } for (access = master->str.head; access; access = next) { next = access->next; access_list_delete(access); } - assert(master->num.head == NULL); - assert(master->num.tail == NULL); - assert(master->str.head == NULL); assert(master->str.tail == NULL); } @@ -797,18 +708,11 @@ static void access_list_reset_ipv4(void) if (master == NULL) return; - for (access = master->num.head; access; access = next) { - next = access->next; - access_list_delete(access); - } for (access = master->str.head; access; access = next) { next = access->next; access_list_delete(access); } - assert(master->num.head == NULL); - assert(master->num.tail == NULL); - assert(master->str.head == NULL); assert(master->str.tail == NULL); } @@ -838,18 +742,11 @@ static void access_list_reset_ipv6(void) if (master == NULL) return; - for (access = master->num.head; access; access = next) { - next = access->next; - access_list_delete(access); - } for (access = master->str.head; access; access = next) { next = access->next; access_list_delete(access); } - assert(master->num.head == NULL); - assert(master->num.tail == NULL); - assert(master->str.head == NULL); assert(master->str.tail == NULL); } |
