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>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
extern struct stmt *notrack_stmt_alloc(const struct location *loc);
+extern const struct datatype ct_dir_type;
+extern const struct datatype ct_state_type;
+extern const struct datatype ct_status_type;
+
#endif /* NFTABLES_CT_H */
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);
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 */
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 */
struct stmt *meta_stmt_meta_iiftype(const struct location *loc, uint16_t type);
-const struct datatype ifindex_type;
-
struct error_record *meta_key_parse(const struct location *loc,
const char *name,
unsigned int *value);
+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;
+
#endif /* NFTABLES_META_H */
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 */
enum nft_rt_keys key, bool invalid);
extern void rt_expr_update_type(struct proto_ctx *ctx, struct expr *expr);
+extern const struct datatype realm_type;
+
#endif /* NFTABLES_RT_H */
}
};
-static const struct datatype ct_state_type = {
+const struct datatype ct_state_type = {
.type = TYPE_CT_STATE,
.name = "ct_state",
.desc = "conntrack state",
}
};
-static const struct datatype ct_dir_type = {
+const struct datatype ct_dir_type = {
.type = TYPE_CT_DIR,
.name = "ct_dir",
.desc = "conntrack direction",
},
};
-static const struct datatype ct_status_type = {
+const struct datatype ct_status_type = {
.type = TYPE_CT_STATUS,
.name = "ct_status",
.desc = "conntrack status",
{
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);
-}
[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)
+const struct datatype *datatype_lookup(enum datatypes type)
{
BUILD_BUG_ON(TYPE_MAX & ~TYPE_MASK);
- datatypes[dtype->type] = dtype;
-}
-const struct datatype *datatype_lookup(enum datatypes type)
-{
if (type > TYPE_MAX)
return NULL;
return datatypes[type];
},
};
-static const struct datatype mh_type_type = {
+const struct datatype mh_type_type = {
.type = TYPE_MH_TYPE,
.name = "mh_type",
.desc = "Mobility Header Type",
[MHHDR_CHECKSUM] = MH_FIELD("checksum", ip6mh_cksum, &integer_type),
},
};
-
-static void __init exthdr_init(void)
-{
- datatype_register(&mh_type_type);
-}
}
};
-static const struct datatype fib_addr_type = {
+const struct datatype fib_addr_type = {
.type = TYPE_FIB_ADDR,
.name = "fib_addrtype",
.desc = "fib address type",
return expr;
}
-
-static void __init fib_init(void)
-{
- datatype_register(&fib_addr_type);
-}
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)
{
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",
return NULL;
}
-static const struct datatype uid_type = {
+const struct datatype uid_type = {
.type = TYPE_UID,
.name = "uid",
.desc = "user ID",
return NULL;
}
-static const struct datatype gid_type = {
+const struct datatype gid_type = {
.type = TYPE_GID,
.name = "gid",
.desc = "group ID",
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",
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",
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
},
};
-static const struct datatype tcp_flag_type = {
+const struct datatype tcp_flag_type = {
.type = TYPE_TCP_FLAG,
.name = "tcp_flag",
.desc = "TCP flag",
},
};
-static const struct datatype dccp_pkttype_type = {
+const struct datatype dccp_pkttype_type = {
.type = TYPE_DCCP_PKTTYPE,
.name = "dccp_pkttype",
.desc = "DCCP packet type",
},
};
-static const struct datatype dscp_type = {
+const struct datatype dscp_type = {
.type = TYPE_DSCP,
.name = "dscp",
.desc = "Differentiated Services Code Point",
},
};
-static const struct datatype ecn_type = {
+const struct datatype ecn_type = {
.type = TYPE_ECN,
.name = "ecn",
.desc = "Explicit Congestion Notification",
},
};
-static const struct datatype icmp6_type_type = {
+const struct datatype icmp6_type_type = {
.type = TYPE_ICMP6_TYPE,
.name = "icmpv6_type",
.desc = "ICMPv6 type",
},
};
-static const struct datatype arpop_type = {
+const struct datatype arpop_type = {
.type = TYPE_ARPOP,
.name = "arp_op",
.desc = "ARP operation",
[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);
-}
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",
break;
}
}
-
-static void __init rt_init(void)
-{
- datatype_register(&realm_type);
-}