summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPhil Sutter <phil@nwl.cc>2018-05-08 13:08:34 +0200
committerPablo Neira Ayuso <pablo@netfilter.org>2018-05-11 12:16:51 +0200
commitf4c87d0a7037188ff69dff29d5154a102230b792 (patch)
tree13a4835de58c25faa0fbafa01e4dd6e67ef654d7
parent08c11bc3b329523332f0d7e0eadf6bd4260de67c (diff)
libnftables: Make some arrays globally accessible
This removes static flag and adds declarations in headers for the following arrays: * ct_templates from src/ct.c * mark_tbl from src/datatype.c * meta_templates and devgroup_tbl from src/meta.c * table_flags_name from src/rule.c * set_stmt_op_names from src/statement.c * tcpopthdr_protocols from src/tcpopt.c Signed-off-by: Phil Sutter <phil@nwl.cc> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
-rw-r--r--include/ct.h2
-rw-r--r--include/datatype.h1
-rw-r--r--include/meta.h4
-rw-r--r--include/rt.h2
-rw-r--r--include/rule.h3
-rw-r--r--include/statement.h2
-rw-r--r--include/tcpopt.h4
-rw-r--r--src/ct.c2
-rw-r--r--src/datatype.c3
-rw-r--r--src/meta.c5
-rw-r--r--src/rt.c2
-rw-r--r--src/rule.c2
-rw-r--r--src/statement.c2
-rw-r--r--src/tcpopt.c2
14 files changed, 27 insertions, 9 deletions
diff --git a/include/ct.h b/include/ct.h
index 2c3392d3..dadd820f 100644
--- a/include/ct.h
+++ b/include/ct.h
@@ -16,6 +16,8 @@ struct ct_template {
unsigned int len;
};
+extern const struct ct_template ct_templates[__NFT_CT_MAX];
+
#define CT_TEMPLATE(__token, __dtype, __byteorder, __len) { \
.token = (__token), \
.dtype = (__dtype), \
diff --git a/include/datatype.h b/include/datatype.h
index aca08dec..56892ddc 100644
--- a/include/datatype.h
+++ b/include/datatype.h
@@ -218,6 +218,7 @@ extern struct symbol_table *rt_symbol_table_init(const char *filename);
extern void rt_symbol_table_free(struct symbol_table *tbl);
extern const struct symbol_table inet_service_tbl;
+extern struct symbol_table *mark_tbl;
extern const struct datatype invalid_type;
extern const struct datatype verdict_type;
diff --git a/include/meta.h b/include/meta.h
index 6086a71c..a49b4ff5 100644
--- a/include/meta.h
+++ b/include/meta.h
@@ -16,6 +16,8 @@ struct meta_template {
unsigned int len;
};
+extern const struct meta_template meta_templates[];
+
#define META_TEMPLATE(__token, __dtype, __len, __byteorder) { \
.token = (__token), \
.dtype = (__dtype), \
@@ -40,4 +42,6 @@ extern const struct datatype devgroup_type;
extern const struct datatype pkttype_type;
extern const struct datatype ifname_type;
+extern struct symbol_table *devgroup_tbl;
+
#endif /* NFTABLES_META_H */
diff --git a/include/rt.h b/include/rt.h
index 9828e634..195af943 100644
--- a/include/rt.h
+++ b/include/rt.h
@@ -18,6 +18,8 @@ struct rt_template {
bool invalid;
};
+extern const struct rt_template rt_templates[];
+
#define RT_TEMPLATE(__token, __dtype, __len, __byteorder, __invalid) { \
.token = (__token), \
.dtype = (__dtype), \
diff --git a/include/rule.h b/include/rule.h
index a3764bda..2c44ccea 100644
--- a/include/rule.h
+++ b/include/rule.h
@@ -115,6 +115,9 @@ struct symbol *symbol_get(const struct scope *scope, const char *identifier);
enum table_flags {
TABLE_F_DORMANT = (1 << 0),
};
+#define TABLE_FLAGS_MAX 1
+
+extern const char *table_flags_name[TABLE_FLAGS_MAX];
/**
* struct table - nftables table
diff --git a/include/statement.h b/include/statement.h
index 7315e7ae..5987b181 100644
--- a/include/statement.h
+++ b/include/statement.h
@@ -163,6 +163,8 @@ struct set_stmt {
enum nft_dynset_ops op;
};
+extern const char * const set_stmt_op_names[];
+
extern struct stmt *set_stmt_alloc(const struct location *loc);
struct map_stmt {
diff --git a/include/tcpopt.h b/include/tcpopt.h
index 9be84817..ffdbcb02 100644
--- a/include/tcpopt.h
+++ b/include/tcpopt.h
@@ -29,6 +29,7 @@ enum tcpopt_hdr_types {
TCPOPTHDR_TIMESTAMP,
TCPOPTHDR_ECHO,
TCPOPTHDR_ECHO_REPLY,
+ __TCPOPTHDR_MAX
};
enum tcpopt_hdr_fields {
@@ -42,4 +43,7 @@ enum tcpopt_hdr_fields {
TCPOPTHDR_FIELD_TSVAL,
TCPOPTHDR_FIELD_TSECR,
};
+
+extern const struct exthdr_desc *tcpopthdr_protocols[__TCPOPTHDR_MAX];
+
#endif /* NFTABLES_TCPOPT_H */
diff --git a/src/ct.c b/src/ct.c
index 6cb6bd5a..2abaa0d5 100644
--- a/src/ct.c
+++ b/src/ct.c
@@ -220,7 +220,7 @@ void ct_label_table_exit(void)
#define NF_CT_HELPER_NAME_LEN 16
#endif
-static const struct ct_template ct_templates[] = {
+const struct ct_template ct_templates[__NFT_CT_MAX] = {
[NFT_CT_STATE] = CT_TEMPLATE("state", &ct_state_type,
BYTEORDER_HOST_ENDIAN,
4 * BITS_PER_BYTE),
diff --git a/src/datatype.c b/src/datatype.c
index 4248f7e4..d5a5091e 100644
--- a/src/datatype.c
+++ b/src/datatype.c
@@ -721,7 +721,8 @@ void rt_symbol_table_free(struct symbol_table *tbl)
xfree(tbl);
}
-static struct symbol_table *mark_tbl;
+struct symbol_table *mark_tbl = NULL;
+
void mark_table_init(void)
{
mark_tbl = rt_symbol_table_init("/etc/iproute2/rt_marks");
diff --git a/src/meta.c b/src/meta.c
index 3012efa9..fb94ed40 100644
--- a/src/meta.c
+++ b/src/meta.c
@@ -334,7 +334,8 @@ const struct datatype pkttype_type = {
.sym_tbl = &pkttype_type_tbl,
};
-static struct symbol_table *devgroup_tbl;
+struct symbol_table *devgroup_tbl = NULL;
+
void devgroup_table_init(void)
{
devgroup_tbl = rt_symbol_table_init("/etc/iproute2/group");
@@ -378,7 +379,7 @@ const struct datatype ifname_type = {
.basetype = &string_type,
};
-static const struct meta_template meta_templates[] = {
+const struct meta_template meta_templates[] = {
[NFT_META_LEN] = META_TEMPLATE("length", &integer_type,
4 * 8, BYTEORDER_HOST_ENDIAN),
[NFT_META_PROTOCOL] = META_TEMPLATE("protocol", &ethertype_type,
diff --git a/src/rt.c b/src/rt.c
index 041dbc2f..2530b663 100644
--- a/src/rt.c
+++ b/src/rt.c
@@ -57,7 +57,7 @@ const struct datatype realm_type = {
.flags = DTYPE_F_PREFIX,
};
-static const struct rt_template rt_templates[] = {
+const struct rt_template rt_templates[] = {
[NFT_RT_CLASSID] = RT_TEMPLATE("classid",
&realm_type,
4 * BITS_PER_BYTE,
diff --git a/src/rule.c b/src/rule.c
index 279b741b..5f73bebc 100644
--- a/src/rule.c
+++ b/src/rule.c
@@ -856,8 +856,6 @@ struct table *table_lookup(const struct handle *h,
return NULL;
}
-#define TABLE_FLAGS_MAX 1
-
const char *table_flags_name[TABLE_FLAGS_MAX] = {
"dormant",
};
diff --git a/src/statement.c b/src/statement.c
index 19c30cf8..a5ef7d7d 100644
--- a/src/statement.c
+++ b/src/statement.c
@@ -567,7 +567,7 @@ struct stmt *nat_stmt_alloc(const struct location *loc,
return stmt;
}
-static const char * const set_stmt_op_names[] = {
+const char * const set_stmt_op_names[] = {
[NFT_DYNSET_OP_ADD] = "add",
[NFT_DYNSET_OP_UPDATE] = "update",
};
diff --git a/src/tcpopt.c b/src/tcpopt.c
index 7c6c2557..66f021f9 100644
--- a/src/tcpopt.c
+++ b/src/tcpopt.c
@@ -136,7 +136,7 @@ static unsigned int calc_offset_reverse(const struct exthdr_desc *desc,
}
}
-static const struct exthdr_desc *tcpopthdr_protocols[] = {
+const struct exthdr_desc *tcpopthdr_protocols[__TCPOPTHDR_MAX] = {
[TCPOPTHDR_EOL] = &tcpopt_eol,
[TCPOPTHDR_NOOP] = &tcpopt_nop,
[TCPOPTHDR_MAXSEG] = &tcptopt_maxseg,