diff options
author | ajs <ajs> | 2005-01-29 18:19:13 +0000 |
---|---|---|
committer | ajs <ajs> | 2005-01-29 18:19:13 +0000 |
commit | 3b8b1855038afde448993e5a56955e9b7a4d99c2 (patch) | |
tree | 5378ad7cc9d2fdb42558044833036e347ca1277e /bgpd/bgp_filter.c | |
parent | 4460e7a4cf3dadcd9f06e4b519ba7be2cc936c0a (diff) |
2005-01-29 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
* buffer.h: Fix comment on buffer_getstr to reflect that it now
uses XMALLOC.
* buffer.c: (buffer_getstr) Use XMALLOC(MTYPE_TMP) instead of malloc.
* filter.c: (access_list_remark,ipv6_access_list_remark) Use
argv_concat instead of buffer_getstr.
* if.c: (interface_desc) Use argv_concat instead of buffer_getstr.
* plist.c: (ip_prefix_list_description,ipv6_prefix_list_description)
Use argv_concat instead of buffer_getstr.
* bgp_filter.c: (ip_as_path,no_ip_as_path) Use argv_concat instead
of buffer_getstr.
* bgp_route.c: (bgp_show_regexp) Fix memory leak: need to free string
returned by buffer_getstr.
(bgp_show_community) Must use XFREE instead of free on string
returned by buffer_getstr.
* bgp_routemap.c: (set_community) Must use XFREE instead of free
on string returned by buffer_getstr.
* bgp_vty.c: (neighbor_description) Use argv_concat instead of
buffer_getstr.
Diffstat (limited to 'bgpd/bgp_filter.c')
-rw-r--r-- | bgpd/bgp_filter.c | 44 |
1 files changed, 6 insertions, 38 deletions
diff --git a/bgpd/bgp_filter.c b/bgpd/bgp_filter.c index 09dcc0fa..2f43cd05 100644 --- a/bgpd/bgp_filter.c +++ b/bgpd/bgp_filter.c @@ -446,10 +446,7 @@ DEFUN (ip_as_path, ip_as_path_cmd, struct as_filter *asfilter; struct as_list *aslist; regex_t *regex; - struct buffer *b; - int i; char *regstr; - int first = 0; /* Check the filter type. */ if (strncmp (argv[1], "p", 1) == 0) @@ -463,25 +460,12 @@ DEFUN (ip_as_path, ip_as_path_cmd, } /* Check AS path regex. */ - b = buffer_new (1024); - for (i = 2; i < argc; i++) - { - if (first) - buffer_putc (b, ' '); - else - first = 1; - - buffer_putstr (b, argv[i]); - } - buffer_putc (b, '\0'); - - regstr = buffer_getstr (b); - buffer_free (b); + regstr = argv_concat(argv, argc, 2); regex = bgp_regcomp (regstr); if (!regex) { - free (regstr); + XFREE (MTYPE_TMP, regstr); vty_out (vty, "can't compile regexp %s%s", argv[0], VTY_NEWLINE); return CMD_WARNING; @@ -489,7 +473,7 @@ DEFUN (ip_as_path, ip_as_path_cmd, asfilter = as_filter_make (regex, regstr, type); - free (regstr); + XFREE (MTYPE_TMP, regstr); /* Install new filter to the access_list. */ aslist = as_list_get (argv[0]); @@ -518,9 +502,6 @@ DEFUN (no_ip_as_path, enum as_filter_type type; struct as_filter *asfilter; struct as_list *aslist; - struct buffer *b; - int i; - int first = 0; char *regstr; regex_t *regex; @@ -545,25 +526,12 @@ DEFUN (no_ip_as_path, } /* Compile AS path. */ - b = buffer_new (1024); - for (i = 2; i < argc; i++) - { - if (first) - buffer_putc (b, ' '); - else - first = 1; - - buffer_putstr (b, argv[i]); - } - buffer_putc (b, '\0'); - - regstr = buffer_getstr (b); - buffer_free (b); + regstr = argv_concat(argv, argc, 2); regex = bgp_regcomp (regstr); if (!regex) { - free (regstr); + XFREE (MTYPE_TMP, regstr); vty_out (vty, "can't compile regexp %s%s", argv[0], VTY_NEWLINE); return CMD_WARNING; @@ -572,7 +540,7 @@ DEFUN (no_ip_as_path, /* Lookup asfilter. */ asfilter = as_filter_lookup (aslist, regstr, type); - free (regstr); + XFREE (MTYPE_TMP, regstr); bgp_regex_free (regex); if (asfilter == NULL) |