Module Name: src Committed By: rmind Date: Mon Feb 3 02:21:52 UTC 2014
Modified Files: src/lib/libnpf: npf.3 npf.c npf.h src/usr.sbin/npf/npfctl: npf_build.c npf_data.c npfctl.h Log Message: - npfctl: fix table IDs (breakage since the table naming was added). - libnpf: remove npf_table_exists_p() from public API. To generate a diff of this commit: cvs rdiff -u -r1.14 -r1.15 src/lib/libnpf/npf.3 cvs rdiff -u -r1.24 -r1.25 src/lib/libnpf/npf.c cvs rdiff -u -r1.21 -r1.22 src/lib/libnpf/npf.h cvs rdiff -u -r1.31 -r1.32 src/usr.sbin/npf/npfctl/npf_build.c cvs rdiff -u -r1.23 -r1.24 src/usr.sbin/npf/npfctl/npf_data.c cvs rdiff -u -r1.34 -r1.35 src/usr.sbin/npf/npfctl/npfctl.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/lib/libnpf/npf.3 diff -u src/lib/libnpf/npf.3:1.14 src/lib/libnpf/npf.3:1.15 --- src/lib/libnpf/npf.3:1.14 Wed Jan 8 10:14:21 2014 +++ src/lib/libnpf/npf.3 Mon Feb 3 02:21:52 2014 @@ -1,4 +1,4 @@ -.\" $NetBSD: npf.3,v 1.14 2014/01/08 10:14:21 njoly Exp $ +.\" $NetBSD: npf.3,v 1.15 2014/02/03 02:21:52 rmind Exp $ .\" .\" Copyright (c) 2011-2013 The NetBSD Foundation, Inc. .\" All rights reserved. @@ -27,7 +27,7 @@ .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE .\" POSSIBILITY OF SUCH DAMAGE. .\" -.Dd November 12, 2013 +.Dd February 2, 2014 .Dt NPF 3 .Os .Sh NAME @@ -82,8 +82,6 @@ .Ft int .Fn npf_table_add_entry "nl_table_t *tl" "int af" \ "in_addr_t addr" "in_addr_t mask" -.Ft bool -.Fn npf_table_exists_p "nl_config_t *ncf" "u_int tid" .Ft int .Fn npf_table_insert "nl_config_t *ncf" "nl_table_t *tl" .Ft void @@ -290,16 +288,6 @@ must be either for IPv4 or .Dv AF_INET6 for IPv6 address. -.It Fn npf_table_exists_p "ncf" "name" -Determine whether table with ID -.Fa tid -exists in the configuration -.Fa ncf . -Return -.Dv true -if exists, and -.Dv false -otherwise. .It Fn npf_table_insert "ncf" "tl" Insert table into set of configuration. Routine performs a check for duplicate table ID. Index: src/lib/libnpf/npf.c diff -u src/lib/libnpf/npf.c:1.24 src/lib/libnpf/npf.c:1.25 --- src/lib/libnpf/npf.c:1.24 Fri Nov 22 00:25:51 2013 +++ src/lib/libnpf/npf.c Mon Feb 3 02:21:52 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: npf.c,v 1.24 2013/11/22 00:25:51 rmind Exp $ */ +/* $NetBSD: npf.c,v 1.25 2014/02/03 02:21:52 rmind Exp $ */ /*- * Copyright (c) 2010-2013 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: npf.c,v 1.24 2013/11/22 00:25:51 rmind Exp $"); +__KERNEL_RCSID(0, "$NetBSD: npf.c,v 1.25 2014/02/03 02:21:52 rmind Exp $"); #include <sys/types.h> #include <netinet/in_systm.h> @@ -961,8 +961,8 @@ npf_table_add_entry(nl_table_t *tl, int return 0; } -bool -npf_table_exists_p(nl_config_t *ncf, const char *name) +static bool +_npf_table_exists_p(nl_config_t *ncf, const char *name) { prop_dictionary_t tldict; prop_object_iterator_t it; @@ -988,7 +988,7 @@ npf_table_insert(nl_config_t *ncf, nl_ta if (!prop_dictionary_get_cstring_nocopy(tldict, "name", &name)) { return EINVAL; } - if (npf_table_exists_p(ncf, name)) { + if (_npf_table_exists_p(ncf, name)) { return EEXIST; } prop_array_add(ncf->ncf_table_list, tldict); Index: src/lib/libnpf/npf.h diff -u src/lib/libnpf/npf.h:1.21 src/lib/libnpf/npf.h:1.22 --- src/lib/libnpf/npf.h:1.21 Fri Nov 22 00:25:51 2013 +++ src/lib/libnpf/npf.h Mon Feb 3 02:21:52 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: npf.h,v 1.21 2013/11/22 00:25:51 rmind Exp $ */ +/* $NetBSD: npf.h,v 1.22 2014/02/03 02:21:52 rmind Exp $ */ /*- * Copyright (c) 2011-2013 The NetBSD Foundation, Inc. @@ -111,7 +111,6 @@ int npf_nat_insert(nl_config_t *, nl_na nl_table_t * npf_table_create(const char *, u_int, int); int npf_table_add_entry(nl_table_t *, int, const npf_addr_t *, const npf_netmask_t); -bool npf_table_exists_p(nl_config_t *, const char *); int npf_table_insert(nl_config_t *, nl_table_t *); void npf_table_destroy(nl_table_t *); Index: src/usr.sbin/npf/npfctl/npf_build.c diff -u src/usr.sbin/npf/npfctl/npf_build.c:1.31 src/usr.sbin/npf/npfctl/npf_build.c:1.32 --- src/usr.sbin/npf/npfctl/npf_build.c:1.31 Fri Nov 22 00:25:51 2013 +++ src/usr.sbin/npf/npfctl/npf_build.c Mon Feb 3 02:21:52 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: npf_build.c,v 1.31 2013/11/22 00:25:51 rmind Exp $ */ +/* $NetBSD: npf_build.c,v 1.32 2014/02/03 02:21:52 rmind Exp $ */ /*- * Copyright (c) 2011-2013 The NetBSD Foundation, Inc. @@ -34,7 +34,7 @@ */ #include <sys/cdefs.h> -__RCSID("$NetBSD: npf_build.c,v 1.31 2013/11/22 00:25:51 rmind Exp $"); +__RCSID("$NetBSD: npf_build.c,v 1.32 2014/02/03 02:21:52 rmind Exp $"); #include <sys/types.h> #include <sys/ioctl.h> @@ -123,10 +123,25 @@ npfctl_debug_addif(const char *ifname) return 0; } -bool -npfctl_table_exists_p(const char *name) +unsigned +npfctl_table_getid(const char *name) { - return npf_conf ? npf_table_exists_p(npf_conf, name) : false; + unsigned tid = (unsigned)-1; + nl_table_t *tl; + + /* XXX dynamic ruleset */ + if (!npf_conf) { + return (unsigned)-1; + } + + /* XXX: Iterating all as we need to rewind for the next call. */ + while ((tl = npf_table_iterate(npf_conf)) != NULL) { + const char *tname = npf_table_getname(tl); + if (strcmp(tname, name) == 0) { + tid = npf_table_getid(tl); + } + } + return tid; } static in_port_t @@ -217,7 +232,8 @@ npfctl_build_vars(npf_bpf_t *ctx, sa_fam break; } case NPFVAR_TABLE: { - u_int tid = atoi(data); + u_int tid; + memcpy(&tid, data, sizeof(u_int)); npfctl_bpf_table(ctx, opts, tid); break; } Index: src/usr.sbin/npf/npfctl/npf_data.c diff -u src/usr.sbin/npf/npfctl/npf_data.c:1.23 src/usr.sbin/npf/npfctl/npf_data.c:1.24 --- src/usr.sbin/npf/npfctl/npf_data.c:1.23 Fri Nov 22 00:25:51 2013 +++ src/usr.sbin/npf/npfctl/npf_data.c Mon Feb 3 02:21:52 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: npf_data.c,v 1.23 2013/11/22 00:25:51 rmind Exp $ */ +/* $NetBSD: npf_data.c,v 1.24 2014/02/03 02:21:52 rmind Exp $ */ /*- * Copyright (c) 2009-2012 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__RCSID("$NetBSD: npf_data.c,v 1.23 2013/11/22 00:25:51 rmind Exp $"); +__RCSID("$NetBSD: npf_data.c,v 1.24 2014/02/03 02:21:52 rmind Exp $"); #include <sys/types.h> #include <sys/null.h> @@ -223,11 +223,14 @@ npfctl_parse_fam_addr_mask(const char *a npfvar_t * npfctl_parse_table_id(const char *name) { - if (!npfctl_table_exists_p(name)) { + u_int tid; + + tid = npfctl_table_getid(name); + if (tid == (unsigned)-1) { yyerror("table '%s' is not defined", name); return NULL; } - return npfvar_create_from_string(NPFVAR_TABLE, name); + return npfvar_create_element(NPFVAR_TABLE, &tid, sizeof(u_int)); } /* Index: src/usr.sbin/npf/npfctl/npfctl.h diff -u src/usr.sbin/npf/npfctl/npfctl.h:1.34 src/usr.sbin/npf/npfctl/npfctl.h:1.35 --- src/usr.sbin/npf/npfctl/npfctl.h:1.34 Fri Nov 8 00:38:26 2013 +++ src/usr.sbin/npf/npfctl/npfctl.h Mon Feb 3 02:21:52 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: npfctl.h,v 1.34 2013/11/08 00:38:26 rmind Exp $ */ +/* $NetBSD: npfctl.h,v 1.35 2014/02/03 02:21:52 rmind Exp $ */ /*- * Copyright (c) 2009-2013 The NetBSD Foundation, Inc. @@ -112,7 +112,7 @@ void npfctl_parse_string(const char *); void npfctl_print_error(const nl_error_t *); char * npfctl_print_addrmask(int, const npf_addr_t *, npf_netmask_t); void npfctl_note_interface(const char *); -bool npfctl_table_exists_p(const char *); +unsigned npfctl_table_getid(const char *); int npfctl_protono(const char *); in_port_t npfctl_portno(const char *); uint8_t npfctl_icmpcode(int, uint8_t, const char *);