This prevents to load nfacct/nfnetlink modules when not needed.
---
 src/connman.h |  2 --
 src/main.c    |  1 -
 src/nfacct.c  | 20 +++++++-------------
 3 files changed, 7 insertions(+), 16 deletions(-)

diff --git a/src/connman.h b/src/connman.h
index 5bb11eb..bf59dbf 100644
--- a/src/connman.h
+++ b/src/connman.h
@@ -986,6 +986,4 @@ int __connman_nfacct_disable(struct nfacct_context *ctx,
                                connman_nfacct_disable_cb_t cb,
                                void *user_data);
 
-
-int __connman_nfacct_init(void);
 void __connman_nfacct_cleanup(void);
diff --git a/src/main.c b/src/main.c
index 5eeade5..e795b52 100644
--- a/src/main.c
+++ b/src/main.c
@@ -656,7 +656,6 @@ int main(int argc, char *argv[])
 
        __connman_ippool_init();
        __connman_iptables_init();
-       __connman_nfacct_init();
        __connman_firewall_init();
        __connman_nat_init();
        __connman_tethering_init();
diff --git a/src/nfacct.c b/src/nfacct.c
index 7b803bd..f67c2ba 100644
--- a/src/nfacct.c
+++ b/src/nfacct.c
@@ -30,7 +30,7 @@
 #include "src/shared/nfacct.h"
 #include "src/shared/util.h"
 
-static struct nfacct_info *nfacct;
+static struct nfacct_info *nfacct = NULL;
 
 struct nfacct_rule {
        char *name;
@@ -188,13 +188,18 @@ int __connman_nfacct_enable(struct nfacct_context *ctx,
                                connman_nfacct_enable_cb_t cb,
                                void *user_data)
 {
-       struct cb_data *cbd;
+       struct cb_data *cbd = NULL;
        struct nfacct_rule *rule;
        GList *list;
        unsigned int id;
 
        DBG("");
 
+       if (!nfacct)
+               nfacct = nfacct_new();
+       if (!nfacct)
+               goto err;
+
        for (list = ctx->rules; list; list = list->next) {
                rule = list->data;
 
@@ -367,17 +372,6 @@ int __connman_nfacct_flush(connman_nfacct_flush_cb_t cb, 
void *user_data)
        return -ECOMM;
 }
 
-int __connman_nfacct_init(void)
-{
-       DBG("");
-
-       nfacct = nfacct_new();
-       if (!nfacct)
-               return -ENOMEM;
-
-       return 0;
-}
-
 void __connman_nfacct_cleanup(void)
 {
        nfacct_destroy(nfacct);
-- 
1.8.4.3

_______________________________________________
connman mailing list
[email protected]
https://lists.connman.net/mailman/listinfo/connman

Reply via email to