Lines Matching refs:nla

137 			 const struct nlattr * const *nla)  in nft_ctx_init()  argument
144 ctx->nla = nla; in nft_ctx_init()
430 if (ctx->nla[NFTA_CHAIN_ID]) { in nft_trans_chain_add()
432 ntohl(nla_get_be32(ctx->nla[NFTA_CHAIN_ID])); in nft_trans_chain_add()
503 if (msg_type == NFT_MSG_NEWRULE && ctx->nla[NFTA_RULE_ID] != NULL) { in nft_trans_rule_add()
505 ntohl(nla_get_be32(ctx->nla[NFTA_RULE_ID])); in nft_trans_rule_add()
569 if (msg_type == NFT_MSG_NEWSET && ctx->nla[NFTA_SET_ID] && !desc) { in __nft_trans_set_add()
571 ntohl(nla_get_be32(ctx->nla[NFTA_SET_ID])); in __nft_trans_set_add()
782 const struct nlattr *nla, in nft_table_lookup() argument
788 if (nla == NULL) in nft_table_lookup()
794 if (!nla_strcmp(nla, table->name) && in nft_table_lookup()
809 const struct nlattr *nla, in nft_table_lookup_byhandle() argument
817 if (be64_to_cpu(nla_get_be64(nla)) == table->handle && in nft_table_lookup_byhandle()
849 __nf_tables_chain_type_lookup(const struct nlattr *nla, u8 family) in __nf_tables_chain_type_lookup() argument
858 if (!nla_strcmp(nla, type->name)) in __nf_tables_chain_type_lookup()
919 nf_tables_chain_type_lookup(struct net *net, const struct nlattr *nla, in nf_tables_chain_type_lookup() argument
924 type = __nf_tables_chain_type_lookup(nla, family); in nf_tables_chain_type_lookup()
932 nla_len(nla), in nf_tables_chain_type_lookup()
933 (const char *)nla_data(nla)) == -EAGAIN) in nf_tables_chain_type_lookup()
1105 const struct nlattr * const nla[]) in nf_tables_gettable() argument
1124 table = nft_table_lookup(net, nla[NFTA_TABLE_NAME], family, genmask, 0); in nf_tables_gettable()
1126 NL_SET_BAD_ATTR(extack, nla[NFTA_TABLE_NAME]); in nf_tables_gettable()
1229 if (!ctx->nla[NFTA_TABLE_FLAGS]) in nf_tables_updtable()
1232 flags = ntohl(nla_get_be32(ctx->nla[NFTA_TABLE_FLAGS])); in nf_tables_updtable()
1358 const struct nlattr * const nla[]) in nf_tables_newtable() argument
1375 attr = nla[NFTA_TABLE_NAME]; in nf_tables_newtable()
1389 nft_ctx_init(&ctx, net, skb, info->nlh, family, table, NULL, nla); in nf_tables_newtable()
1394 if (nla[NFTA_TABLE_FLAGS]) { in nf_tables_newtable()
1395 flags = ntohl(nla_get_be32(nla[NFTA_TABLE_FLAGS])); in nf_tables_newtable()
1410 if (nla[NFTA_TABLE_USERDATA]) { in nf_tables_newtable()
1411 table->udata = nla_memdup(nla[NFTA_TABLE_USERDATA], GFP_KERNEL_ACCOUNT); in nf_tables_newtable()
1415 table->udlen = nla_len(nla[NFTA_TABLE_USERDATA]); in nf_tables_newtable()
1432 nft_ctx_init(&ctx, net, skb, info->nlh, family, table, NULL, nla); in nf_tables_newtable()
1525 const struct nlattr * const *nla = ctx->nla; in nft_flush() local
1541 if (nla[NFTA_TABLE_NAME] && in nft_flush()
1542 nla_strcmp(nla[NFTA_TABLE_NAME], table->name) != 0) in nft_flush()
1556 const struct nlattr * const nla[]) in nf_tables_deltable() argument
1566 nft_ctx_init(&ctx, net, skb, info->nlh, 0, NULL, NULL, nla); in nf_tables_deltable()
1568 (!nla[NFTA_TABLE_NAME] && !nla[NFTA_TABLE_HANDLE])) in nf_tables_deltable()
1571 if (nla[NFTA_TABLE_HANDLE]) { in nf_tables_deltable()
1572 attr = nla[NFTA_TABLE_HANDLE]; in nf_tables_deltable()
1576 attr = nla[NFTA_TABLE_NAME]; in nf_tables_deltable()
1662 const struct nlattr *nla, u8 genmask) in nft_chain_lookup() argument
1668 if (nla == NULL) in nft_chain_lookup()
1671 nla_strscpy(search, nla, sizeof(search)); in nft_chain_lookup()
1949 const struct nlattr * const nla[]) in nf_tables_getchain() argument
1969 table = nft_table_lookup(net, nla[NFTA_CHAIN_TABLE], family, genmask, 0); in nf_tables_getchain()
1971 NL_SET_BAD_ATTR(extack, nla[NFTA_CHAIN_TABLE]); in nf_tables_getchain()
1975 chain = nft_chain_lookup(net, table, nla[NFTA_CHAIN_NAME], genmask); in nf_tables_getchain()
1977 NL_SET_BAD_ATTR(extack, nla[NFTA_CHAIN_NAME]); in nf_tables_getchain()
2231 const struct nlattr * const nla[], in nft_chain_parse_hook() argument
2244 nla[NFTA_CHAIN_HOOK], in nft_chain_parse_hook()
2252 NL_SET_BAD_ATTR(extack, nla[NFTA_CHAIN_NAME]); in nft_chain_parse_hook()
2263 if (nla[NFTA_CHAIN_TYPE]) { in nft_chain_parse_hook()
2264 type = nf_tables_chain_type_lookup(net, nla[NFTA_CHAIN_TYPE], in nft_chain_parse_hook()
2267 NL_SET_BAD_ATTR(extack, nla[NFTA_CHAIN_TYPE]); in nft_chain_parse_hook()
2289 if (nla[NFTA_CHAIN_TYPE]) { in nft_chain_parse_hook()
2290 type = __nf_tables_chain_type_lookup(nla[NFTA_CHAIN_TYPE], in nft_chain_parse_hook()
2293 NL_SET_BAD_ATTR(extack, nla[NFTA_CHAIN_TYPE]); in nft_chain_parse_hook()
2302 if (nla[NFTA_CHAIN_TYPE]) in nft_chain_parse_hook()
2303 NL_SET_BAD_ATTR(extack, nla[NFTA_CHAIN_TYPE]); in nft_chain_parse_hook()
2429 const struct nlattr * const *nla = ctx->nla; in nf_tables_addchain() local
2439 if (nla[NFTA_CHAIN_HOOK]) { in nf_tables_addchain()
2449 err = nft_chain_parse_hook(net, NULL, nla, &hook, family, flags, in nf_tables_addchain()
2461 if (nla[NFTA_CHAIN_COUNTERS]) { in nf_tables_addchain()
2462 stats = nft_stats_alloc(nla[NFTA_CHAIN_COUNTERS]); in nf_tables_addchain()
2498 if (nla[NFTA_CHAIN_NAME]) { in nf_tables_addchain()
2499 chain->name = nla_strdup(nla[NFTA_CHAIN_NAME], GFP_KERNEL_ACCOUNT); in nf_tables_addchain()
2515 if (nla[NFTA_CHAIN_USERDATA]) { in nf_tables_addchain()
2516 chain->udata = nla_memdup(nla[NFTA_CHAIN_USERDATA], GFP_KERNEL_ACCOUNT); in nf_tables_addchain()
2521 chain->udlen = nla_len(nla[NFTA_CHAIN_USERDATA]); in nf_tables_addchain()
2575 const struct nlattr * const *nla = ctx->nla; in nf_tables_updchain() local
2592 if (nla[NFTA_CHAIN_HOOK]) { in nf_tables_updchain()
2599 err = nft_chain_parse_hook(ctx->net, basechain, nla, &hook, in nf_tables_updchain()
2634 if (nla[NFTA_CHAIN_HANDLE] && in nf_tables_updchain()
2635 nla[NFTA_CHAIN_NAME]) { in nf_tables_updchain()
2639 nla[NFTA_CHAIN_NAME], genmask); in nf_tables_updchain()
2641 NL_SET_BAD_ATTR(extack, nla[NFTA_CHAIN_NAME]); in nf_tables_updchain()
2669 if (nla[NFTA_CHAIN_COUNTERS]) { in nf_tables_updchain()
2675 stats = nft_stats_alloc(nla[NFTA_CHAIN_COUNTERS]); in nf_tables_updchain()
2691 if (nla[NFTA_CHAIN_POLICY]) in nf_tables_updchain()
2696 if (nla[NFTA_CHAIN_HANDLE] && in nf_tables_updchain()
2697 nla[NFTA_CHAIN_NAME]) { in nf_tables_updchain()
2703 name = nla_strdup(nla[NFTA_CHAIN_NAME], GFP_KERNEL_ACCOUNT); in nf_tables_updchain()
2714 NL_SET_BAD_ATTR(extack, nla[NFTA_CHAIN_NAME]); in nf_tables_updchain()
2726 if (nla[NFTA_CHAIN_HOOK]) in nf_tables_updchain()
2737 if (nla[NFTA_CHAIN_HOOK]) { in nf_tables_updchain()
2752 const struct nlattr *nla, u8 genmask) in nft_chain_lookup_byid() argument
2755 u32 id = ntohl(nla_get_be32(nla)); in nft_chain_lookup_byid()
2771 const struct nlattr * const nla[]) in nf_tables_newchain() argument
2788 table = nft_table_lookup(net, nla[NFTA_CHAIN_TABLE], family, genmask, in nf_tables_newchain()
2791 NL_SET_BAD_ATTR(extack, nla[NFTA_CHAIN_TABLE]); in nf_tables_newchain()
2796 attr = nla[NFTA_CHAIN_NAME]; in nf_tables_newchain()
2798 if (nla[NFTA_CHAIN_HANDLE]) { in nf_tables_newchain()
2799 handle = be64_to_cpu(nla_get_be64(nla[NFTA_CHAIN_HANDLE])); in nf_tables_newchain()
2802 NL_SET_BAD_ATTR(extack, nla[NFTA_CHAIN_HANDLE]); in nf_tables_newchain()
2805 attr = nla[NFTA_CHAIN_HANDLE]; in nf_tables_newchain()
2806 } else if (nla[NFTA_CHAIN_NAME]) { in nf_tables_newchain()
2815 } else if (!nla[NFTA_CHAIN_ID]) { in nf_tables_newchain()
2819 if (nla[NFTA_CHAIN_POLICY]) { in nf_tables_newchain()
2822 NL_SET_BAD_ATTR(extack, nla[NFTA_CHAIN_POLICY]); in nf_tables_newchain()
2827 nla[NFTA_CHAIN_HOOK] == NULL) { in nf_tables_newchain()
2828 NL_SET_BAD_ATTR(extack, nla[NFTA_CHAIN_POLICY]); in nf_tables_newchain()
2832 policy = ntohl(nla_get_be32(nla[NFTA_CHAIN_POLICY])); in nf_tables_newchain()
2842 if (nla[NFTA_CHAIN_FLAGS]) in nf_tables_newchain()
2843 flags = ntohl(nla_get_be32(nla[NFTA_CHAIN_FLAGS])); in nf_tables_newchain()
2850 nft_ctx_init(&ctx, net, skb, info->nlh, family, table, chain, nla); in nf_tables_newchain()
2876 const struct nlattr * const *nla = ctx->nla; in nft_delchain_hook() local
2886 err = nft_chain_parse_hook(ctx->net, basechain, nla, &chain_hook, in nft_delchain_hook()
2925 const struct nlattr * const nla[]) in nf_tables_delchain() argument
2940 table = nft_table_lookup(net, nla[NFTA_CHAIN_TABLE], family, genmask, in nf_tables_delchain()
2943 NL_SET_BAD_ATTR(extack, nla[NFTA_CHAIN_TABLE]); in nf_tables_delchain()
2947 if (nla[NFTA_CHAIN_HANDLE]) { in nf_tables_delchain()
2948 attr = nla[NFTA_CHAIN_HANDLE]; in nf_tables_delchain()
2952 attr = nla[NFTA_CHAIN_NAME]; in nf_tables_delchain()
2967 nft_ctx_init(&ctx, net, skb, info->nlh, family, table, chain, nla); in nf_tables_delchain()
2969 if (nla[NFTA_CHAIN_HOOK]) { in nf_tables_delchain()
3046 struct nlattr *nla) in __nft_expr_type_get() argument
3051 if (!nla_strcmp(nla, type->name)) { in __nft_expr_type_get()
3063 struct nlattr *nla) in nft_expr_type_request_module() argument
3066 nla_len(nla), (char *)nla_data(nla)) == -EAGAIN) in nft_expr_type_request_module()
3075 struct nlattr *nla) in nft_expr_type_get() argument
3079 if (nla == NULL) in nft_expr_type_get()
3083 type = __nft_expr_type_get(family, nla); in nft_expr_type_get()
3093 if (nft_expr_type_request_module(net, family, nla) == -EAGAIN) in nft_expr_type_get()
3097 nla_len(nla), in nft_expr_type_get()
3098 (char *)nla_data(nla)) == -EAGAIN) in nft_expr_type_get()
3157 const struct nlattr *nla, in nf_tables_expr_parse() argument
3165 err = nla_parse_nested_deprecated(tb, NFTA_EXPR_MAX, nla, in nf_tables_expr_parse()
3200 info->attr = nla; in nf_tables_expr_parse()
3210 int nft_expr_inner_parse(const struct nft_ctx *ctx, const struct nlattr *nla, in nft_expr_inner_parse() argument
3217 err = nla_parse_nested_deprecated(tb, NFTA_EXPR_MAX, nla, in nft_expr_inner_parse()
3238 info->attr = nla; in nft_expr_inner_parse()
3278 const struct nlattr *nla) in nft_expr_init() argument
3285 err = nf_tables_expr_parse(ctx, nla, &expr_info); in nft_expr_init()
3358 const struct nlattr *nla) in nft_rule_lookup() argument
3360 if (nla == NULL) in nft_rule_lookup()
3363 return __nft_rule_lookup(chain, be64_to_cpu(nla_get_be64(nla))); in nft_rule_lookup()
3612 const struct nlattr * const *nla = cb->data; in nf_tables_dump_rules_start() local
3615 if (nla[NFTA_RULE_TABLE] || nla[NFTA_RULE_CHAIN]) { in nf_tables_dump_rules_start()
3620 if (nla[NFTA_RULE_TABLE]) { in nf_tables_dump_rules_start()
3621 ctx->table = nla_strdup(nla[NFTA_RULE_TABLE], in nf_tables_dump_rules_start()
3628 if (nla[NFTA_RULE_CHAIN]) { in nf_tables_dump_rules_start()
3629 ctx->chain = nla_strdup(nla[NFTA_RULE_CHAIN], in nf_tables_dump_rules_start()
3657 const struct nlattr * const nla[]) in nf_tables_getrule() argument
3676 .data = (void *)nla, in nf_tables_getrule()
3682 table = nft_table_lookup(net, nla[NFTA_RULE_TABLE], family, genmask, 0); in nf_tables_getrule()
3684 NL_SET_BAD_ATTR(extack, nla[NFTA_RULE_TABLE]); in nf_tables_getrule()
3688 chain = nft_chain_lookup(net, table, nla[NFTA_RULE_CHAIN], genmask); in nf_tables_getrule()
3690 NL_SET_BAD_ATTR(extack, nla[NFTA_RULE_CHAIN]); in nf_tables_getrule()
3694 rule = nft_rule_lookup(chain, nla[NFTA_RULE_HANDLE]); in nf_tables_getrule()
3696 NL_SET_BAD_ATTR(extack, nla[NFTA_RULE_HANDLE]); in nf_tables_getrule()
3855 const struct nlattr *nla);
3860 const struct nlattr * const nla[]) in nf_tables_newrule() argument
3883 table = nft_table_lookup(net, nla[NFTA_RULE_TABLE], family, genmask, in nf_tables_newrule()
3886 NL_SET_BAD_ATTR(extack, nla[NFTA_RULE_TABLE]); in nf_tables_newrule()
3890 if (nla[NFTA_RULE_CHAIN]) { in nf_tables_newrule()
3891 chain = nft_chain_lookup(net, table, nla[NFTA_RULE_CHAIN], in nf_tables_newrule()
3894 NL_SET_BAD_ATTR(extack, nla[NFTA_RULE_CHAIN]); in nf_tables_newrule()
3898 } else if (nla[NFTA_RULE_CHAIN_ID]) { in nf_tables_newrule()
3899 chain = nft_chain_lookup_byid(net, table, nla[NFTA_RULE_CHAIN_ID], in nf_tables_newrule()
3902 NL_SET_BAD_ATTR(extack, nla[NFTA_RULE_CHAIN_ID]); in nf_tables_newrule()
3912 if (nla[NFTA_RULE_HANDLE]) { in nf_tables_newrule()
3913 handle = be64_to_cpu(nla_get_be64(nla[NFTA_RULE_HANDLE])); in nf_tables_newrule()
3916 NL_SET_BAD_ATTR(extack, nla[NFTA_RULE_HANDLE]); in nf_tables_newrule()
3921 NL_SET_BAD_ATTR(extack, nla[NFTA_RULE_HANDLE]); in nf_tables_newrule()
3934 if (nla[NFTA_RULE_POSITION]) { in nf_tables_newrule()
3935 pos_handle = be64_to_cpu(nla_get_be64(nla[NFTA_RULE_POSITION])); in nf_tables_newrule()
3938 NL_SET_BAD_ATTR(extack, nla[NFTA_RULE_POSITION]); in nf_tables_newrule()
3941 } else if (nla[NFTA_RULE_POSITION_ID]) { in nf_tables_newrule()
3942 old_rule = nft_rule_lookup_byid(net, chain, nla[NFTA_RULE_POSITION_ID]); in nf_tables_newrule()
3944 NL_SET_BAD_ATTR(extack, nla[NFTA_RULE_POSITION_ID]); in nf_tables_newrule()
3950 nft_ctx_init(&ctx, net, skb, info->nlh, family, table, chain, nla); in nf_tables_newrule()
3954 if (nla[NFTA_RULE_EXPRESSIONS]) { in nf_tables_newrule()
3961 nla_for_each_nested(tmp, nla[NFTA_RULE_EXPRESSIONS], rem) { in nf_tables_newrule()
3981 if (nla[NFTA_RULE_USERDATA]) { in nf_tables_newrule()
3982 ulen = nla_len(nla[NFTA_RULE_USERDATA]); in nf_tables_newrule()
4001 nla_memcpy(udata->data, nla[NFTA_RULE_USERDATA], ulen); in nf_tables_newrule()
4099 const struct nlattr *nla) in nft_rule_lookup_byid() argument
4102 u32 id = ntohl(nla_get_be32(nla)); in nft_rule_lookup_byid()
4115 const struct nlattr * const nla[]) in nf_tables_delrule() argument
4127 table = nft_table_lookup(net, nla[NFTA_RULE_TABLE], family, genmask, in nf_tables_delrule()
4130 NL_SET_BAD_ATTR(extack, nla[NFTA_RULE_TABLE]); in nf_tables_delrule()
4134 if (nla[NFTA_RULE_CHAIN]) { in nf_tables_delrule()
4135 chain = nft_chain_lookup(net, table, nla[NFTA_RULE_CHAIN], in nf_tables_delrule()
4142 NL_SET_BAD_ATTR(extack, nla[NFTA_RULE_CHAIN]); in nf_tables_delrule()
4149 nft_ctx_init(&ctx, net, skb, info->nlh, family, table, chain, nla); in nf_tables_delrule()
4152 if (nla[NFTA_RULE_HANDLE]) { in nf_tables_delrule()
4153 rule = nft_rule_lookup(chain, nla[NFTA_RULE_HANDLE]); in nf_tables_delrule()
4159 NL_SET_BAD_ATTR(extack, nla[NFTA_RULE_HANDLE]); in nf_tables_delrule()
4164 } else if (nla[NFTA_RULE_ID]) { in nf_tables_delrule()
4165 rule = nft_rule_lookup_byid(net, chain, nla[NFTA_RULE_ID]); in nf_tables_delrule()
4167 NL_SET_BAD_ATTR(extack, nla[NFTA_RULE_ID]); in nf_tables_delrule()
4223 const struct nlattr * const nla[], in nft_select_set_ops() argument
4236 if (nla[NFTA_SET_FLAGS] != NULL) in nft_select_set_ops()
4237 flags = ntohl(nla_get_be32(nla[NFTA_SET_FLAGS])); in nft_select_set_ops()
4315 const struct nlattr *nla, u8 genmask) in nft_set_lookup() argument
4319 if (nla == NULL) in nft_set_lookup()
4323 if (!nla_strcmp(nla, set->name) && in nft_set_lookup()
4331 const struct nlattr *nla, in nft_set_lookup_byhandle() argument
4337 if (be64_to_cpu(nla_get_be64(nla)) == set->handle && in nft_set_lookup_byhandle()
4346 const struct nlattr *nla, u8 genmask) in nft_set_lookup_byid() argument
4349 u32 id = ntohl(nla_get_be32(nla)); in nft_set_lookup_byid()
4442 int nf_msecs_to_jiffies64(const struct nlattr *nla, u64 *result) in nf_msecs_to_jiffies64() argument
4444 u64 ms = be64_to_cpu(nla_get_be64(nla)); in nf_msecs_to_jiffies64()
4708 const struct nlattr * const nla[]) in nf_tables_getset() argument
4720 if (nla[NFTA_SET_TABLE]) { in nf_tables_getset()
4721 table = nft_table_lookup(net, nla[NFTA_SET_TABLE], family, in nf_tables_getset()
4724 NL_SET_BAD_ATTR(extack, nla[NFTA_SET_TABLE]); in nf_tables_getset()
4729 nft_ctx_init(&ctx, net, skb, info->nlh, family, table, NULL, nla); in nf_tables_getset()
4746 if (!nla[NFTA_SET_TABLE]) in nf_tables_getset()
4749 set = nft_set_lookup(table, nla[NFTA_SET_NAME], genmask); in nf_tables_getset()
4800 const struct nlattr *nla) in nft_set_desc_concat() argument
4806 nla_for_each_nested(attr, nla, rem) { in nft_set_desc_concat()
4829 const struct nlattr *nla) in nf_tables_set_desc_parse() argument
4834 err = nla_parse_nested_deprecated(da, NFTA_SET_DESC_MAX, nla, in nf_tables_set_desc_parse()
4848 const struct nlattr * const *nla, in nft_set_expr_alloc() argument
4855 if (nla[NFTA_SET_EXPR]) { in nft_set_expr_alloc()
4856 expr = nft_set_elem_expr_alloc(ctx, set, nla[NFTA_SET_EXPR]); in nft_set_expr_alloc()
4863 } else if (nla[NFTA_SET_EXPRESSIONS]) { in nft_set_expr_alloc()
4872 nla_for_each_nested(tmp, nla[NFTA_SET_EXPRESSIONS], left) { in nft_set_expr_alloc()
4929 const struct nlattr * const nla[]) in nf_tables_newset() argument
4949 if (nla[NFTA_SET_TABLE] == NULL || in nf_tables_newset()
4950 nla[NFTA_SET_NAME] == NULL || in nf_tables_newset()
4951 nla[NFTA_SET_KEY_LEN] == NULL || in nf_tables_newset()
4952 nla[NFTA_SET_ID] == NULL) in nf_tables_newset()
4958 if (nla[NFTA_SET_KEY_TYPE] != NULL) { in nf_tables_newset()
4959 desc.ktype = ntohl(nla_get_be32(nla[NFTA_SET_KEY_TYPE])); in nf_tables_newset()
4964 desc.klen = ntohl(nla_get_be32(nla[NFTA_SET_KEY_LEN])); in nf_tables_newset()
4969 if (nla[NFTA_SET_FLAGS] != NULL) { in nf_tables_newset()
4970 flags = ntohl(nla_get_be32(nla[NFTA_SET_FLAGS])); in nf_tables_newset()
4992 if (nla[NFTA_SET_DATA_TYPE] != NULL) { in nf_tables_newset()
4996 desc.dtype = ntohl(nla_get_be32(nla[NFTA_SET_DATA_TYPE])); in nf_tables_newset()
5002 if (nla[NFTA_SET_DATA_LEN] == NULL) in nf_tables_newset()
5004 desc.dlen = ntohl(nla_get_be32(nla[NFTA_SET_DATA_LEN])); in nf_tables_newset()
5012 if (nla[NFTA_SET_OBJ_TYPE] != NULL) { in nf_tables_newset()
5016 desc.objtype = ntohl(nla_get_be32(nla[NFTA_SET_OBJ_TYPE])); in nf_tables_newset()
5026 if (nla[NFTA_SET_TIMEOUT] != NULL) { in nf_tables_newset()
5033 err = nf_msecs_to_jiffies64(nla[NFTA_SET_TIMEOUT], &desc.timeout); in nf_tables_newset()
5038 if (nla[NFTA_SET_GC_INTERVAL] != NULL) { in nf_tables_newset()
5045 desc.gc_int = ntohl(nla_get_be32(nla[NFTA_SET_GC_INTERVAL])); in nf_tables_newset()
5049 if (nla[NFTA_SET_POLICY] != NULL) { in nf_tables_newset()
5050 desc.policy = ntohl(nla_get_be32(nla[NFTA_SET_POLICY])); in nf_tables_newset()
5060 if (nla[NFTA_SET_DESC] != NULL) { in nf_tables_newset()
5061 err = nf_tables_set_desc_parse(&desc, nla[NFTA_SET_DESC]); in nf_tables_newset()
5075 if (nla[NFTA_SET_EXPR] || nla[NFTA_SET_EXPRESSIONS]) in nf_tables_newset()
5078 table = nft_table_lookup(net, nla[NFTA_SET_TABLE], family, genmask, in nf_tables_newset()
5081 NL_SET_BAD_ATTR(extack, nla[NFTA_SET_TABLE]); in nf_tables_newset()
5085 nft_ctx_init(&ctx, net, skb, info->nlh, family, table, NULL, nla); in nf_tables_newset()
5087 set = nft_set_lookup(table, nla[NFTA_SET_NAME], genmask); in nf_tables_newset()
5090 NL_SET_BAD_ATTR(extack, nla[NFTA_SET_NAME]); in nf_tables_newset()
5097 NL_SET_BAD_ATTR(extack, nla[NFTA_SET_NAME]); in nf_tables_newset()
5106 err = nft_set_expr_alloc(&ctx, set, nla, exprs, &num_exprs, flags); in nf_tables_newset()
5112 NL_SET_BAD_ATTR(extack, nla[NFTA_SET_NAME]); in nf_tables_newset()
5128 ops = nft_select_set_ops(&ctx, nla, &desc); in nf_tables_newset()
5133 if (nla[NFTA_SET_USERDATA]) in nf_tables_newset()
5134 udlen = nla_len(nla[NFTA_SET_USERDATA]); in nf_tables_newset()
5138 size = ops->privsize(nla, &desc); in nf_tables_newset()
5152 name = nla_strdup(nla[NFTA_SET_NAME], GFP_KERNEL_ACCOUNT); in nf_tables_newset()
5166 nla_memcpy(udata, nla[NFTA_SET_USERDATA], udlen); in nf_tables_newset()
5192 err = ops->init(set, &desc, nla); in nf_tables_newset()
5196 err = nft_set_expr_alloc(&ctx, set, nla, set->exprs, &num_exprs, flags); in nf_tables_newset()
5263 const struct nlattr * const nla[]) in nf_tables_delset() argument
5277 table = nft_table_lookup(net, nla[NFTA_SET_TABLE], family, in nf_tables_delset()
5280 NL_SET_BAD_ATTR(extack, nla[NFTA_SET_TABLE]); in nf_tables_delset()
5284 if (nla[NFTA_SET_HANDLE]) { in nf_tables_delset()
5285 attr = nla[NFTA_SET_HANDLE]; in nf_tables_delset()
5288 attr = nla[NFTA_SET_NAME]; in nf_tables_delset()
5307 nft_ctx_init(&ctx, net, skb, info->nlh, family, table, NULL, nla); in nf_tables_delset()
6017 struct nlattr *nla[NFTA_SET_ELEM_MAX + 1]; in nft_get_set_elem() local
6023 err = nla_parse_nested_deprecated(nla, NFTA_SET_ELEM_MAX, attr, in nft_get_set_elem()
6028 err = nft_setelem_parse_flags(set, nla[NFTA_SET_ELEM_FLAGS], &flags); in nft_get_set_elem()
6032 if (!nla[NFTA_SET_ELEM_KEY] && !(flags & NFT_SET_ELEM_CATCHALL)) in nft_get_set_elem()
6035 if (nla[NFTA_SET_ELEM_KEY]) { in nft_get_set_elem()
6037 nla[NFTA_SET_ELEM_KEY]); in nft_get_set_elem()
6042 if (nla[NFTA_SET_ELEM_KEY_END]) { in nft_get_set_elem()
6044 nla[NFTA_SET_ELEM_KEY_END]); in nft_get_set_elem()
6074 const struct nlattr * const nla[]) in nf_tables_getsetelem() argument
6087 table = nft_table_lookup(net, nla[NFTA_SET_ELEM_LIST_TABLE], family, in nf_tables_getsetelem()
6090 NL_SET_BAD_ATTR(extack, nla[NFTA_SET_ELEM_LIST_TABLE]); in nf_tables_getsetelem()
6094 set = nft_set_lookup(table, nla[NFTA_SET_ELEM_LIST_SET], genmask); in nf_tables_getsetelem()
6098 nft_ctx_init(&ctx, net, skb, info->nlh, family, table, NULL, nla); in nf_tables_getsetelem()
6116 if (!nla[NFTA_SET_ELEM_LIST_ELEMENTS]) in nf_tables_getsetelem()
6122 nla_for_each_nested(attr, nla[NFTA_SET_ELEM_LIST_ELEMENTS], rem) { in nf_tables_getsetelem()
6577 struct nlattr **nla, u32 flags) in nft_setelem_valid_key_end() argument
6584 if (nla[NFTA_SET_ELEM_KEY_END] && in nft_setelem_valid_key_end()
6588 if (nla[NFTA_SET_ELEM_KEY_END]) in nft_setelem_valid_key_end()
6599 struct nlattr *nla[NFTA_SET_ELEM_MAX + 1]; in nft_add_set_elem() local
6616 err = nla_parse_nested_deprecated(nla, NFTA_SET_ELEM_MAX, attr, in nft_add_set_elem()
6623 err = nft_setelem_parse_flags(set, nla[NFTA_SET_ELEM_FLAGS], &flags); in nft_add_set_elem()
6627 if (((flags & NFT_SET_ELEM_CATCHALL) && nla[NFTA_SET_ELEM_KEY]) || in nft_add_set_elem()
6628 (!(flags & NFT_SET_ELEM_CATCHALL) && !nla[NFTA_SET_ELEM_KEY])) in nft_add_set_elem()
6638 if (nla[NFTA_SET_ELEM_DATA] == NULL && in nft_add_set_elem()
6642 if (nla[NFTA_SET_ELEM_DATA] != NULL) in nft_add_set_elem()
6647 if (!nla[NFTA_SET_ELEM_OBJREF] && in nft_add_set_elem()
6651 if (nla[NFTA_SET_ELEM_OBJREF]) in nft_add_set_elem()
6655 if (!nft_setelem_valid_key_end(set, nla, flags)) in nft_add_set_elem()
6659 (nla[NFTA_SET_ELEM_DATA] || in nft_add_set_elem()
6660 nla[NFTA_SET_ELEM_OBJREF] || in nft_add_set_elem()
6661 nla[NFTA_SET_ELEM_TIMEOUT] || in nft_add_set_elem()
6662 nla[NFTA_SET_ELEM_EXPIRATION] || in nft_add_set_elem()
6663 nla[NFTA_SET_ELEM_USERDATA] || in nft_add_set_elem()
6664 nla[NFTA_SET_ELEM_EXPR] || in nft_add_set_elem()
6665 nla[NFTA_SET_ELEM_KEY_END] || in nft_add_set_elem()
6666 nla[NFTA_SET_ELEM_EXPRESSIONS])) in nft_add_set_elem()
6670 if (nla[NFTA_SET_ELEM_TIMEOUT] != NULL) { in nft_add_set_elem()
6673 err = nf_msecs_to_jiffies64(nla[NFTA_SET_ELEM_TIMEOUT], in nft_add_set_elem()
6683 if (nla[NFTA_SET_ELEM_EXPIRATION] != NULL) { in nft_add_set_elem()
6686 err = nf_msecs_to_jiffies64(nla[NFTA_SET_ELEM_EXPIRATION], in nft_add_set_elem()
6692 if (nla[NFTA_SET_ELEM_EXPR]) { in nft_add_set_elem()
6699 nla[NFTA_SET_ELEM_EXPR]); in nft_add_set_elem()
6710 } else if (nla[NFTA_SET_ELEM_EXPRESSIONS]) { in nft_add_set_elem()
6716 nla_for_each_nested(tmp, nla[NFTA_SET_ELEM_EXPRESSIONS], left) { in nft_add_set_elem()
6753 if (nla[NFTA_SET_ELEM_KEY]) { in nft_add_set_elem()
6755 nla[NFTA_SET_ELEM_KEY]); in nft_add_set_elem()
6764 if (nla[NFTA_SET_ELEM_KEY_END]) { in nft_add_set_elem()
6766 nla[NFTA_SET_ELEM_KEY_END]); in nft_add_set_elem()
6797 if (nla[NFTA_SET_ELEM_OBJREF] != NULL) { in nft_add_set_elem()
6799 nla[NFTA_SET_ELEM_OBJREF], in nft_add_set_elem()
6818 if (nla[NFTA_SET_ELEM_DATA] != NULL) { in nft_add_set_elem()
6820 nla[NFTA_SET_ELEM_DATA]); in nft_add_set_elem()
6859 if (nla[NFTA_SET_ELEM_USERDATA] != NULL) { in nft_add_set_elem()
6860 ulen = nla_len(nla[NFTA_SET_ELEM_USERDATA]); in nft_add_set_elem()
6891 nla_memcpy(&udata->data, nla[NFTA_SET_ELEM_USERDATA], ulen); in nft_add_set_elem()
6952 if (nla[NFTA_SET_ELEM_DATA] != NULL) in nft_add_set_elem()
6970 const struct nlattr * const nla[]) in nf_tables_newsetelem() argument
6982 if (nla[NFTA_SET_ELEM_LIST_ELEMENTS] == NULL) in nf_tables_newsetelem()
6985 table = nft_table_lookup(net, nla[NFTA_SET_ELEM_LIST_TABLE], family, in nf_tables_newsetelem()
6988 NL_SET_BAD_ATTR(extack, nla[NFTA_SET_ELEM_LIST_TABLE]); in nf_tables_newsetelem()
6992 set = nft_set_lookup_global(net, table, nla[NFTA_SET_ELEM_LIST_SET], in nf_tables_newsetelem()
6993 nla[NFTA_SET_ELEM_LIST_SET_ID], genmask); in nf_tables_newsetelem()
7001 nft_ctx_init(&ctx, net, skb, info->nlh, family, table, NULL, nla); in nf_tables_newsetelem()
7003 nla_for_each_nested(attr, nla[NFTA_SET_ELEM_LIST_ELEMENTS], rem) { in nf_tables_newsetelem()
7070 struct nlattr *nla[NFTA_SET_ELEM_MAX + 1]; in nft_del_setelem() local
7078 err = nla_parse_nested_deprecated(nla, NFTA_SET_ELEM_MAX, attr, in nft_del_setelem()
7083 err = nft_setelem_parse_flags(set, nla[NFTA_SET_ELEM_FLAGS], &flags); in nft_del_setelem()
7087 if (!nla[NFTA_SET_ELEM_KEY] && !(flags & NFT_SET_ELEM_CATCHALL)) in nft_del_setelem()
7090 if (!nft_setelem_valid_key_end(set, nla, flags)) in nft_del_setelem()
7101 if (nla[NFTA_SET_ELEM_KEY]) { in nft_del_setelem()
7103 nla[NFTA_SET_ELEM_KEY]); in nft_del_setelem()
7112 if (nla[NFTA_SET_ELEM_KEY_END]) { in nft_del_setelem()
7114 nla[NFTA_SET_ELEM_KEY_END]); in nft_del_setelem()
7250 const struct nlattr * const nla[]) in nf_tables_delsetelem() argument
7262 table = nft_table_lookup(net, nla[NFTA_SET_ELEM_LIST_TABLE], family, in nf_tables_delsetelem()
7265 NL_SET_BAD_ATTR(extack, nla[NFTA_SET_ELEM_LIST_TABLE]); in nf_tables_delsetelem()
7269 set = nft_set_lookup(table, nla[NFTA_SET_ELEM_LIST_SET], genmask); in nf_tables_delsetelem()
7279 nft_ctx_init(&ctx, net, skb, info->nlh, family, table, NULL, nla); in nf_tables_delsetelem()
7281 if (!nla[NFTA_SET_ELEM_LIST_ELEMENTS]) in nf_tables_delsetelem()
7284 nla_for_each_nested(attr, nla[NFTA_SET_ELEM_LIST_ELEMENTS], rem) { in nf_tables_delsetelem()
7338 const struct nlattr *nla, u32 objtype, in nft_obj_lookup() argument
7346 nla_strscpy(search, nla, sizeof(search)); in nft_obj_lookup()
7371 const struct nlattr *nla, in nft_obj_lookup_byhandle() argument
7377 if (be64_to_cpu(nla_get_be64(nla)) == obj->handle && in nft_obj_lookup_byhandle()
7543 const struct nlattr * const nla[]) in nf_tables_newobj() argument
7556 if (!nla[NFTA_OBJ_TYPE] || in nf_tables_newobj()
7557 !nla[NFTA_OBJ_NAME] || in nf_tables_newobj()
7558 !nla[NFTA_OBJ_DATA]) in nf_tables_newobj()
7561 table = nft_table_lookup(net, nla[NFTA_OBJ_TABLE], family, genmask, in nf_tables_newobj()
7564 NL_SET_BAD_ATTR(extack, nla[NFTA_OBJ_TABLE]); in nf_tables_newobj()
7568 objtype = ntohl(nla_get_be32(nla[NFTA_OBJ_TYPE])); in nf_tables_newobj()
7569 obj = nft_obj_lookup(net, table, nla[NFTA_OBJ_NAME], objtype, genmask); in nf_tables_newobj()
7573 NL_SET_BAD_ATTR(extack, nla[NFTA_OBJ_NAME]); in nf_tables_newobj()
7578 NL_SET_BAD_ATTR(extack, nla[NFTA_OBJ_NAME]); in nf_tables_newobj()
7588 nft_ctx_init(&ctx, net, skb, info->nlh, family, table, NULL, nla); in nf_tables_newobj()
7590 return nf_tables_updobj(&ctx, type, nla[NFTA_OBJ_DATA], obj); in nf_tables_newobj()
7593 nft_ctx_init(&ctx, net, skb, info->nlh, family, table, NULL, nla); in nf_tables_newobj()
7604 obj = nft_obj_init(&ctx, type, nla[NFTA_OBJ_DATA]); in nf_tables_newobj()
7612 obj->key.name = nla_strdup(nla[NFTA_OBJ_NAME], GFP_KERNEL_ACCOUNT); in nf_tables_newobj()
7618 if (nla[NFTA_OBJ_USERDATA]) { in nf_tables_newobj()
7619 obj->udata = nla_memdup(nla[NFTA_OBJ_USERDATA], GFP_KERNEL_ACCOUNT); in nf_tables_newobj()
7623 obj->udlen = nla_len(nla[NFTA_OBJ_USERDATA]); in nf_tables_newobj()
7784 const struct nlattr * const *nla = cb->data; in nf_tables_dump_obj_start() local
7787 if (nla[NFTA_OBJ_TABLE] || nla[NFTA_OBJ_TYPE]) { in nf_tables_dump_obj_start()
7792 if (nla[NFTA_OBJ_TABLE]) { in nf_tables_dump_obj_start()
7793 filter->table = nla_strdup(nla[NFTA_OBJ_TABLE], GFP_ATOMIC); in nf_tables_dump_obj_start()
7800 if (nla[NFTA_OBJ_TYPE]) in nf_tables_dump_obj_start()
7801 filter->type = ntohl(nla_get_be32(nla[NFTA_OBJ_TYPE])); in nf_tables_dump_obj_start()
7822 const struct nlattr * const nla[]) in nf_tables_getobj() argument
7841 .data = (void *)nla, in nf_tables_getobj()
7847 if (!nla[NFTA_OBJ_NAME] || in nf_tables_getobj()
7848 !nla[NFTA_OBJ_TYPE]) in nf_tables_getobj()
7851 table = nft_table_lookup(net, nla[NFTA_OBJ_TABLE], family, genmask, 0); in nf_tables_getobj()
7853 NL_SET_BAD_ATTR(extack, nla[NFTA_OBJ_TABLE]); in nf_tables_getobj()
7857 objtype = ntohl(nla_get_be32(nla[NFTA_OBJ_TYPE])); in nf_tables_getobj()
7858 obj = nft_obj_lookup(net, table, nla[NFTA_OBJ_NAME], objtype, genmask); in nf_tables_getobj()
7860 NL_SET_BAD_ATTR(extack, nla[NFTA_OBJ_NAME]); in nf_tables_getobj()
7911 const struct nlattr * const nla[]) in nf_tables_delobj() argument
7923 if (!nla[NFTA_OBJ_TYPE] || in nf_tables_delobj()
7924 (!nla[NFTA_OBJ_NAME] && !nla[NFTA_OBJ_HANDLE])) in nf_tables_delobj()
7927 table = nft_table_lookup(net, nla[NFTA_OBJ_TABLE], family, genmask, in nf_tables_delobj()
7930 NL_SET_BAD_ATTR(extack, nla[NFTA_OBJ_TABLE]); in nf_tables_delobj()
7934 objtype = ntohl(nla_get_be32(nla[NFTA_OBJ_TYPE])); in nf_tables_delobj()
7935 if (nla[NFTA_OBJ_HANDLE]) { in nf_tables_delobj()
7936 attr = nla[NFTA_OBJ_HANDLE]; in nf_tables_delobj()
7939 attr = nla[NFTA_OBJ_NAME]; in nf_tables_delobj()
7956 nft_ctx_init(&ctx, net, skb, info->nlh, family, table, NULL, nla); in nf_tables_delobj()
8052 const struct nlattr *nla, u8 genmask) in nft_flowtable_lookup() argument
8057 if (!nla_strcmp(nla, flowtable->name) && in nft_flowtable_lookup()
8084 const struct nlattr *nla, u8 genmask) in nft_flowtable_lookup_byhandle() argument
8089 if (be64_to_cpu(nla_get_be64(nla)) == flowtable->handle && in nft_flowtable_lookup_byhandle()
8109 const struct nlattr * const nla[], in nft_flowtable_parse_hook() argument
8122 nla[NFTA_FLOWTABLE_HOOK], in nft_flowtable_parse_hook()
8130 NL_SET_BAD_ATTR(extack, nla[NFTA_FLOWTABLE_NAME]); in nft_flowtable_parse_hook()
8314 const struct nlattr * const *nla = ctx->nla; in nft_flowtable_update() local
8322 err = nft_flowtable_parse_hook(ctx, nla, &flowtable_hook, flowtable, in nft_flowtable_update()
8334 if (nla[NFTA_FLOWTABLE_FLAGS]) { in nft_flowtable_update()
8335 flags = ntohl(nla_get_be32(nla[NFTA_FLOWTABLE_FLAGS])); in nft_flowtable_update()
8386 const struct nlattr * const nla[]) in nf_tables_newflowtable() argument
8400 if (!nla[NFTA_FLOWTABLE_TABLE] || in nf_tables_newflowtable()
8401 !nla[NFTA_FLOWTABLE_NAME] || in nf_tables_newflowtable()
8402 !nla[NFTA_FLOWTABLE_HOOK]) in nf_tables_newflowtable()
8405 table = nft_table_lookup(net, nla[NFTA_FLOWTABLE_TABLE], family, in nf_tables_newflowtable()
8408 NL_SET_BAD_ATTR(extack, nla[NFTA_FLOWTABLE_TABLE]); in nf_tables_newflowtable()
8412 flowtable = nft_flowtable_lookup(table, nla[NFTA_FLOWTABLE_NAME], in nf_tables_newflowtable()
8417 NL_SET_BAD_ATTR(extack, nla[NFTA_FLOWTABLE_NAME]); in nf_tables_newflowtable()
8422 NL_SET_BAD_ATTR(extack, nla[NFTA_FLOWTABLE_NAME]); in nf_tables_newflowtable()
8426 nft_ctx_init(&ctx, net, skb, info->nlh, family, table, NULL, nla); in nf_tables_newflowtable()
8431 nft_ctx_init(&ctx, net, skb, info->nlh, family, table, NULL, nla); in nf_tables_newflowtable()
8446 flowtable->name = nla_strdup(nla[NFTA_FLOWTABLE_NAME], GFP_KERNEL_ACCOUNT); in nf_tables_newflowtable()
8458 if (nla[NFTA_FLOWTABLE_FLAGS]) { in nf_tables_newflowtable()
8460 ntohl(nla_get_be32(nla[NFTA_FLOWTABLE_FLAGS])); in nf_tables_newflowtable()
8473 err = nft_flowtable_parse_hook(&ctx, nla, &flowtable_hook, flowtable, in nf_tables_newflowtable()
8531 const struct nlattr * const *nla = ctx->nla; in nft_delflowtable_hook() local
8538 err = nft_flowtable_parse_hook(ctx, nla, &flowtable_hook, flowtable, in nft_delflowtable_hook()
8578 const struct nlattr * const nla[]) in nf_tables_delflowtable() argument
8589 if (!nla[NFTA_FLOWTABLE_TABLE] || in nf_tables_delflowtable()
8590 (!nla[NFTA_FLOWTABLE_NAME] && in nf_tables_delflowtable()
8591 !nla[NFTA_FLOWTABLE_HANDLE])) in nf_tables_delflowtable()
8594 table = nft_table_lookup(net, nla[NFTA_FLOWTABLE_TABLE], family, in nf_tables_delflowtable()
8597 NL_SET_BAD_ATTR(extack, nla[NFTA_FLOWTABLE_TABLE]); in nf_tables_delflowtable()
8601 if (nla[NFTA_FLOWTABLE_HANDLE]) { in nf_tables_delflowtable()
8602 attr = nla[NFTA_FLOWTABLE_HANDLE]; in nf_tables_delflowtable()
8605 attr = nla[NFTA_FLOWTABLE_NAME]; in nf_tables_delflowtable()
8618 nft_ctx_init(&ctx, net, skb, info->nlh, family, table, NULL, nla); in nf_tables_delflowtable()
8620 if (nla[NFTA_FLOWTABLE_HOOK]) in nf_tables_delflowtable()
8749 const struct nlattr * const *nla = cb->data; in nf_tables_dump_flowtable_start() local
8752 if (nla[NFTA_FLOWTABLE_TABLE]) { in nf_tables_dump_flowtable_start()
8757 filter->table = nla_strdup(nla[NFTA_FLOWTABLE_TABLE], in nf_tables_dump_flowtable_start()
8785 const struct nlattr * const nla[]) in nf_tables_getflowtable() argument
8801 .data = (void *)nla, in nf_tables_getflowtable()
8807 if (!nla[NFTA_FLOWTABLE_NAME]) in nf_tables_getflowtable()
8810 table = nft_table_lookup(net, nla[NFTA_FLOWTABLE_TABLE], family, in nf_tables_getflowtable()
8815 flowtable = nft_flowtable_lookup(table, nla[NFTA_FLOWTABLE_NAME], in nf_tables_getflowtable()
8991 const struct nlattr * const nla[]) in nf_tables_getgen() argument
10927 struct nft_data_desc *desc, const struct nlattr *nla) in nft_verdict_init() argument
10934 err = nla_parse_nested_deprecated(tb, NFTA_VERDICT_MAX, nla, in nft_verdict_init()
11034 const struct nlattr *nla) in nft_value_init() argument
11038 len = nla_len(nla); in nft_value_init()
11050 nla_memcpy(data->data, nla, len); in nft_value_init()
11081 struct nft_data_desc *desc, const struct nlattr *nla) in nft_data_init() argument
11089 err = nla_parse_nested_deprecated(tb, NFTA_DATA_MAX, nla, in nft_data_init()