/Linux-v5.4/lib/ |
D | nlattr.c | 47 static int validate_nla_bitfield32(const struct nlattr *nla, in validate_nla_bitfield32() argument 50 const struct nla_bitfield32 *bf = nla_data(nla); in validate_nla_bitfield32() 100 const struct nlattr *nla, in nla_validate_int_range() argument 113 value = nla_get_u8(nla); in nla_validate_int_range() 116 value = nla_get_u16(nla); in nla_validate_int_range() 119 value = nla_get_u32(nla); in nla_validate_int_range() 122 value = nla_get_s8(nla); in nla_validate_int_range() 125 value = nla_get_s16(nla); in nla_validate_int_range() 128 value = nla_get_s32(nla); in nla_validate_int_range() 131 value = nla_get_s64(nla); in nla_validate_int_range() [all …]
|
/Linux-v5.4/tools/lib/bpf/ |
D | nlattr.c | 24 static struct nlattr *nla_next(const struct nlattr *nla, int *remaining) in nla_next() argument 26 int totlen = NLA_ALIGN(nla->nla_len); in nla_next() 29 return (struct nlattr *) ((char *) nla + totlen); in nla_next() 32 static int nla_ok(const struct nlattr *nla, int remaining) in nla_ok() argument 34 return remaining >= sizeof(*nla) && in nla_ok() 35 nla->nla_len >= sizeof(*nla) && in nla_ok() 36 nla->nla_len <= remaining; in nla_ok() 39 static int nla_type(const struct nlattr *nla) in nla_type() argument 41 return nla->nla_type & NLA_TYPE_MASK; in nla_type() 44 static int validate_nla(struct nlattr *nla, int maxtype, in validate_nla() argument [all …]
|
D | nlattr.h | 69 static inline void *libbpf_nla_data(const struct nlattr *nla) in libbpf_nla_data() argument 71 return (char *) nla + NLA_HDRLEN; in libbpf_nla_data() 74 static inline uint8_t libbpf_nla_getattr_u8(const struct nlattr *nla) in libbpf_nla_getattr_u8() argument 76 return *(uint8_t *)libbpf_nla_data(nla); in libbpf_nla_getattr_u8() 79 static inline uint32_t libbpf_nla_getattr_u32(const struct nlattr *nla) in libbpf_nla_getattr_u32() argument 81 return *(uint32_t *)libbpf_nla_data(nla); in libbpf_nla_getattr_u32() 84 static inline const char *libbpf_nla_getattr_str(const struct nlattr *nla) in libbpf_nla_getattr_str() argument 86 return (const char *)libbpf_nla_data(nla); in libbpf_nla_getattr_str() 93 static inline int libbpf_nla_len(const struct nlattr *nla) in libbpf_nla_len() argument 95 return nla->nla_len - NLA_HDRLEN; in libbpf_nla_len() [all …]
|
D | netlink.c | 134 struct nlattr *nla, *nla_xdp; in bpf_set_link_xdp_fd() local 156 nla = (struct nlattr *)(((char *)&req) in bpf_set_link_xdp_fd() 158 nla->nla_type = NLA_F_NESTED | IFLA_XDP; in bpf_set_link_xdp_fd() 159 nla->nla_len = NLA_HDRLEN; in bpf_set_link_xdp_fd() 162 nla_xdp = (struct nlattr *)((char *)nla + nla->nla_len); in bpf_set_link_xdp_fd() 166 nla->nla_len += nla_xdp->nla_len; in bpf_set_link_xdp_fd() 170 nla_xdp = (struct nlattr *)((char *)nla + nla->nla_len); in bpf_set_link_xdp_fd() 174 nla->nla_len += nla_xdp->nla_len; in bpf_set_link_xdp_fd() 177 req.nh.nlmsg_len += NLA_ALIGN(nla->nla_len); in bpf_set_link_xdp_fd()
|
/Linux-v5.4/drivers/block/drbd/ |
D | drbd_nla.c | 7 static int drbd_nla_check_mandatory(int maxtype, struct nlattr *nla) in drbd_nla_check_mandatory() argument 9 struct nlattr *head = nla_data(nla); in drbd_nla_check_mandatory() 10 int len = nla_len(nla); in drbd_nla_check_mandatory() 21 nla_for_each_attr(nla, head, len, rem) { in drbd_nla_check_mandatory() 22 if (nla->nla_type & DRBD_GENLA_F_MANDATORY) { in drbd_nla_check_mandatory() 23 nla->nla_type &= ~DRBD_GENLA_F_MANDATORY; in drbd_nla_check_mandatory() 24 if (nla_type(nla) > maxtype) in drbd_nla_check_mandatory() 31 int drbd_nla_parse_nested(struct nlattr *tb[], int maxtype, struct nlattr *nla, in drbd_nla_parse_nested() argument 36 err = drbd_nla_check_mandatory(maxtype, nla); in drbd_nla_parse_nested() 38 err = nla_parse_nested_deprecated(tb, maxtype, nla, policy, in drbd_nla_parse_nested() [all …]
|
D | drbd_nla.h | 5 extern int drbd_nla_parse_nested(struct nlattr *tb[], int maxtype, struct nlattr *nla, 7 extern struct nlattr *drbd_nla_find_nested(int maxtype, struct nlattr *nla, int attrtype);
|
/Linux-v5.4/include/net/ |
D | netlink.h | 442 size_t nla_strlcpy(char *dst, const struct nlattr *nla, size_t dstsize); 443 char *nla_strdup(const struct nlattr *nla, gfp_t flags); 445 int nla_memcmp(const struct nlattr *nla, const void *data, size_t size); 446 int nla_strcmp(const struct nlattr *nla, const char *str); 1063 static inline int nla_type(const struct nlattr *nla) in nla_type() argument 1065 return nla->nla_type & NLA_TYPE_MASK; in nla_type() 1072 static inline void *nla_data(const struct nlattr *nla) in nla_data() argument 1074 return (char *) nla + NLA_HDRLEN; in nla_data() 1081 static inline int nla_len(const struct nlattr *nla) in nla_len() argument 1083 return nla->nla_len - NLA_HDRLEN; in nla_len() [all …]
|
/Linux-v5.4/net/netfilter/ |
D | nf_tables_api.c | 91 const struct nlattr * const *nla) in nft_ctx_init() argument 98 ctx->nla = nla; in nft_ctx_init() 299 if (msg_type == NFT_MSG_NEWRULE && ctx->nla[NFTA_RULE_ID] != NULL) { in nft_trans_rule_add() 301 ntohl(nla_get_be32(ctx->nla[NFTA_RULE_ID])); in nft_trans_rule_add() 353 if (msg_type == NFT_MSG_NEWSET && ctx->nla[NFTA_SET_ID] != NULL) { in nft_trans_set_add() 355 ntohl(nla_get_be32(ctx->nla[NFTA_SET_ID])); in nft_trans_set_add() 449 const struct nlattr *nla, in nft_table_lookup() argument 454 if (nla == NULL) in nft_table_lookup() 458 if (!nla_strcmp(nla, table->name) && in nft_table_lookup() 468 const struct nlattr *nla, in nft_table_lookup_byhandle() argument [all …]
|
D | nft_log.c | 137 const struct nlattr *nla; in nft_log_init() local 150 nla = tb[NFTA_LOG_PREFIX]; in nft_log_init() 151 if (nla != NULL) { in nft_log_init() 152 priv->prefix = kmalloc(nla_len(nla) + 1, GFP_KERNEL); in nft_log_init() 155 nla_strlcpy(priv->prefix, nla, nla_len(nla) + 1); in nft_log_init()
|
/Linux-v5.4/net/wimax/ |
D | op-msg.c | 172 struct nlattr *nla; in wimax_msg_data_len() local 174 nla = nlmsg_find_attr(nlh, sizeof(struct genlmsghdr), in wimax_msg_data_len() 176 if (nla == NULL) { in wimax_msg_data_len() 180 *size = nla_len(nla); in wimax_msg_data_len() 181 return nla_data(nla); in wimax_msg_data_len() 194 struct nlattr *nla; in wimax_msg_data() local 196 nla = nlmsg_find_attr(nlh, sizeof(struct genlmsghdr), in wimax_msg_data() 198 if (nla == NULL) { in wimax_msg_data() 202 return nla_data(nla); in wimax_msg_data() 215 struct nlattr *nla; in wimax_msg_len() local [all …]
|
/Linux-v5.4/net/ipv4/ |
D | metrics.c | 14 struct nlattr *nla; in ip_metrics_convert() local 20 nla_for_each_attr(nla, fc_mx, fc_mx_len, remaining) { in ip_metrics_convert() 21 int type = nla_type(nla); in ip_metrics_convert() 34 nla_strlcpy(tmp, nla, sizeof(tmp)); in ip_metrics_convert() 41 if (nla_len(nla) != sizeof(u32)) { in ip_metrics_convert() 42 NL_SET_ERR_MSG_ATTR(extack, nla, in ip_metrics_convert() 46 val = nla_get_u32(nla); in ip_metrics_convert()
|
D | fib_semantics.c | 689 struct nlattr *nla, *nlav, *attrs = rtnh_attrs(rtnh); in fib_get_nhs() local 691 nla = nla_find(attrs, attrlen, RTA_GATEWAY); in fib_get_nhs() 693 if (nla && nlav) { in fib_get_nhs() 698 if (nla) { in fib_get_nhs() 699 fib_cfg.fc_gw4 = nla_get_in_addr(nla); in fib_get_nhs() 708 nla = nla_find(attrs, attrlen, RTA_FLOW); in fib_get_nhs() 709 if (nla) in fib_get_nhs() 710 fib_cfg.fc_flow = nla_get_u32(nla); in fib_get_nhs() 713 nla = nla_find(attrs, attrlen, RTA_ENCAP_TYPE); in fib_get_nhs() 714 if (nla) in fib_get_nhs() [all …]
|
/Linux-v5.4/include/linux/ |
D | genl_magic_func.h | 101 #define DPRINT_FIELD(dir, nla_type, name, s, nla) \ argument 105 else if (nla) \ 108 : nla_data(nla)); \ 111 #define DPRINT_ARRAY(dir, nla_type, name, s, nla) \ argument 116 else if (nla) \ 118 nla_data(nla), nla_len(nla)); \ 122 #define DPRINT_FIELD(dir, nla_type, name, s, nla) do {} while (0) argument 123 #define DPRINT_ARRAY(dir, nla_type, name, s, nla) do {} while (0) argument 145 struct nlattr *nla; \ 170 nla = ntb[attr_nr]; \ [all …]
|
/Linux-v5.4/net/sched/ |
D | sch_fifo.c | 144 struct nlattr *nla; in fifo_set_limit() local 151 nla = kmalloc(nla_attr_size(sizeof(struct tc_fifo_qopt)), GFP_KERNEL); in fifo_set_limit() 152 if (nla) { in fifo_set_limit() 153 nla->nla_type = RTM_NEWQDISC; in fifo_set_limit() 154 nla->nla_len = nla_attr_size(sizeof(struct tc_fifo_qopt)); in fifo_set_limit() 155 ((struct tc_fifo_qopt *)nla_data(nla))->limit = limit; in fifo_set_limit() 157 ret = q->ops->change(q, nla, NULL); in fifo_set_limit() 158 kfree(nla); in fifo_set_limit()
|
D | act_bpf.c | 98 struct nlattr *nla; in tcf_bpf_dump_bpf_info() local 103 nla = nla_reserve(skb, TCA_ACT_BPF_OPS, prog->bpf_num_ops * in tcf_bpf_dump_bpf_info() 105 if (nla == NULL) in tcf_bpf_dump_bpf_info() 108 memcpy(nla_data(nla), prog->bpf_ops, nla_len(nla)); in tcf_bpf_dump_bpf_info() 116 struct nlattr *nla; in tcf_bpf_dump_ebpf_info() local 125 nla = nla_reserve(skb, TCA_ACT_BPF_TAG, sizeof(prog->filter->tag)); in tcf_bpf_dump_ebpf_info() 126 if (nla == NULL) in tcf_bpf_dump_ebpf_info() 129 memcpy(nla_data(nla), prog->filter->tag, nla_len(nla)); in tcf_bpf_dump_ebpf_info() 275 static int tcf_bpf_init(struct net *net, struct nlattr *nla, in tcf_bpf_init() argument 290 if (!nla) in tcf_bpf_init() [all …]
|
D | act_tunnel_key.c | 68 tunnel_key_copy_geneve_opt(const struct nlattr *nla, void *dst, int dst_len, in tunnel_key_copy_geneve_opt() argument 77 nla, geneve_opt_policy, extack); in tunnel_key_copy_geneve_opt() 119 static int tunnel_key_copy_opts(const struct nlattr *nla, u8 *dst, in tunnel_key_copy_opts() argument 122 int err, rem, opt_len, len = nla_len(nla), opts_len = 0; in tunnel_key_copy_opts() 123 const struct nlattr *attr, *head = nla_data(nla); in tunnel_key_copy_opts() 163 static int tunnel_key_get_opts_len(struct nlattr *nla, in tunnel_key_get_opts_len() argument 166 return tunnel_key_copy_opts(nla, NULL, 0, extack); in tunnel_key_get_opts_len() 169 static int tunnel_key_opts_set(struct nlattr *nla, struct ip_tunnel_info *info, in tunnel_key_opts_set() argument 173 switch (nla_type(nla_data(nla))) { in tunnel_key_opts_set() 177 return tunnel_key_copy_opts(nla, ip_tunnel_info_opts(info), in tunnel_key_opts_set() [all …]
|
D | em_meta.c | 692 static int meta_var_change(struct meta_value *dst, struct nlattr *nla) in meta_var_change() argument 694 int len = nla_len(nla); in meta_var_change() 696 dst->val = (unsigned long)kmemdup(nla_data(nla), len, GFP_KERNEL); in meta_var_change() 745 static int meta_int_change(struct meta_value *dst, struct nlattr *nla) in meta_int_change() argument 747 if (nla_len(nla) >= sizeof(unsigned long)) { in meta_int_change() 748 dst->val = *(unsigned long *) nla_data(nla); in meta_int_change() 750 } else if (nla_len(nla) == sizeof(u32)) { in meta_int_change() 751 dst->val = nla_get_u32(nla); in meta_int_change() 882 static inline int meta_change_data(struct meta_value *dst, struct nlattr *nla) in meta_change_data() argument 884 if (nla) { in meta_change_data() [all …]
|
D | ematch.c | 171 struct tcf_ematch *em, struct nlattr *nla, int idx) in tcf_em_validate() argument 174 struct tcf_ematch_hdr *em_hdr = nla_data(nla); in tcf_em_validate() 175 int data_len = nla_len(nla) - sizeof(*em_hdr); in tcf_em_validate() 300 int tcf_em_tree_validate(struct tcf_proto *tp, struct nlattr *nla, in tcf_em_tree_validate() argument 310 if (!nla) in tcf_em_tree_validate() 313 err = nla_parse_nested_deprecated(tb, TCA_EMATCH_TREE_MAX, nla, in tcf_em_tree_validate()
|
D | cls_bpf.c | 545 struct nlattr *nla; in cls_bpf_dump_bpf_info() local 550 nla = nla_reserve(skb, TCA_BPF_OPS, prog->bpf_num_ops * in cls_bpf_dump_bpf_info() 552 if (nla == NULL) in cls_bpf_dump_bpf_info() 555 memcpy(nla_data(nla), prog->bpf_ops, nla_len(nla)); in cls_bpf_dump_bpf_info() 563 struct nlattr *nla; in cls_bpf_dump_ebpf_info() local 572 nla = nla_reserve(skb, TCA_BPF_TAG, sizeof(prog->filter->tag)); in cls_bpf_dump_ebpf_info() 573 if (nla == NULL) in cls_bpf_dump_ebpf_info() 576 memcpy(nla_data(nla), prog->filter->tag, nla_len(nla)); in cls_bpf_dump_ebpf_info()
|
/Linux-v5.4/net/openvswitch/ |
D | flow_netlink.c | 53 struct nlattr *nla; in actions_may_change_flow() local 56 nla_for_each_nested(nla, actions, rem) { in actions_may_change_flow() 57 u16 action = nla_type(nla); in actions_may_change_flow() 465 const struct nlattr *nla; in __parse_flow_nlattrs() local 470 nla_for_each_nested(nla, attr, rem) { in __parse_flow_nlattrs() 471 u16 type = nla_type(nla); in __parse_flow_nlattrs() 486 if (!check_attr_len(nla_len(nla), expected_len)) { in __parse_flow_nlattrs() 488 type, nla_len(nla), expected_len); in __parse_flow_nlattrs() 492 if (!nz || !is_all_zero(nla_data(nla), nla_len(nla))) { in __parse_flow_nlattrs() 494 a[type] = nla; in __parse_flow_nlattrs() [all …]
|
D | meter.c | 111 struct nlattr *nla; in ovs_meter_cmd_reply_stats() local 127 nla = nla_nest_start_noflag(reply, OVS_METER_ATTR_BANDS); in ovs_meter_cmd_reply_stats() 128 if (!nla) in ovs_meter_cmd_reply_stats() 143 nla_nest_end(reply, nla); in ovs_meter_cmd_reply_stats() 154 struct nlattr *nla, *band_nla; in ovs_meter_cmd_features() local 166 nla = nla_nest_start_noflag(reply, OVS_METER_ATTR_BANDS); in ovs_meter_cmd_features() 167 if (!nla) in ovs_meter_cmd_features() 177 nla_nest_end(reply, nla); in ovs_meter_cmd_features() 190 struct nlattr *nla; in dp_meter_create() local 201 nla_for_each_nested(nla, a[OVS_METER_ATTR_BANDS], rem) in dp_meter_create() [all …]
|
/Linux-v5.4/net/mpls/ |
D | af_mpls.c | 718 static int nla_get_via(const struct nlattr *nla, u8 *via_alen, u8 *via_table, in nla_get_via() argument 721 struct rtvia *via = nla_data(nla); in nla_get_via() 725 if (nla_len(nla) < offsetof(struct rtvia, rtvia_addr)) { in nla_get_via() 726 NL_SET_ERR_MSG_ATTR(extack, nla, in nla_get_via() 730 alen = nla_len(nla) - in nla_get_via() 733 NL_SET_ERR_MSG_ATTR(extack, nla, in nla_get_via() 845 struct nlattr *nla, *attrs = rtnh_attrs(rtnh); in mpls_count_nexthops() local 850 nla = nla_find(attrs, attrlen, RTA_VIA); in mpls_count_nexthops() 851 if (nla && nla_len(nla) >= in mpls_count_nexthops() 853 int via_alen = nla_len(nla) - in mpls_count_nexthops() [all …]
|
/Linux-v5.4/net/ipv6/ |
D | seg6_local.c | 672 struct nlattr *nla; in put_nla_srh() local 678 nla = nla_reserve(skb, SEG6_LOCAL_SRH, len); in put_nla_srh() 679 if (!nla) in put_nla_srh() 682 memcpy(nla_data(nla), srh, len); in put_nla_srh() 730 struct nlattr *nla; in put_nla_nh4() local 732 nla = nla_reserve(skb, SEG6_LOCAL_NH4, sizeof(struct in_addr)); in put_nla_nh4() 733 if (!nla) in put_nla_nh4() 736 memcpy(nla_data(nla), &slwt->nh4, sizeof(struct in_addr)); in put_nla_nh4() 756 struct nlattr *nla; in put_nla_nh6() local 758 nla = nla_reserve(skb, SEG6_LOCAL_NH6, sizeof(struct in6_addr)); in put_nla_nh6() [all …]
|
/Linux-v5.4/net/psample/ |
D | psample.c | 271 struct nlattr *nla; in psample_sample_packet() local 273 nla = skb_put(nl_skb, nla_len); in psample_sample_packet() 274 nla->nla_type = PSAMPLE_ATTR_DATA; in psample_sample_packet() 275 nla->nla_len = nla_attr_size(data_len); in psample_sample_packet() 277 if (skb_copy_bits(skb, 0, nla_data(nla), data_len)) in psample_sample_packet()
|
/Linux-v5.4/drivers/net/ |
D | gtp.c | 876 static struct gtp_dev *gtp_find_dev(struct net *src_net, struct nlattr *nla[]) in gtp_find_dev() argument 885 if (nla[GTPA_NET_NS_FD]) in gtp_find_dev() 886 net = get_net_ns_by_fd(nla_get_u32(nla[GTPA_NET_NS_FD])); in gtp_find_dev() 894 dev = dev_get_by_index_rcu(net, nla_get_u32(nla[GTPA_LINK])); in gtp_find_dev() 1086 struct nlattr *nla[]) in gtp_find_pdp_by_link() argument 1090 gtp = gtp_find_dev(net, nla); in gtp_find_pdp_by_link() 1094 if (nla[GTPA_MS_ADDRESS]) { in gtp_find_pdp_by_link() 1095 __be32 ip = nla_get_be32(nla[GTPA_MS_ADDRESS]); in gtp_find_pdp_by_link() 1098 } else if (nla[GTPA_VERSION]) { in gtp_find_pdp_by_link() 1099 u32 gtp_version = nla_get_u32(nla[GTPA_VERSION]); in gtp_find_pdp_by_link() [all …]
|