Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 14 Jun 2014 11:13:02 +0000 (UTC)
From:      "Alexander V. Chernikov" <melifaro@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r267469 - projects/ipfw/sys/netpfil/ipfw
Message-ID:  <201406141113.s5EBD2VR017317@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: melifaro
Date: Sat Jun 14 11:13:02 2014
New Revision: 267469
URL: http://svnweb.freebsd.org/changeset/base/267469

Log:
  Move most of external table structures/functions to separate ip_fw_table.h

Added:
  projects/ipfw/sys/netpfil/ipfw/ip_fw_table.h
Modified:
  projects/ipfw/sys/netpfil/ipfw/ip_fw_private.h
  projects/ipfw/sys/netpfil/ipfw/ip_fw_sockopt.c
  projects/ipfw/sys/netpfil/ipfw/ip_fw_table.c
  projects/ipfw/sys/netpfil/ipfw/ip_fw_table_algo.c

Modified: projects/ipfw/sys/netpfil/ipfw/ip_fw_private.h
==============================================================================
--- projects/ipfw/sys/netpfil/ipfw/ip_fw_private.h	Sat Jun 14 11:02:55 2014	(r267468)
+++ projects/ipfw/sys/netpfil/ipfw/ip_fw_private.h	Sat Jun 14 11:13:02 2014	(r267469)
@@ -385,84 +385,14 @@ struct table_info;
 
 typedef int (table_lookup_t)(struct table_info *ti, void *key, uint32_t keylen,
     uint32_t *val);
-struct table_info {
-	table_lookup_t	*lookup;	/* Lookup function */
-	void		*state;		/* Lookup radix/other structure */
-	void		*xstate;	/* eXtended state */
-	u_long		data;		/* Hints for given func */
-};
-
-typedef int (ta_init)(void **ta_state, struct table_info *ti);
-typedef void (ta_destroy)(void *ta_state, struct table_info *ti);
-typedef int (ta_prepare_add)(struct tentry_info *tei, void *ta_buf);
-typedef int (ta_prepare_del)(struct tentry_info *tei, void *ta_buf);
-typedef int (ta_add)(void *ta_state, struct table_info *ti,
-    struct tentry_info *tei, void *ta_buf);
-typedef int (ta_del)(void *ta_state, struct table_info *ti,
-    struct tentry_info *tei, void *ta_buf);
-typedef void (ta_flush_entry)(struct tentry_info *tei, void *ta_buf);
-
-typedef int ta_foreach_f(void *node, void *arg);
-typedef void ta_foreach(void *ta_state, struct table_info *ti, ta_foreach_f *f,
-  void *arg);
-typedef int ta_dump_entry(void *ta_state, struct table_info *ti, void *e,
-    ipfw_table_entry *ent);
-typedef int ta_dump_xentry(void *ta_state, struct table_info *ti, void *e,
-    ipfw_table_xentry *xent);
-
-struct table_algo {
-	char		name[64];
-	int		idx;
-	ta_init		*init;
-	ta_destroy	*destroy;
-	table_lookup_t	*lookup;
-	ta_prepare_add	*prepare_add;
-	ta_prepare_del	*prepare_del;
-	ta_add		*add;
-	ta_del		*del;
-	ta_flush_entry	*flush_entry;
-	ta_foreach	*foreach;
-	ta_dump_entry	*dump_entry;
-	ta_dump_xentry	*dump_xentry;
-};
-void ipfw_add_table_algo(struct ip_fw_chain *ch, struct table_algo *ta);
-extern struct table_algo radix_cidr, radix_iface;
 
-struct radix_node;
 int ipfw_lookup_table(struct ip_fw_chain *ch, uint16_t tbl, in_addr_t addr,
     uint32_t *val);
 int ipfw_lookup_table_extended(struct ip_fw_chain *ch, uint16_t tbl, uint16_t plen,
     void *paddr, uint32_t *val);
 int ipfw_init_tables(struct ip_fw_chain *ch);
