Lines Matching refs:attrs
36 static int verify_one_alg(struct nlattr **attrs, enum xfrm_attr_type_t type) in verify_one_alg() argument
38 struct nlattr *rt = attrs[type]; in verify_one_alg()
62 static int verify_auth_trunc(struct nlattr **attrs) in verify_auth_trunc() argument
64 struct nlattr *rt = attrs[XFRMA_ALG_AUTH_TRUNC]; in verify_auth_trunc()
78 static int verify_aead(struct nlattr **attrs) in verify_aead() argument
80 struct nlattr *rt = attrs[XFRMA_ALG_AEAD]; in verify_aead()
94 static void verify_one_addr(struct nlattr **attrs, enum xfrm_attr_type_t type, in verify_one_addr() argument
97 struct nlattr *rt = attrs[type]; in verify_one_addr()
103 static inline int verify_sec_ctx_len(struct nlattr **attrs) in verify_sec_ctx_len() argument
105 struct nlattr *rt = attrs[XFRMA_SEC_CTX]; in verify_sec_ctx_len()
119 struct nlattr **attrs) in verify_replay() argument
121 struct nlattr *rt = attrs[XFRMA_REPLAY_ESN_VAL]; in verify_replay()
147 struct nlattr **attrs) in verify_newsa_info() argument
177 if ((!attrs[XFRMA_ALG_AUTH] && in verify_newsa_info()
178 !attrs[XFRMA_ALG_AUTH_TRUNC]) || in verify_newsa_info()
179 attrs[XFRMA_ALG_AEAD] || in verify_newsa_info()
180 attrs[XFRMA_ALG_CRYPT] || in verify_newsa_info()
181 attrs[XFRMA_ALG_COMP] || in verify_newsa_info()
182 attrs[XFRMA_TFCPAD]) in verify_newsa_info()
187 if (attrs[XFRMA_ALG_COMP]) in verify_newsa_info()
189 if (!attrs[XFRMA_ALG_AUTH] && in verify_newsa_info()
190 !attrs[XFRMA_ALG_AUTH_TRUNC] && in verify_newsa_info()
191 !attrs[XFRMA_ALG_CRYPT] && in verify_newsa_info()
192 !attrs[XFRMA_ALG_AEAD]) in verify_newsa_info()
194 if ((attrs[XFRMA_ALG_AUTH] || in verify_newsa_info()
195 attrs[XFRMA_ALG_AUTH_TRUNC] || in verify_newsa_info()
196 attrs[XFRMA_ALG_CRYPT]) && in verify_newsa_info()
197 attrs[XFRMA_ALG_AEAD]) in verify_newsa_info()
199 if (attrs[XFRMA_TFCPAD] && in verify_newsa_info()
205 if (!attrs[XFRMA_ALG_COMP] || in verify_newsa_info()
206 attrs[XFRMA_ALG_AEAD] || in verify_newsa_info()
207 attrs[XFRMA_ALG_AUTH] || in verify_newsa_info()
208 attrs[XFRMA_ALG_AUTH_TRUNC] || in verify_newsa_info()
209 attrs[XFRMA_ALG_CRYPT] || in verify_newsa_info()
210 attrs[XFRMA_TFCPAD] || in verify_newsa_info()
218 if (attrs[XFRMA_ALG_COMP] || in verify_newsa_info()
219 attrs[XFRMA_ALG_AUTH] || in verify_newsa_info()
220 attrs[XFRMA_ALG_AUTH_TRUNC] || in verify_newsa_info()
221 attrs[XFRMA_ALG_AEAD] || in verify_newsa_info()
222 attrs[XFRMA_ALG_CRYPT] || in verify_newsa_info()
223 attrs[XFRMA_ENCAP] || in verify_newsa_info()
224 attrs[XFRMA_SEC_CTX] || in verify_newsa_info()
225 attrs[XFRMA_TFCPAD] || in verify_newsa_info()
226 !attrs[XFRMA_COADDR]) in verify_newsa_info()
235 if ((err = verify_aead(attrs))) in verify_newsa_info()
237 if ((err = verify_auth_trunc(attrs))) in verify_newsa_info()
239 if ((err = verify_one_alg(attrs, XFRMA_ALG_AUTH))) in verify_newsa_info()
241 if ((err = verify_one_alg(attrs, XFRMA_ALG_CRYPT))) in verify_newsa_info()
243 if ((err = verify_one_alg(attrs, XFRMA_ALG_COMP))) in verify_newsa_info()
245 if ((err = verify_sec_ctx_len(attrs))) in verify_newsa_info()
247 if ((err = verify_replay(p, attrs))) in verify_newsa_info()
495 static void xfrm_update_ae_params(struct xfrm_state *x, struct nlattr **attrs, in xfrm_update_ae_params() argument
498 struct nlattr *rp = attrs[XFRMA_REPLAY_VAL]; in xfrm_update_ae_params()
499 struct nlattr *re = update_esn ? attrs[XFRMA_REPLAY_ESN_VAL] : NULL; in xfrm_update_ae_params()
500 struct nlattr *lt = attrs[XFRMA_LTIME_VAL]; in xfrm_update_ae_params()
501 struct nlattr *et = attrs[XFRMA_ETIMER_THRESH]; in xfrm_update_ae_params()
502 struct nlattr *rt = attrs[XFRMA_REPLAY_THRESH]; in xfrm_update_ae_params()
536 static void xfrm_smark_init(struct nlattr **attrs, struct xfrm_mark *m) in xfrm_smark_init() argument
538 if (attrs[XFRMA_SET_MARK]) { in xfrm_smark_init()
539 m->v = nla_get_u32(attrs[XFRMA_SET_MARK]); in xfrm_smark_init()
540 if (attrs[XFRMA_SET_MARK_MASK]) in xfrm_smark_init()
541 m->m = nla_get_u32(attrs[XFRMA_SET_MARK_MASK]); in xfrm_smark_init()
551 struct nlattr **attrs, in xfrm_state_construct() argument
562 if (attrs[XFRMA_SA_EXTRA_FLAGS]) in xfrm_state_construct()
563 x->props.extra_flags = nla_get_u32(attrs[XFRMA_SA_EXTRA_FLAGS]); in xfrm_state_construct()
565 if ((err = attach_aead(x, attrs[XFRMA_ALG_AEAD]))) in xfrm_state_construct()
568 attrs[XFRMA_ALG_AUTH_TRUNC]))) in xfrm_state_construct()
572 attrs[XFRMA_ALG_AUTH]))) in xfrm_state_construct()
575 if ((err = attach_crypt(x, attrs[XFRMA_ALG_CRYPT]))) in xfrm_state_construct()
579 attrs[XFRMA_ALG_COMP]))) in xfrm_state_construct()
582 if (attrs[XFRMA_ENCAP]) { in xfrm_state_construct()
583 x->encap = kmemdup(nla_data(attrs[XFRMA_ENCAP]), in xfrm_state_construct()
589 if (attrs[XFRMA_TFCPAD]) in xfrm_state_construct()
590 x->tfcpad = nla_get_u32(attrs[XFRMA_TFCPAD]); in xfrm_state_construct()
592 if (attrs[XFRMA_COADDR]) { in xfrm_state_construct()
593 x->coaddr = kmemdup(nla_data(attrs[XFRMA_COADDR]), in xfrm_state_construct()
599 xfrm_mark_get(attrs, &x->mark); in xfrm_state_construct()
601 xfrm_smark_init(attrs, &x->props.smark); in xfrm_state_construct()
603 if (attrs[XFRMA_IF_ID]) in xfrm_state_construct()
604 x->if_id = nla_get_u32(attrs[XFRMA_IF_ID]); in xfrm_state_construct()
606 err = __xfrm_init_state(x, false, attrs[XFRMA_OFFLOAD_DEV]); in xfrm_state_construct()
610 if (attrs[XFRMA_SEC_CTX]) { in xfrm_state_construct()
612 nla_data(attrs[XFRMA_SEC_CTX])); in xfrm_state_construct()
618 attrs[XFRMA_REPLAY_ESN_VAL]))) in xfrm_state_construct()
630 xfrm_update_ae_params(x, attrs, 0); in xfrm_state_construct()
633 if (attrs[XFRMA_OFFLOAD_DEV]) { in xfrm_state_construct()
635 nla_data(attrs[XFRMA_OFFLOAD_DEV])); in xfrm_state_construct()
651 struct nlattr **attrs) in xfrm_add_sa() argument
659 err = verify_newsa_info(p, attrs); in xfrm_add_sa()
663 x = xfrm_state_construct(net, p, attrs, &err); in xfrm_add_sa()
697 struct nlattr **attrs, in xfrm_user_state_lookup() argument
703 u32 mark = xfrm_mark_get(attrs, &m); in xfrm_user_state_lookup()
711 verify_one_addr(attrs, XFRMA_SRCADDR, &saddr); in xfrm_user_state_lookup()
730 struct nlattr **attrs) in xfrm_del_sa() argument
738 x = xfrm_user_state_lookup(net, p, attrs, &err); in xfrm_del_sa()
1004 struct nlattr *attrs[XFRMA_MAX+1]; in xfrm_dump_sa() local
1009 err = nlmsg_parse(cb->nlh, 0, attrs, XFRMA_MAX, xfrma_policy, in xfrm_dump_sa()
1014 if (attrs[XFRMA_ADDRESS_FILTER]) { in xfrm_dump_sa()
1015 filter = kmemdup(nla_data(attrs[XFRMA_ADDRESS_FILTER]), in xfrm_dump_sa()
1021 if (attrs[XFRMA_PROTO]) in xfrm_dump_sa()
1022 proto = nla_get_u8(attrs[XFRMA_PROTO]); in xfrm_dump_sa()
1137 struct nlattr **attrs) in xfrm_set_spdinfo() argument
1144 if (attrs[XFRMA_SPD_IPV4_HTHRESH]) { in xfrm_set_spdinfo()
1145 struct nlattr *rta = attrs[XFRMA_SPD_IPV4_HTHRESH]; in xfrm_set_spdinfo()
1153 if (attrs[XFRMA_SPD_IPV6_HTHRESH]) { in xfrm_set_spdinfo()
1154 struct nlattr *rta = attrs[XFRMA_SPD_IPV6_HTHRESH]; in xfrm_set_spdinfo()
1182 struct nlattr **attrs) in xfrm_get_spdinfo() argument
1241 struct nlattr **attrs) in xfrm_get_sadinfo() argument
1261 struct nlattr **attrs) in xfrm_get_sa() argument
1269 x = xfrm_user_state_lookup(net, p, attrs, &err); in xfrm_get_sa()
1285 struct nlattr **attrs) in xfrm_alloc_userspi() argument
1308 mark = xfrm_mark_get(attrs, &m); in xfrm_alloc_userspi()
1310 if (attrs[XFRMA_IF_ID]) in xfrm_alloc_userspi()
1311 if_id = nla_get_u32(attrs[XFRMA_IF_ID]); in xfrm_alloc_userspi()
1433 static int copy_from_user_sec_ctx(struct xfrm_policy *pol, struct nlattr **attrs) in copy_from_user_sec_ctx() argument
1435 struct nlattr *rt = attrs[XFRMA_SEC_CTX]; in copy_from_user_sec_ctx()
1530 static int copy_from_user_tmpl(struct xfrm_policy *pol, struct nlattr **attrs) in copy_from_user_tmpl() argument
1532 struct nlattr *rt = attrs[XFRMA_TMPL]; in copy_from_user_tmpl()
1550 static int copy_from_user_policy_type(u8 *tp, struct nlattr **attrs) in copy_from_user_policy_type() argument
1552 struct nlattr *rt = attrs[XFRMA_POLICY_TYPE]; in copy_from_user_policy_type()
1597 …policy_construct(struct net *net, struct xfrm_userpolicy_info *p, struct nlattr **attrs, int *errp) in xfrm_policy_construct() argument
1609 err = copy_from_user_policy_type(&xp->type, attrs); in xfrm_policy_construct()
1613 if (!(err = copy_from_user_tmpl(xp, attrs))) in xfrm_policy_construct()
1614 err = copy_from_user_sec_ctx(xp, attrs); in xfrm_policy_construct()
1618 xfrm_mark_get(attrs, &xp->mark); in xfrm_policy_construct()
1620 if (attrs[XFRMA_IF_ID]) in xfrm_policy_construct()
1621 xp->if_id = nla_get_u32(attrs[XFRMA_IF_ID]); in xfrm_policy_construct()
1632 struct nlattr **attrs) in xfrm_add_policy() argument
1644 err = verify_sec_ctx_len(attrs); in xfrm_add_policy()
1648 xp = xfrm_policy_construct(net, p, attrs, &err); in xfrm_add_policy()
1842 struct nlattr **attrs) in xfrm_get_policy() argument
1852 u32 mark = xfrm_mark_get(attrs, &m); in xfrm_get_policy()
1858 err = copy_from_user_policy_type(&type, attrs); in xfrm_get_policy()
1866 if (attrs[XFRMA_IF_ID]) in xfrm_get_policy()
1867 if_id = nla_get_u32(attrs[XFRMA_IF_ID]); in xfrm_get_policy()
1872 struct nlattr *rt = attrs[XFRMA_SEC_CTX]; in xfrm_get_policy()
1875 err = verify_sec_ctx_len(attrs); in xfrm_get_policy()
1923 struct nlattr **attrs) in xfrm_flush_sa() argument
2023 struct nlattr **attrs) in xfrm_get_ae() argument
2035 mark = xfrm_mark_get(attrs, &m); in xfrm_get_ae()
2067 struct nlattr **attrs) in xfrm_new_ae() argument
2076 struct nlattr *rp = attrs[XFRMA_REPLAY_VAL]; in xfrm_new_ae()
2077 struct nlattr *re = attrs[XFRMA_REPLAY_ESN_VAL]; in xfrm_new_ae()
2078 struct nlattr *lt = attrs[XFRMA_LTIME_VAL]; in xfrm_new_ae()
2079 struct nlattr *et = attrs[XFRMA_ETIMER_THRESH]; in xfrm_new_ae()
2080 struct nlattr *rt = attrs[XFRMA_REPLAY_THRESH]; in xfrm_new_ae()
2089 mark = xfrm_mark_get(attrs, &m); in xfrm_new_ae()
2103 xfrm_update_ae_params(x, attrs, 1); in xfrm_new_ae()
2118 struct nlattr **attrs) in xfrm_flush_policy() argument
2125 err = copy_from_user_policy_type(&type, attrs); in xfrm_flush_policy()
2146 struct nlattr **attrs) in xfrm_add_pol_expire() argument
2155 u32 mark = xfrm_mark_get(attrs, &m); in xfrm_add_pol_expire()
2158 err = copy_from_user_policy_type(&type, attrs); in xfrm_add_pol_expire()
2166 if (attrs[XFRMA_IF_ID]) in xfrm_add_pol_expire()
2167 if_id = nla_get_u32(attrs[XFRMA_IF_ID]); in xfrm_add_pol_expire()
2172 struct nlattr *rt = attrs[XFRMA_SEC_CTX]; in xfrm_add_pol_expire()
2175 err = verify_sec_ctx_len(attrs); in xfrm_add_pol_expire()
2210 struct nlattr **attrs) in xfrm_add_sa_expire() argument
2218 u32 mark = xfrm_mark_get(attrs, &m); in xfrm_add_sa_expire()
2244 struct nlattr **attrs) in xfrm_add_acquire() argument
2250 struct nlattr *rt = attrs[XFRMA_TMPL]; in xfrm_add_acquire()
2260 xfrm_mark_get(attrs, &mark); in xfrm_add_acquire()
2267 xp = xfrm_policy_construct(net, &ua->policy, attrs, &err); in xfrm_add_acquire()
2305 struct nlattr **attrs, int *num) in copy_from_user_migrate() argument
2307 struct nlattr *rt = attrs[XFRMA_MIGRATE]; in copy_from_user_migrate()
2314 uk = nla_data(attrs[XFRMA_KMADDRESS]); in copy_from_user_migrate()
2346 struct nlattr **attrs) in xfrm_do_migrate() argument
2357 if (attrs[XFRMA_MIGRATE] == NULL) in xfrm_do_migrate()
2360 kmp = attrs[XFRMA_KMADDRESS] ? &km : NULL; in xfrm_do_migrate()
2362 err = copy_from_user_policy_type(&type, attrs); in xfrm_do_migrate()
2366 err = copy_from_user_migrate((struct xfrm_migrate *)m, kmp, attrs, &n); in xfrm_do_migrate()
2373 if (attrs[XFRMA_ENCAP]) { in xfrm_do_migrate()
2374 encap = kmemdup(nla_data(attrs[XFRMA_ENCAP]), in xfrm_do_migrate()
2388 struct nlattr **attrs) in xfrm_do_migrate() argument
2620 struct nlattr *attrs[XFRMA_MAX+1]; in xfrm_user_rcv_msg() local
2656 err = nlmsg_parse(nlh, xfrm_msg_min[type], attrs, in xfrm_user_rcv_msg()
2665 return link->doit(skb, nlh, attrs); in xfrm_user_rcv_msg()