* [PATCH nft 0/3] include: Remove datatype_register(), __init and __exit macros.
@ 2017-06-30 9:24 Varsha Rao
2017-06-30 9:26 ` [PATCH nft 1/3] include: Remove datatype_register() Varsha Rao
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Varsha Rao @ 2017-06-30 9:24 UTC (permalink / raw)
To: pablo; +Cc: netfilter-devel
This patchset removes datatype_register() function, __init and __exit
macro definitions.
Varsha Rao (3):
include: Remove datatype_register().
include: Remove __init macro definition.
include: Remove __exit macro definition.
include/ct.h | 3 +++
include/datatype.h | 1 -
include/exthdr.h | 1 +
include/fib.h | 2 ++
include/meta.h | 7 ++++++-
include/nftables.h | 18 ++++++++++++++++++
include/proto.h | 8 ++++++++
include/rt.h | 1 +
include/utils.h | 2 --
src/ct.c | 17 +++++------------
src/datatype.c | 29 +++++++++++++++++++++--------
src/exthdr.c | 7 +------
src/fib.c | 7 +------
src/gmputil.c | 2 +-
src/main.c | 26 ++++++++++++++++++++++++++
src/meta.c | 52 +++++++++-------------------------------------------
src/netlink.c | 4 ++--
src/proto.c | 24 ++++++------------------
src/rt.c | 11 +++--------
src/xt.c | 2 +-
20 files changed, 115 insertions(+), 109 deletions(-)
--
2.9.4
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH nft 1/3] include: Remove datatype_register().
2017-06-30 9:24 [PATCH nft 0/3] include: Remove datatype_register(), __init and __exit macros Varsha Rao
@ 2017-06-30 9:26 ` Varsha Rao
2017-06-30 10:45 ` Pablo Neira Ayuso
2017-06-30 9:27 ` [PATCH nft 2/3] include: Remove __init macro definition Varsha Rao
2017-06-30 9:28 ` [PATCH nft 3/3] include: Remove __exit " Varsha Rao
2 siblings, 1 reply; 6+ messages in thread
From: Varsha Rao @ 2017-06-30 9:26 UTC (permalink / raw)
To: pablo; +Cc: netfilter-devel
Remove datatype_register() function and its calling __init functions.
Add arguments of datatype_register() function to datatype array.
Signed-off-by: Varsha Rao <rvarsha016@gmail.com>
---
include/ct.h | 3 +++
include/datatype.h | 1 -
include/exthdr.h | 1 +
include/fib.h | 2 ++
include/meta.h | 7 ++++++-
include/proto.h | 8 ++++++++
include/rt.h | 1 +
src/ct.c | 13 +++----------
src/datatype.c | 25 +++++++++++++++++++------
src/exthdr.c | 7 +------
src/fib.c | 7 +------
src/meta.c | 44 +++++---------------------------------------
src/proto.c | 24 ++++++------------------
src/rt.c | 7 +------
14 files changed, 57 insertions(+), 93 deletions(-)
diff --git a/include/ct.h b/include/ct.h
index ae900ee..b8cd7bf 100644
--- a/include/ct.h
+++ b/include/ct.h
@@ -23,6 +23,9 @@ struct ct_template {
.len = (__len), \
}
+extern const struct datatype ct_dir_type;
+extern const struct datatype ct_state_type;
+extern const struct datatype ct_status_type;
extern struct expr *ct_expr_alloc(const struct location *loc,
enum nft_ct_keys key, int8_t direction);
extern void ct_expr_update_type(struct proto_ctx *ctx, struct expr *expr);
diff --git a/include/datatype.h b/include/datatype.h
index 58c4d3e..2e34591 100644
--- a/include/datatype.h
+++ b/include/datatype.h
@@ -152,7 +152,6 @@ struct datatype {
const struct symbol_table *sym_tbl;
};
-extern void datatype_register(const struct datatype *dtype);
extern const struct datatype *datatype_lookup(enum datatypes type);
extern const struct datatype *datatype_lookup_byname(const char *name);
diff --git a/include/exthdr.h b/include/exthdr.h
index a2647ee..97ccc38 100644
--- a/include/exthdr.h
+++ b/include/exthdr.h
@@ -89,5 +89,6 @@ extern const struct exthdr_desc exthdr_rt2;
extern const struct exthdr_desc exthdr_frag;
extern const struct exthdr_desc exthdr_dst;
extern const struct exthdr_desc exthdr_mh;
+extern const struct datatype mh_type_type;
#endif /* NFTABLES_EXTHDR_H */
diff --git a/include/fib.h b/include/fib.h
index 3a019e6..9ce681c 100644
--- a/include/fib.h
+++ b/include/fib.h
@@ -4,4 +4,6 @@
extern struct expr *fib_expr_alloc(const struct location *loc,
unsigned int flags,
unsigned int result);
+extern const struct datatype fib_addr_type;
+
#endif /* NFTABLES_FIB_H */
diff --git a/include/meta.h b/include/meta.h
index 5578460..ebef7d8 100644
--- a/include/meta.h
+++ b/include/meta.h
@@ -28,7 +28,12 @@ extern struct expr *meta_expr_alloc(const struct location *loc,
struct stmt *meta_stmt_meta_iiftype(const struct location *loc, uint16_t type);
-const struct datatype ifindex_type;
+extern const struct datatype ifindex_type;
+extern const struct datatype tchandle_type;
+extern const struct datatype gid_type;
+extern const struct datatype uid_type;
+extern const struct datatype devgroup_type;
+extern const struct datatype pkttype_type;
struct error_record *meta_key_parse(const struct location *loc,
const char *name,
diff --git a/include/proto.h b/include/proto.h
index 01188ab..39aa485 100644
--- a/include/proto.h
+++ b/include/proto.h
@@ -322,4 +322,12 @@ extern const struct proto_desc proto_netdev;
extern const struct proto_desc proto_unknown;
extern const struct proto_hdr_template proto_unknown_template;
+extern const struct datatype icmp_type_type;
+extern const struct datatype tcp_flag_type;
+extern const struct datatype dccp_pkttype_type;
+extern const struct datatype arpop_type;
+extern const struct datatype icmp6_type_type;
+extern const struct datatype dscp_type;
+extern const struct datatype ecn_type;
+
#endif /* NFTABLES_PROTO_H */
diff --git a/include/rt.h b/include/rt.h
index 728cf5f..bbffa74 100644
--- a/include/rt.h
+++ b/include/rt.h
@@ -26,6 +26,7 @@ struct rt_template {
.invalid = (__invalid), \
}
+extern const struct datatype realm_type;
extern struct expr *rt_expr_alloc(const struct location *loc,
enum nft_rt_keys key, bool invalid);
extern void rt_expr_update_type(struct proto_ctx *ctx, struct expr *expr);
diff --git a/src/ct.c b/src/ct.c
index c705750..9b7140b 100644
--- a/src/ct.c
+++ b/src/ct.c
@@ -44,7 +44,7 @@ static const struct symbol_table ct_state_tbl = {
}
};
-static const struct datatype ct_state_type = {
+const struct datatype ct_state_type = {
.type = TYPE_CT_STATE,
.name = "ct_state",
.desc = "conntrack state",
@@ -63,7 +63,7 @@ static const struct symbol_table ct_dir_tbl = {
}
};
-static const struct datatype ct_dir_type = {
+const struct datatype ct_dir_type = {
.type = TYPE_CT_DIR,
.name = "ct_dir",
.desc = "conntrack direction",
@@ -90,7 +90,7 @@ static const struct symbol_table ct_status_tbl = {
},
};
-static const struct datatype ct_status_type = {
+const struct datatype ct_status_type = {
.type = TYPE_CT_STATUS,
.name = "ct_status",
.desc = "conntrack status",
@@ -485,10 +485,3 @@ struct stmt *notrack_stmt_alloc(const struct location *loc)
{
return stmt_alloc(loc, ¬rack_stmt_ops);
}
-
-static void __init ct_init(void)
-{
- datatype_register(&ct_state_type);
- datatype_register(&ct_dir_type);
- datatype_register(&ct_status_type);
-}
diff --git a/src/datatype.c b/src/datatype.c
index 899e9c0..b3c8f66 100644
--- a/src/datatype.c
+++ b/src/datatype.c
@@ -40,23 +40,36 @@ static const struct datatype *datatypes[TYPE_MAX + 1] = {
[TYPE_IP6ADDR] = &ip6addr_type,
[TYPE_ETHERADDR] = ðeraddr_type,
[TYPE_ETHERTYPE] = ðertype_type,
+ [TYPE_ARPOP] = &arpop_type,
[TYPE_INET_PROTOCOL] = &inet_protocol_type,
[TYPE_INET_SERVICE] = &inet_service_type,
+ [TYPE_ICMP_TYPE] = &icmp_type_type,
+ [TYPE_TCP_FLAG] = &tcp_flag_type,
+ [TYPE_DCCP_PKTTYPE] = &dccp_pkttype_type,
+ [TYPE_MH_TYPE] = &mh_type_type,
[TYPE_TIME] = &time_type,
[TYPE_MARK] = &mark_type,
+ [TYPE_IFINDEX] = &ifindex_type,
[TYPE_ARPHRD] = &arphrd_type,
+ [TYPE_REALM] = &realm_type,
+ [TYPE_CLASSID] = &tchandle_type,
+ [TYPE_UID] = &uid_type,
+ [TYPE_GID] = &gid_type,
+ [TYPE_CT_STATE] = &ct_state_type,
+ [TYPE_CT_DIR] = &ct_dir_type,
+ [TYPE_CT_STATUS] = &ct_status_type,
+ [TYPE_ICMP6_TYPE] = &icmp6_type_type,
+ [TYPE_PKTTYPE] = &pkttype_type,
[TYPE_ICMP_CODE] = &icmp_code_type,
[TYPE_ICMPV6_CODE] = &icmpv6_code_type,
[TYPE_ICMPX_CODE] = &icmpx_code_type,
+ [TYPE_DEVGROUP] = &devgroup_type,
+ [TYPE_DSCP] = &dscp_type,
+ [TYPE_ECN] = &ecn_type,
+ [TYPE_FIB_ADDR] = &fib_addr_type,
[TYPE_BOOLEAN] = &boolean_type,
};
-void datatype_register(const struct datatype *dtype)
-{
- BUILD_BUG_ON(TYPE_MAX & ~TYPE_MASK);
- datatypes[dtype->type] = dtype;
-}
-
const struct datatype *datatype_lookup(enum datatypes type)
{
if (type > TYPE_MAX)
diff --git a/src/exthdr.c b/src/exthdr.c
index f31deea..a678115 100644
--- a/src/exthdr.c
+++ b/src/exthdr.c
@@ -322,7 +322,7 @@ static const struct symbol_table mh_type_tbl = {
},
};
-static const struct datatype mh_type_type = {
+const struct datatype mh_type_type = {
.type = TYPE_MH_TYPE,
.name = "mh_type",
.desc = "Mobility Header Type",
@@ -343,8 +343,3 @@ const struct exthdr_desc exthdr_mh = {
[MHHDR_CHECKSUM] = MH_FIELD("checksum", ip6mh_cksum, &integer_type),
},
};
-
-static void __init exthdr_init(void)
-{
- datatype_register(&mh_type_type);
-}
diff --git a/src/fib.c b/src/fib.c
index 28d2b1d..b3488af 100644
--- a/src/fib.c
+++ b/src/fib.c
@@ -42,7 +42,7 @@ static const struct symbol_table addrtype_tbl = {
}
};
-static const struct datatype fib_addr_type = {
+const struct datatype fib_addr_type = {
.type = TYPE_FIB_ADDR,
.name = "fib_addrtype",
.desc = "fib address type",
@@ -141,8 +141,3 @@ struct expr *fib_expr_alloc(const struct location *loc,
return expr;
}
-
-static void __init fib_init(void)
-{
- datatype_register(&fib_addr_type);
-}
diff --git a/src/meta.c b/src/meta.c
index a303318..e9334b8 100644
--- a/src/meta.c
+++ b/src/meta.c
@@ -47,29 +47,6 @@ static void __exit realm_table_exit(void)
rt_symbol_table_free(realm_tbl);
}
-static void realm_type_print(const struct expr *expr, struct output_ctx *octx)
-{
- return symbolic_constant_print(realm_tbl, expr, true, octx);
-}
-
-static struct error_record *realm_type_parse(const struct expr *sym,
- struct expr **res)
-{
- return symbolic_constant_parse(sym, realm_tbl, res);
-}
-
-static const struct datatype realm_type = {
- .type = TYPE_REALM,
- .name = "realm",
- .desc = "routing realm",
- .byteorder = BYTEORDER_HOST_ENDIAN,
- .size = 4 * BITS_PER_BYTE,
- .basetype = &integer_type,
- .print = realm_type_print,
- .parse = realm_type_parse,
- .flags = DTYPE_F_PREFIX,
-};
-
static void tchandle_type_print(const struct expr *expr,
struct output_ctx *octx)
{
@@ -139,7 +116,7 @@ err:
return error(&sym->location, "Could not parse %s", sym->dtype->desc);
}
-static const struct datatype tchandle_type = {
+const struct datatype tchandle_type = {
.type = TYPE_CLASSID,
.name = "classid",
.desc = "TC classid",
@@ -264,7 +241,7 @@ static struct error_record *uid_type_parse(const struct expr *sym,
return NULL;
}
-static const struct datatype uid_type = {
+const struct datatype uid_type = {
.type = TYPE_UID,
.name = "uid",
.desc = "user ID",
@@ -316,7 +293,7 @@ static struct error_record *gid_type_parse(const struct expr *sym,
return NULL;
}
-static const struct datatype gid_type = {
+const struct datatype gid_type = {
.type = TYPE_GID,
.name = "gid",
.desc = "group ID",
@@ -344,7 +321,7 @@ static void pkttype_type_print(const struct expr *expr, struct output_ctx *octx)
return symbolic_constant_print(&pkttype_type_tbl, expr, false, octx);
}
-static const struct datatype pkttype_type = {
+const struct datatype pkttype_type = {
.type = TYPE_PKTTYPE,
.name = "pkt_type",
.desc = "packet type",
@@ -378,7 +355,7 @@ static struct error_record *devgroup_type_parse(const struct expr *sym,
return symbolic_constant_parse(sym, devgroup_tbl, res);
}
-static const struct datatype devgroup_type = {
+const struct datatype devgroup_type = {
.type = TYPE_DEVGROUP,
.name = "devgroup",
.desc = "devgroup name",
@@ -621,17 +598,6 @@ struct stmt *meta_stmt_alloc(const struct location *loc, enum nft_meta_keys key,
return stmt;
}
-static void __init meta_init(void)
-{
- datatype_register(&ifindex_type);
- datatype_register(&realm_type);
- datatype_register(&tchandle_type);
- datatype_register(&uid_type);
- datatype_register(&gid_type);
- datatype_register(&devgroup_type);
- datatype_register(&pkttype_type);
-}
-
/*
* @expr: payload expression
* @res: dependency expression
diff --git a/src/proto.c b/src/proto.c
index 64d0632..7ac0ee0 100644
--- a/src/proto.c
+++ b/src/proto.c
@@ -406,7 +406,7 @@ static const struct symbol_table tcp_flag_tbl = {
},
};
-static const struct datatype tcp_flag_type = {
+const struct datatype tcp_flag_type = {
.type = TYPE_TCP_FLAG,
.name = "tcp_flag",
.desc = "TCP flag",
@@ -467,7 +467,7 @@ static const struct symbol_table dccp_pkttype_tbl = {
},
};
-static const struct datatype dccp_pkttype_type = {
+const struct datatype dccp_pkttype_type = {
.type = TYPE_DCCP_PKTTYPE,
.name = "dccp_pkttype",
.desc = "DCCP packet type",
@@ -545,7 +545,7 @@ static const struct symbol_table dscp_type_tbl = {
},
};
-static const struct datatype dscp_type = {
+const struct datatype dscp_type = {
.type = TYPE_DSCP,
.name = "dscp",
.desc = "Differentiated Services Code Point",
@@ -567,7 +567,7 @@ static const struct symbol_table ecn_type_tbl = {
},
};
-static const struct datatype ecn_type = {
+const struct datatype ecn_type = {
.type = TYPE_ECN,
.name = "ecn",
.desc = "Explicit Congestion Notification",
@@ -662,7 +662,7 @@ static const struct symbol_table icmp6_type_tbl = {
},
};
-static const struct datatype icmp6_type_type = {
+const struct datatype icmp6_type_type = {
.type = TYPE_ICMP6_TYPE,
.name = "icmpv6_type",
.desc = "ICMPv6 type",
@@ -807,7 +807,7 @@ static const struct symbol_table arpop_tbl = {
},
};
-static const struct datatype arpop_type = {
+const struct datatype arpop_type = {
.type = TYPE_ARPOP,
.name = "arp_op",
.desc = "ARP operation",
@@ -960,15 +960,3 @@ const struct proto_desc proto_netdev = {
[0] = PROTO_META_TEMPLATE("protocol", ðertype_type, NFT_META_PROTOCOL, 16),
},
};
-
-static void __init proto_init(void)
-{
- datatype_register(&icmp_type_type);
- datatype_register(&tcp_flag_type);
- datatype_register(&dccp_pkttype_type);
- datatype_register(&arpop_type);
- datatype_register(ðertype_type);
- datatype_register(&icmp6_type_type);
- datatype_register(&dscp_type);
- datatype_register(&ecn_type);
-}
diff --git a/src/rt.c b/src/rt.c
index eb5f9c3..530ebe6 100644
--- a/src/rt.c
+++ b/src/rt.c
@@ -45,7 +45,7 @@ static struct error_record *realm_type_parse(const struct expr *sym,
return symbolic_constant_parse(sym, realm_tbl, res);
}
-static const struct datatype realm_type = {
+const struct datatype realm_type = {
.type = TYPE_REALM,
.name = "realm",
.desc = "routing realm",
@@ -134,8 +134,3 @@ void rt_expr_update_type(struct proto_ctx *ctx, struct expr *expr)
break;
}
}
-
-static void __init rt_init(void)
-{
- datatype_register(&realm_type);
-}
--
2.9.4
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH nft 2/3] include: Remove __init macro definition.
2017-06-30 9:24 [PATCH nft 0/3] include: Remove datatype_register(), __init and __exit macros Varsha Rao
2017-06-30 9:26 ` [PATCH nft 1/3] include: Remove datatype_register() Varsha Rao
@ 2017-06-30 9:27 ` Varsha Rao
2017-06-30 10:56 ` Pablo Neira Ayuso
2017-06-30 9:28 ` [PATCH nft 3/3] include: Remove __exit " Varsha Rao
2 siblings, 1 reply; 6+ messages in thread
From: Varsha Rao @ 2017-06-30 9:27 UTC (permalink / raw)
To: pablo; +Cc: netfilter-devel
Add nft_init function, which calls _init functions in main.c file.
Remove __init macro definition as libnftables library will be created
soon. Rename realm_table_init() function to avoid ambiguity as
realm_table_rt_init() and realm_table_meta_init() in rt.c and meta.c
files.
Signed-off-by: Varsha Rao <rvarsha016@gmail.com>
---
include/nftables.h | 9 +++++++++
include/utils.h | 1 -
src/ct.c | 2 +-
src/datatype.c | 2 +-
src/gmputil.c | 2 +-
src/main.c | 15 +++++++++++++++
src/meta.c | 4 ++--
src/netlink.c | 2 +-
src/rt.c | 2 +-
src/xt.c | 2 +-
10 files changed, 32 insertions(+), 9 deletions(-)
diff --git a/include/nftables.h b/include/nftables.h
index 26fd344..b188b9e 100644
--- a/include/nftables.h
+++ b/include/nftables.h
@@ -117,5 +117,14 @@ struct parser_state;
int nft_run(struct nft_ctx *nft, void *scanner, struct parser_state *state,
struct list_head *msgs);
+void ct_label_table_init(void);
+void mark_table_init(void);
+void gmp_init(void);
+void realm_table_rt_init(void);
+void devgroup_table_init(void);
+void netlink_open_sock(void);
+void realm_table_meta_init(void);
+void xt_init(void);
+void nft_init(void);
#endif /* NFTABLES_NFTABLES_H */
diff --git a/include/utils.h b/include/utils.h
index 3199388..0c3341b 100644
--- a/include/utils.h
+++ b/include/utils.h
@@ -32,7 +32,6 @@
#define __gmp_fmtstring(x, y)
#endif
-#define __init __attribute__((constructor))
#define __exit __attribute__((destructor))
#define __must_check __attribute__((warn_unused_result))
#define __noreturn __attribute__((__noreturn__))
diff --git a/src/ct.c b/src/ct.c
index 9b7140b..25efc70 100644
--- a/src/ct.c
+++ b/src/ct.c
@@ -205,7 +205,7 @@ static const struct datatype ct_label_type = {
.parse = ct_label_type_parse,
};
-static void __init ct_label_table_init(void)
+void ct_label_table_init(void)
{
ct_label_tbl = rt_symbol_table_init(CONNLABEL_CONF);
}
diff --git a/src/datatype.c b/src/datatype.c
index b3c8f66..4f74c06 100644
--- a/src/datatype.c
+++ b/src/datatype.c
@@ -717,7 +717,7 @@ void rt_symbol_table_free(struct symbol_table *tbl)
}
static struct symbol_table *mark_tbl;
-static void __init mark_table_init(void)
+void mark_table_init(void)
{
mark_tbl = rt_symbol_table_init("/etc/iproute2/rt_marks");
}
diff --git a/src/gmputil.c b/src/gmputil.c
index c763792..844ea61 100644
--- a/src/gmputil.c
+++ b/src/gmputil.c
@@ -207,7 +207,7 @@ static void *gmp_xrealloc(void *ptr, size_t old_size, size_t new_size)
return xrealloc(ptr, new_size);
}
-static void __init gmp_init(void)
+void gmp_init(void)
{
mp_set_memory_functions(xmalloc, gmp_xrealloc, NULL);
}
diff --git a/src/main.c b/src/main.c
index 7fbf00a..301bce0 100644
--- a/src/main.c
+++ b/src/main.c
@@ -262,6 +262,20 @@ err1:
return ret;
}
+void nft_init(void)
+{
+ mark_table_init();
+ realm_table_rt_init();
+ devgroup_table_init();
+ realm_table_meta_init();
+ ct_label_table_init();
+ netlink_open_sock();
+ gmp_init();
+#ifdef HAVE_LIBXTABLES
+ xt_init();
+#endif
+}
+
int main(int argc, char * const *argv)
{
struct parser_state state;
@@ -272,6 +286,7 @@ int main(int argc, char * const *argv)
bool interactive = false;
int i, val, rc = NFT_EXIT_SUCCESS;
+ nft_init();
while (1) {
val = getopt_long(argc, argv, OPTSTRING, options, NULL);
if (val == -1)
diff --git a/src/meta.c b/src/meta.c
index e9334b8..4fb26d5 100644
--- a/src/meta.c
+++ b/src/meta.c
@@ -37,7 +37,7 @@
#include <iface.h>
static struct symbol_table *realm_tbl;
-static void __init realm_table_init(void)
+void realm_table_meta_init(void)
{
realm_tbl = rt_symbol_table_init("/etc/iproute2/rt_realms");
}
@@ -333,7 +333,7 @@ const struct datatype pkttype_type = {
};
static struct symbol_table *devgroup_tbl;
-static void __init devgroup_table_init(void)
+void devgroup_table_init(void)
{
devgroup_tbl = rt_symbol_table_init("/etc/iproute2/group");
}
diff --git a/src/netlink.c b/src/netlink.c
index 880502c..3993aa1 100644
--- a/src/netlink.c
+++ b/src/netlink.c
@@ -61,7 +61,7 @@ static struct mnl_socket *nfsock_open(void)
return s;
}
-static void __init netlink_open_sock(void)
+void netlink_open_sock(void)
{
nf_sock = nfsock_open();
fcntl(mnl_socket_get_fd(nf_sock), F_SETFL, O_NONBLOCK);
diff --git a/src/rt.c b/src/rt.c
index 530ebe6..5f57cf0 100644
--- a/src/rt.c
+++ b/src/rt.c
@@ -24,7 +24,7 @@
#include <rule.h>
static struct symbol_table *realm_tbl;
-static void __init realm_table_init(void)
+void realm_table_rt_init(void)
{
realm_tbl = rt_symbol_table_init("/etc/iproute2/rt_realms");
}
diff --git a/src/xt.c b/src/xt.c
index e24b0af..9680f8e 100644
--- a/src/xt.c
+++ b/src/xt.c
@@ -351,7 +351,7 @@ static struct xtables_globals xt_nft_globals = {
.compat_rev = nft_xt_compatible_revision,
};
-static void __init xt_init(void)
+void xt_init(void)
{
/* Default to IPv4, but this changes in runtime */
xtables_init_all(&xt_nft_globals, NFPROTO_IPV4);
--
2.9.4
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH nft 3/3] include: Remove __exit macro definition.
2017-06-30 9:24 [PATCH nft 0/3] include: Remove datatype_register(), __init and __exit macros Varsha Rao
2017-06-30 9:26 ` [PATCH nft 1/3] include: Remove datatype_register() Varsha Rao
2017-06-30 9:27 ` [PATCH nft 2/3] include: Remove __init macro definition Varsha Rao
@ 2017-06-30 9:28 ` Varsha Rao
2 siblings, 0 replies; 6+ messages in thread
From: Varsha Rao @ 2017-06-30 9:28 UTC (permalink / raw)
To: pablo; +Cc: netfilter-devel
Add nft_exit function, which calls _exit functions in main.c file.
Remove __exit macro definition as libnftables library will be created
soon. Rename realm_table_exit() function to avoid ambiguity as
realm_table_rt_exit() and realm_table_meta_exit() in rt.c and meta.c
files.
Signed-off-by: Varsha Rao <rvarsha016@gmail.com>
---
include/nftables.h | 9 +++++++++
include/utils.h | 1 -
src/ct.c | 2 +-
src/datatype.c | 2 +-
src/main.c | 11 +++++++++++
src/meta.c | 4 ++--
src/netlink.c | 2 +-
src/rt.c | 2 +-
8 files changed, 26 insertions(+), 7 deletions(-)
diff --git a/include/nftables.h b/include/nftables.h
index b188b9e..5d1a783 100644
--- a/include/nftables.h
+++ b/include/nftables.h
@@ -117,6 +117,7 @@ struct parser_state;
int nft_run(struct nft_ctx *nft, void *scanner, struct parser_state *state,
struct list_head *msgs);
+
void ct_label_table_init(void);
void mark_table_init(void);
void gmp_init(void);
@@ -127,4 +128,12 @@ void realm_table_meta_init(void);
void xt_init(void);
void nft_init(void);
+void ct_label_table_exit(void);
+void mark_table_exit(void);
+void realm_table_meta_exit(void);
+void devgroup_table_exit(void);
+void netlink_close_sock(void);
+void realm_table_rt_exit(void);
+void nft_exit(void);
+
#endif /* NFTABLES_NFTABLES_H */
diff --git a/include/utils.h b/include/utils.h
index 0c3341b..0605eee 100644
--- a/include/utils.h
+++ b/include/utils.h
@@ -32,7 +32,6 @@
#define __gmp_fmtstring(x, y)
#endif
-#define __exit __attribute__((destructor))
#define __must_check __attribute__((warn_unused_result))
#define __noreturn __attribute__((__noreturn__))
diff --git a/src/ct.c b/src/ct.c
index 25efc70..d64f467 100644
--- a/src/ct.c
+++ b/src/ct.c
@@ -210,7 +210,7 @@ void ct_label_table_init(void)
ct_label_tbl = rt_symbol_table_init(CONNLABEL_CONF);
}
-static void __exit ct_label_table_exit(void)
+void ct_label_table_exit(void)
{
rt_symbol_table_free(ct_label_tbl);
}
diff --git a/src/datatype.c b/src/datatype.c
index 4f74c06..0d5ba51 100644
--- a/src/datatype.c
+++ b/src/datatype.c
@@ -722,7 +722,7 @@ void mark_table_init(void)
mark_tbl = rt_symbol_table_init("/etc/iproute2/rt_marks");
}
-static void __exit mark_table_exit(void)
+void mark_table_exit(void)
{
rt_symbol_table_free(mark_tbl);
}
diff --git a/src/main.c b/src/main.c
index 301bce0..5da8bee 100644
--- a/src/main.c
+++ b/src/main.c
@@ -276,6 +276,16 @@ void nft_init(void)
#endif
}
+void nft_exit(void)
+{
+ netlink_close_sock();
+ ct_label_table_exit();
+ realm_table_rt_exit();
+ devgroup_table_exit();
+ realm_table_meta_exit();
+ mark_table_exit();
+}
+
int main(int argc, char * const *argv)
{
struct parser_state state;
@@ -412,6 +422,7 @@ out:
xfree(buf);
cache_release();
iface_cache_release();
+ nft_exit();
return rc;
}
diff --git a/src/meta.c b/src/meta.c
index 4fb26d5..9c80893 100644
--- a/src/meta.c
+++ b/src/meta.c
@@ -42,7 +42,7 @@ void realm_table_meta_init(void)
realm_tbl = rt_symbol_table_init("/etc/iproute2/rt_realms");
}
-static void __exit realm_table_exit(void)
+void realm_table_meta_exit(void)
{
rt_symbol_table_free(realm_tbl);
}
@@ -338,7 +338,7 @@ void devgroup_table_init(void)
devgroup_tbl = rt_symbol_table_init("/etc/iproute2/group");
}
-static void __exit devgroup_table_exit(void)
+void devgroup_table_exit(void)
{
rt_symbol_table_free(devgroup_tbl);
}
diff --git a/src/netlink.c b/src/netlink.c
index 3993aa1..6d466c0 100644
--- a/src/netlink.c
+++ b/src/netlink.c
@@ -67,7 +67,7 @@ void netlink_open_sock(void)
fcntl(mnl_socket_get_fd(nf_sock), F_SETFL, O_NONBLOCK);
}
-static void __exit netlink_close_sock(void)
+void netlink_close_sock(void)
{
if (nf_sock)
mnl_socket_close(nf_sock);
diff --git a/src/rt.c b/src/rt.c
index 5f57cf0..cd2d5a4 100644
--- a/src/rt.c
+++ b/src/rt.c
@@ -29,7 +29,7 @@ void realm_table_rt_init(void)
realm_tbl = rt_symbol_table_init("/etc/iproute2/rt_realms");
}
-static void __exit realm_table_exit(void)
+void realm_table_rt_exit(void)
{
rt_symbol_table_free(realm_tbl);
}
--
2.9.4
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH nft 1/3] include: Remove datatype_register().
2017-06-30 9:26 ` [PATCH nft 1/3] include: Remove datatype_register() Varsha Rao
@ 2017-06-30 10:45 ` Pablo Neira Ayuso
0 siblings, 0 replies; 6+ messages in thread
From: Pablo Neira Ayuso @ 2017-06-30 10:45 UTC (permalink / raw)
To: Varsha Rao; +Cc: netfilter-devel
On Fri, Jun 30, 2017 at 02:56:19PM +0530, Varsha Rao wrote:
> Remove datatype_register() function and its calling __init functions.
> Add arguments of datatype_register() function to datatype array.
Applied, thanks Varsha.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH nft 2/3] include: Remove __init macro definition.
2017-06-30 9:27 ` [PATCH nft 2/3] include: Remove __init macro definition Varsha Rao
@ 2017-06-30 10:56 ` Pablo Neira Ayuso
0 siblings, 0 replies; 6+ messages in thread
From: Pablo Neira Ayuso @ 2017-06-30 10:56 UTC (permalink / raw)
To: Varsha Rao; +Cc: netfilter-devel
On Fri, Jun 30, 2017 at 02:57:12PM +0530, Varsha Rao wrote:
> Add nft_init function, which calls _init functions in main.c file.
> Remove __init macro definition as libnftables library will be created
> soon. Rename realm_table_init() function to avoid ambiguity as
> realm_table_rt_init() and realm_table_meta_init() in rt.c and meta.c
> files.
>
> Signed-off-by: Varsha Rao <rvarsha016@gmail.com>
> ---
> include/nftables.h | 9 +++++++++
> include/utils.h | 1 -
> src/ct.c | 2 +-
> src/datatype.c | 2 +-
> src/gmputil.c | 2 +-
> src/main.c | 15 +++++++++++++++
> src/meta.c | 4 ++--
> src/netlink.c | 2 +-
> src/rt.c | 2 +-
> src/xt.c | 2 +-
> 10 files changed, 32 insertions(+), 9 deletions(-)
>
> diff --git a/include/nftables.h b/include/nftables.h
> index 26fd344..b188b9e 100644
> --- a/include/nftables.h
> +++ b/include/nftables.h
> @@ -117,5 +117,14 @@ struct parser_state;
>
> int nft_run(struct nft_ctx *nft, void *scanner, struct parser_state *state,
> struct list_head *msgs);
> +void ct_label_table_init(void);
> +void mark_table_init(void);
> +void gmp_init(void);
> +void realm_table_rt_init(void);
> +void devgroup_table_init(void);
> +void netlink_open_sock(void);
OK, so before I apply this, I would like that we remove
netlink_open_sock() from nft_init().
Could you make a patch that does the following (in steps):
1) Add a new struct mnl_socket * field to struct nft_ctx, you can name
this new field as 'nf_sock'.
2) Call netlink_open_sock() from nft_netlink(), at the very beginning,
so you set ctx->nf_sock.
3) Use ctx->nf_sock everywhere in src/netlink.c and src/mnl.c,
so this is not global anymore.
All this in one single patch. As a result, we don't need to call
netlink_open_sock() from nft_init() anymore.
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2017-06-30 10:56 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-06-30 9:24 [PATCH nft 0/3] include: Remove datatype_register(), __init and __exit macros Varsha Rao
2017-06-30 9:26 ` [PATCH nft 1/3] include: Remove datatype_register() Varsha Rao
2017-06-30 10:45 ` Pablo Neira Ayuso
2017-06-30 9:27 ` [PATCH nft 2/3] include: Remove __init macro definition Varsha Rao
2017-06-30 10:56 ` Pablo Neira Ayuso
2017-06-30 9:28 ` [PATCH nft 3/3] include: Remove __exit " Varsha Rao
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.