-int ipfw_destroy_table(struct ip_fw_chain *ch, struct tid_info *ti);
-void ipfw_destroy_tables(struct ip_fw_chain *ch);
-int ipfw_flush_table(struct ip_fw_chain *ch, struct tid_info *ti);
-int ipfw_add_table_entry(struct ip_fw_chain *ch, struct tid_info *ti,
-    struct tentry_info *tei);
-int ipfw_del_table_entry(struct ip_fw_chain *ch, struct tid_info *ti,
-    struct tentry_info *tei);
-int ipfw_count_table(struct ip_fw_chain *ch, struct tid_info *ti,
-    uint32_t *cnt);
-int ipfw_count_xtable(struct ip_fw_chain *ch, struct tid_info *ti,
-    uint32_t *cnt);
-int ipfw_dump_table(struct ip_fw_chain *ch, struct tid_info *ti,
-    ipfw_table *tbl);
-int ipfw_dump_xtable(struct ip_fw_chain *ch, struct tid_info *ti,
-    ipfw_xtable *tbl);
-int ipfw_describe_table(struct ip_fw_chain *ch, struct tid_info *ti,
-    ipfw_xtable_info *i);
-int ipfw_count_tables(struct ip_fw_chain *ch, ipfw_obj_lheader *olh);
-int ipfw_list_tables(struct ip_fw_chain *ch, struct tid_info *ti,
-    ipfw_obj_lheader *olh);
 int ipfw_resize_tables(struct ip_fw_chain *ch, unsigned int ntables);
-int ipfw_rewrite_table_uidx(struct ip_fw_chain *chain,
-    struct rule_check_info *ci);
-int ipfw_rewrite_table_kidx(struct ip_fw_chain *chain, struct ip_fw *rule);
-void ipfw_unbind_table_rule(struct ip_fw_chain *chain, struct ip_fw *rule);
-void ipfw_unbind_table_list(struct ip_fw_chain *chain, struct ip_fw *head);
-
-void ipfw_table_algo_init(struct ip_fw_chain *chain);
-void ipfw_table_algo_destroy(struct ip_fw_chain *chain);
+void ipfw_destroy_tables(struct ip_fw_chain *ch);
 
 /* In ip_fw_nat.c -- XXX to be moved to ip_var.h */
 

Modified: projects/ipfw/sys/netpfil/ipfw/ip_fw_sockopt.c
==============================================================================
--- projects/ipfw/sys/netpfil/ipfw/ip_fw_sockopt.c	Sat Jun 14 11:02:55 2014	(r267468)
+++ projects/ipfw/sys/netpfil/ipfw/ip_fw_sockopt.c	Sat Jun 14 11:13:02 2014	(r267469)
@@ -63,6 +63,7 @@ __FBSDID("$FreeBSD$");
 #include <netinet/ip_fw.h>
 
 #include <netpfil/ipfw/ip_fw_private.h>
+#include <netpfil/ipfw/ip_fw_table.h>
 
 #ifdef MAC
 #include <security/mac/mac_framework.h>

Modified: projects/ipfw/sys/netpfil/ipfw/ip_fw_table.c
==============================================================================
--- projects/ipfw/sys/netpfil/ipfw/ip_fw_table.c	Sat Jun 14 11:02:55 2014	(r267468)
+++ projects/ipfw/sys/netpfil/ipfw/ip_fw_table.c	Sat Jun 14 11:13:02 2014	(r267469)
@@ -40,11 +40,6 @@ __FBSDID("$FreeBSD$");
  */
 
 #include "opt_ipfw.h"
-#include "opt_inet.h"
-#ifndef INET
-#error IPFIREWALL requires INET.
-#endif /* INET */
-#include "opt_inet6.h"
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -55,7 +50,6 @@ __FBSDID("$FreeBSD$");
 #include <sys/socket.h>
 #include <sys/queue.h>
 #include <net/if.h>	/* ip_fw.h requires IFNAMSIZ */
-#include <net/radix.h>
 #include <net/route.h>
 #include <net/vnet.h>
 
@@ -64,6 +58,7 @@ __FBSDID("$FreeBSD$");
 #include <netinet/ip_fw.h>
 
 #include <netpfil/ipfw/ip_fw_private.h>
