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;
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to