netfilter: xt_quota2: make quota2_log work well
authorLiping Zhang <liping.zhang@spreadtrum.com>
Wed, 22 Jun 2016 08:49:48 +0000 (16:49 +0800)
committerAmit Pundir <amit.pundir@linaro.org>
Mon, 11 Jul 2016 07:13:04 +0000 (12:43 +0530)
In upstream commit 7200135bc1e61f1437dc326ae2ef2f310c50b4eb
(netfilter: kill ulog targets)
http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=7200135bc1e6

ipt_ULOG target was removed, meanwhile, the IP_NF_TARGET_ULOG Kconfig
and ipt_ULOG.h header file were removed too. This causes we cannot enable
QUOTA2_LOG, and netd complains this error: "Unable to open quota socket".
So when we reach the quota2 limit, userspace will not be notified with
this event.

Since IP_NF_TARGET_ULOG was removed, we need not depend on
"IP_NF_TARGET_ULOG=n", and for compatibility, add ulog_packet_msg_t
related definitions copied from "ipt_ULOG.h".

Change-Id: I38132efaabf52bea75dfd736ce734a1b9690e87e
Reported-by: Samboo Shen <samboo.shen@spreadtrum.com>
Signed-off-by: Liping Zhang <liping.zhang@spreadtrum.com>
net/netfilter/Kconfig
net/netfilter/xt_quota2.c

index 273f26b67653e6561c475288cccbb5491aca0410..1959548b11618d7b857ebb81d0919276f3fa1e82 100644 (file)
@@ -1354,7 +1354,6 @@ config NETFILTER_XT_MATCH_QUOTA2
 config NETFILTER_XT_MATCH_QUOTA2_LOG
        bool '"quota2" Netfilter LOG support'
        depends on NETFILTER_XT_MATCH_QUOTA2
-       depends on IP_NF_TARGET_ULOG=n    # not yes, not module, just no
        default n
        help
          This option allows `quota2' to log ONCE when a quota limit
index 99592ae56d9b0d6743cc3eaf7127f1452f4052de..834594aa0085fdc893d5a90164eb2a035a2d1b8a 100644 (file)
 
 #include <linux/netfilter/x_tables.h>
 #include <linux/netfilter/xt_quota2.h>
+
 #ifdef CONFIG_NETFILTER_XT_MATCH_QUOTA2_LOG
-#include <linux/netfilter_ipv4/ipt_ULOG.h>
+/* For compatibility, these definitions are copied from the
+ * deprecated header file <linux/netfilter_ipv4/ipt_ULOG.h> */
+#define ULOG_MAC_LEN   80
+#define ULOG_PREFIX_LEN        32
+
+/* Format of the ULOG packets passed through netlink */
+typedef struct ulog_packet_msg {
+       unsigned long mark;
+       long timestamp_sec;
+       long timestamp_usec;
+       unsigned int hook;
+       char indev_name[IFNAMSIZ];
+       char outdev_name[IFNAMSIZ];
+       size_t data_len;
+       char prefix[ULOG_PREFIX_LEN];
+       unsigned char mac_len;
+       unsigned char mac[ULOG_MAC_LEN];
+       unsigned char payload[0];
+} ulog_packet_msg_t;
 #endif
 
 /**