+#include <netpfil/ipfw/ip_fw_table.h>
 
 
  /*

Added: projects/ipfw/sys/netpfil/ipfw/ip_fw_table.h
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/ipfw/sys/netpfil/ipfw/ip_fw_table.h	Sat Jun 14 11:13:02 2014	(r267469)
@@ -0,0 +1,110 @@
+/*-
+ * Copyright (c) 2002-2009 Luigi Rizzo, Universita` di Pisa
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD: projects/ipfw/sys/netpfil/ipfw/ip_fw_private.h 267467 2014-06-14 10:58:39Z melifaro $
+ */
+
+#ifndef _IPFW2_TABLE_H
+#define _IPFW2_TABLE_H
+
+/*
+ * Internal constants and data structures used by ipfw tables
+ * and not meant to be exported outside the kernel.
+ */
+#ifdef _KERNEL
+
+struct table_info {
+	table_lookup_t	*lookup;	/* Lookup function */
+	void		*state;		/* Lookup radix/other structure */
+	void		*xstate;	/* eXtended state */
+	u_long		data;		/* Hints for given func */
+};
+
+typedef int (ta_init)(void **ta_state, struct table_info *ti);
+typedef void (ta_destroy)(void *ta_state, struct table_info *ti);
+typedef int (ta_prepare_add)(struct tentry_info *tei, void *ta_buf);
+typedef int (ta_prepare_del)(struct tentry_info *tei, void *ta_buf);
+typedef int (ta_add)(void *ta_state, struct table_info *ti,
+    struct tentry_info *tei, void *ta_buf);
+typedef int (ta_del)(void *ta_state, struct table_info *ti,
+    struct tentry_info *tei, void *ta_buf);
+typedef void (ta_flush_entry)(struct tentry_info *tei, void *ta_buf);
+
+typedef int ta_foreach_f(void *node, void *arg);
+typedef void ta_foreach(void *ta_state, struct table_info *ti, ta_foreach_f *f,
+  void *arg);
+typedef int ta_dump_entry(void *ta_state, struct table_info *ti, void *e,
+    ipfw_table_entry *ent);
+typedef int ta_dump_xentry(void *ta_state, struct table_info *ti, void *e,
+    ipfw_table_xentry *xent);
+
+struct table_algo {
+	char		name[64];
+	int		idx;
+	ta_init		*init;
+	ta_destroy	*destroy;
+	table_lookup_t	*lookup;
+	ta_prepare_add	*prepare_add;
+	ta_prepare_del	*prepare_del;
+	ta_add		*add;
+	ta_del		*del;
+	ta_flush_entry	*flush_entry;
+	ta_foreach	*foreach;
+	ta_dump_entry	*dump_entry;
+	ta_dump_xentry	*dump_xentry;
+};
+void ipfw_add_table_algo(struct ip_fw_chain *ch, struct table_algo *ta);
+extern struct table_algo radix_cidr, radix_iface;
+
+int ipfw_destroy_table(struct ip_fw_chain *ch, struct tid_info *ti);
+int ipfw_flush_table(struct ip_fw_chain *ch, struct tid_info *ti);
+int ipfw_add_table_entry(struct ip_fw_chain *ch, struct tid_info *ti,
+    struct tentry_info *tei);
+int ipfw_del_table_entry(struct ip_fw_chain *ch, struct tid_info *ti,
+    struct tentry_info *tei);
+int ipfw_count_table(struct ip_fw_chain *ch, struct tid_info *ti,
+    uint32_t *cnt);
+int ipfw_count_xtable(struct ip_fw_chain *ch, struct tid_info *ti,
+    uint32_t *cnt);
+int ipfw_dump_table(struct ip_fw_chain *ch, struct tid_info *ti,
+    ipfw_table *tbl);
+int ipfw_dump_xtable(struct ip_fw_chain *ch, struct tid_info *ti,
+    ipfw_xtable *tbl);
+int ipfw_describe_table(struct ip_fw_chain *ch, struct tid_info *ti,
+    ipfw_xtable_info *i);
+int ipfw_count_tables(struct ip_fw_chain *ch, ipfw_obj_lheader *olh);
+int ipfw_list_tables(struct ip_fw_chain *ch, struct tid_info *ti,
+    ipfw_obj_lheader *olh);
+int ipfw_rewrite_table_uidx(struct ip_fw_chain *chain,
+    struct rule_check_info *ci);
+int ipfw_rewrite_table_kidx(struct ip_fw_chain *chain, struct ip_fw *rule);
+void ipfw_unbind_table_rule(struct ip_fw_chain *chain, struct ip_fw *rule);
+void ipfw_unbind_table_list(struct ip_fw_chain *chain, struct ip_fw *head);
+
+void ipfw_table_algo_init(struct ip_fw_chain *chain);
+void ipfw_table_algo_destroy(struct ip_fw_chain *chain);
+
+
+#endif /* _KERNEL */
+#endif /* _IPFW2_TABLE_H */

Modified: projects/ipfw/sys/netpfil/ipfw/ip_fw_table_algo.c
==============================================================================
--- projects/ipfw/sys/netpfil/ipfw/ip_fw_table_algo.c	Sat Jun 14 11:02:55 2014	(r267468)
+++ projects/ipfw/sys/netpfil/ipfw/ip_fw_table_algo.c	Sat Jun 14 11:13:02 2014	(r267469)
@@ -64,6 +64,7 @@ __FBSDID("$FreeBSD: projects/ipfw/sys/ne
 #include <netinet/ip_fw.h>
 
 #include <netpfil/ipfw/ip_fw_private.h>
+#include <netpfil/ipfw/ip_fw_table.h>
 
 static MALLOC_DEFINE(M_IPFW_TBL, "ipfw_tbl", "IpFw tables");
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201406141113.s5EBD2VR017317>