Print this page
More stats to SIOCIPFCFWCFG and add SIOCIPFCFWNEWSZ to affect ring-buffer size.

@@ -114,11 +114,12 @@
 #endif
 #define SIOCADDFR       SIOCADAFR
 #define SIOCDELFR       SIOCRMAFR
 #define SIOCINSFR       SIOCINAFR
 # define        SIOCIPFZONESET  _IOWR('r', 97, struct ipfzoneobj)
-# define        SIOCIPFCFWCFG   _IOWR('r', 98, struct ipfcfwcfg)
+# define        SIOCIPFCFWCFG   _IOR('r', 98, struct ipfcfwcfg)
+# define        SIOCIPFCFWNEWSZ _IOWR('r', 99, struct ipfcfwcfg)
 
 /*
  * What type of table is getting flushed?
  */
 

@@ -1187,12 +1188,21 @@
         char            ipfz_zonename[ZONENAME_MAX];    /* zone to act on */
 } ipfzoneobj_t;
 
 /* ioctl to grab CFW logging parameters */
 typedef struct ipfcfwcfg {
+        /* CFG => Max event size, NEWSZ => ignored in, like CFG out. */
         uint32_t ipfcfwc_maxevsize;
+        /*
+         * CFG => Current ring size,
+         * NEWSZ => New ring size, must be 2^N for 10 <= N <= 31.
+         */
         uint32_t ipfcfwc_evringsize;
+        /* CFG => Number of event reports, NEWSZ => ignored in, like CFG out. */
+        uint64_t ipfcfwc_evreports;
+        /* CFG => Number of event drops, NEWSZ => ignored in, like CFG out. */
+        uint64_t ipfcfwc_evdrops;
 } ipfcfwcfg_t;
 
 #if defined(_KERNEL)
 /* Set ipfs_zoneid to this if no zone has been set: */
 #define IPFS_ZONE_UNSET -2

@@ -1585,10 +1595,13 @@
 typedef uint_t (*cfwmanycb_t) __P((struct cfwev_s *, uint_t, void *));
 extern uint_t
         ipf_cfwev_consume_many __P((uint_t, boolean_t, cfwmanycb_t, void *));
 extern int ipf_cfwlog_read __P((dev_t, struct uio *, struct cred *));
 extern int ipf_cfwlog_ioctl __P((dev_t, int, intptr_t, int, cred_t *, int *));
+#define IPF_CFW_RING_ALLOCATE 0
+#define IPF_CFW_RING_DESTROY 1
+extern int ipf_cfw_ring_resize(uint32_t);
 
 extern  frentry_t       *fr_acctpkt __P((fr_info_t *, u_32_t *));
 extern  int             fr_copytolog __P((int, char *, int));
 extern  u_short         fr_cksum __P((mb_t *, ip_t *, int, void *));
 extern  void            fr_deinitialise __P((ipf_stack_t *));