svn commit: r298702 - head/sys/netpfil/ipfw

Andrey V. Elsukov ae at FreeBSD.org
Wed Apr 27 15:28:27 UTC 2016


Author: ae
Date: Wed Apr 27 15:28:25 2016
New Revision: 298702
URL: https://svnweb.freebsd.org/changeset/base/298702

Log:
  Make create_object callback optional and return EOPNOTSUPP when it isn't
  defined. Remove eaction_create_compat() and use designated initializers to
  initialize eaction_opcodes structure.
  
  Obtained from:	Yandex LLC

Modified:
  head/sys/netpfil/ipfw/ip_fw_eaction.c
  head/sys/netpfil/ipfw/ip_fw_sockopt.c

Modified: head/sys/netpfil/ipfw/ip_fw_eaction.c
==============================================================================
--- head/sys/netpfil/ipfw/ip_fw_eaction.c	Wed Apr 27 15:27:23 2016	(r298701)
+++ head/sys/netpfil/ipfw/ip_fw_eaction.c	Wed Apr 27 15:28:25 2016	(r298702)
@@ -151,20 +151,14 @@ eaction_findbykidx(struct ip_fw_chain *c
 	return (ipfw_objhash_lookup_kidx(CHAIN_TO_SRV(ch), idx));
 }
 
-static int
-eaction_create_compat(struct ip_fw_chain *ch, struct tid_info *ti,
-    uint16_t *pkidx)
-{
-
-	return (EOPNOTSUPP);
-}
-
 static struct opcode_obj_rewrite eaction_opcodes[] = {
 	{
-		O_EXTERNAL_ACTION, IPFW_TLV_EACTION,
-		eaction_classify, eaction_update,
-		eaction_findbyname, eaction_findbykidx,
-		eaction_create_compat
+		.opcode = O_EXTERNAL_ACTION,
+		.etlv = IPFW_TLV_EACTION,
+		.classifier = eaction_classify,
+		.update = eaction_update,
+		.find_byname = eaction_findbyname,
+		.find_bykidx = eaction_findbykidx,
 	},
 };
 

Modified: head/sys/netpfil/ipfw/ip_fw_sockopt.c
==============================================================================
--- head/sys/netpfil/ipfw/ip_fw_sockopt.c	Wed Apr 27 15:27:23 2016	(r298701)
+++ head/sys/netpfil/ipfw/ip_fw_sockopt.c	Wed Apr 27 15:28:25 2016	(r298702)
@@ -2236,7 +2236,10 @@ create_objects_compat(struct ip_fw_chain
 		KASSERT(rw != NULL, ("Unable to find handler for op %d",
 		    (cmd + p->off)->opcode));
 
-		error = rw->create_object(ch, ti, &kidx);
+		if (rw->create_object == NULL)
+			error = EOPNOTSUPP;
+		else
+			error = rw->create_object(ch, ti, &kidx);
 		if (error == 0) {
 			p->kidx = kidx;
 			continue;


More information about the svn-src-head mailing list