Lines Matching refs:attrs

35 static int verify_one_alg(struct nlattr **attrs, enum xfrm_attr_type_t type)  in verify_one_alg()  argument
37 struct nlattr *rt = attrs[type]; in verify_one_alg()
61 static int verify_auth_trunc(struct nlattr **attrs) in verify_auth_trunc() argument
63 struct nlattr *rt = attrs[XFRMA_ALG_AUTH_TRUNC]; in verify_auth_trunc()
77 static int verify_aead(struct nlattr **attrs) in verify_aead() argument
79 struct nlattr *rt = attrs[XFRMA_ALG_AEAD]; in verify_aead()
93 static void verify_one_addr(struct nlattr **attrs, enum xfrm_attr_type_t type, in verify_one_addr() argument
96 struct nlattr *rt = attrs[type]; in verify_one_addr()
102 static inline int verify_sec_ctx_len(struct nlattr **attrs) in verify_sec_ctx_len() argument
104 struct nlattr *rt = attrs[XFRMA_SEC_CTX]; in verify_sec_ctx_len()
118 struct nlattr **attrs) in verify_replay() argument
120 struct nlattr *rt = attrs[XFRMA_REPLAY_ESN_VAL]; in verify_replay()
151 struct nlattr **attrs) in verify_newsa_info() argument
175 if ((!attrs[XFRMA_ALG_AUTH] && in verify_newsa_info()
176 !attrs[XFRMA_ALG_AUTH_TRUNC]) || in verify_newsa_info()
177 attrs[XFRMA_ALG_AEAD] || in verify_newsa_info()
178 attrs[XFRMA_ALG_CRYPT] || in verify_newsa_info()
179 attrs[XFRMA_ALG_COMP] || in verify_newsa_info()
180 attrs[XFRMA_TFCPAD]) in verify_newsa_info()
185 if (attrs[XFRMA_ALG_COMP]) in verify_newsa_info()
187 if (!attrs[XFRMA_ALG_AUTH] && in verify_newsa_info()
188 !attrs[XFRMA_ALG_AUTH_TRUNC] && in verify_newsa_info()
189 !attrs[XFRMA_ALG_CRYPT] && in verify_newsa_info()
190 !attrs[XFRMA_ALG_AEAD]) in verify_newsa_info()
192 if ((attrs[XFRMA_ALG_AUTH] || in verify_newsa_info()
193 attrs[XFRMA_ALG_AUTH_TRUNC] || in verify_newsa_info()
194 attrs[XFRMA_ALG_CRYPT]) && in verify_newsa_info()
195 attrs[XFRMA_ALG_AEAD]) in verify_newsa_info()
197 if (attrs[XFRMA_TFCPAD] && in verify_newsa_info()
203 if (!attrs[XFRMA_ALG_COMP] || in verify_newsa_info()
204 attrs[XFRMA_ALG_AEAD] || in verify_newsa_info()
205 attrs[XFRMA_ALG_AUTH] || in verify_newsa_info()
206 attrs[XFRMA_ALG_AUTH_TRUNC] || in verify_newsa_info()
207 attrs[XFRMA_ALG_CRYPT] || in verify_newsa_info()
208 attrs[XFRMA_TFCPAD] || in verify_newsa_info()
216 if (attrs[XFRMA_ALG_COMP] || in verify_newsa_info()
217 attrs[XFRMA_ALG_AUTH] || in verify_newsa_info()
218 attrs[XFRMA_ALG_AUTH_TRUNC] || in verify_newsa_info()
219 attrs[XFRMA_ALG_AEAD] || in verify_newsa_info()
220 attrs[XFRMA_ALG_CRYPT] || in verify_newsa_info()
221 attrs[XFRMA_ENCAP] || in verify_newsa_info()
222 attrs[XFRMA_SEC_CTX] || in verify_newsa_info()
223 attrs[XFRMA_TFCPAD] || in verify_newsa_info()
224 !attrs[XFRMA_COADDR]) in verify_newsa_info()
233 if ((err = verify_aead(attrs))) in verify_newsa_info()
235 if ((err = verify_auth_trunc(attrs))) in verify_newsa_info()
237 if ((err = verify_one_alg(attrs, XFRMA_ALG_AUTH))) in verify_newsa_info()
239 if ((err = verify_one_alg(attrs, XFRMA_ALG_CRYPT))) in verify_newsa_info()
241 if ((err = verify_one_alg(attrs, XFRMA_ALG_COMP))) in verify_newsa_info()
243 if ((err = verify_sec_ctx_len(attrs))) in verify_newsa_info()
245 if ((err = verify_replay(p, attrs))) in verify_newsa_info()
461 static void xfrm_update_ae_params(struct xfrm_state *x, struct nlattr **attrs, in xfrm_update_ae_params() argument
464 struct nlattr *rp = attrs[XFRMA_REPLAY_VAL]; in xfrm_update_ae_params()
465 struct nlattr *re = update_esn ? attrs[XFRMA_REPLAY_ESN_VAL] : NULL; in xfrm_update_ae_params()
466 struct nlattr *lt = attrs[XFRMA_LTIME_VAL]; in xfrm_update_ae_params()
467 struct nlattr *et = attrs[XFRMA_ETIMER_THRESH]; in xfrm_update_ae_params()
468 struct nlattr *rt = attrs[XFRMA_REPLAY_THRESH]; in xfrm_update_ae_params()
504 struct nlattr **attrs, in xfrm_state_construct() argument
515 if (attrs[XFRMA_SA_EXTRA_FLAGS]) in xfrm_state_construct()
516 x->props.extra_flags = nla_get_u32(attrs[XFRMA_SA_EXTRA_FLAGS]); in xfrm_state_construct()
519 attrs[XFRMA_ALG_AEAD]))) in xfrm_state_construct()
522 attrs[XFRMA_ALG_AUTH_TRUNC]))) in xfrm_state_construct()
526 attrs[XFRMA_ALG_AUTH]))) in xfrm_state_construct()
531 attrs[XFRMA_ALG_CRYPT]))) in xfrm_state_construct()
535 attrs[XFRMA_ALG_COMP]))) in xfrm_state_construct()
538 if (attrs[XFRMA_ENCAP]) { in xfrm_state_construct()
539 x->encap = kmemdup(nla_data(attrs[XFRMA_ENCAP]), in xfrm_state_construct()
545 if (attrs[XFRMA_TFCPAD]) in xfrm_state_construct()
546 x->tfcpad = nla_get_u32(attrs[XFRMA_TFCPAD]); in xfrm_state_construct()
548 if (attrs[XFRMA_COADDR]) { in xfrm_state_construct()
549 x->coaddr = kmemdup(nla_data(attrs[XFRMA_COADDR]), in xfrm_state_construct()
555 xfrm_mark_get(attrs, &x->mark); in xfrm_state_construct()
561 if (attrs[XFRMA_SEC_CTX] && in xfrm_state_construct()
562 security_xfrm_state_alloc(x, nla_data(attrs[XFRMA_SEC_CTX]))) in xfrm_state_construct()
566 attrs[XFRMA_REPLAY_ESN_VAL]))) in xfrm_state_construct()
578 xfrm_update_ae_params(x, attrs, 0); in xfrm_state_construct()
591 struct nlattr **attrs) in xfrm_add_sa() argument
599 err = verify_newsa_info(p, attrs); in xfrm_add_sa()
603 x = xfrm_state_construct(net, p, attrs, &err); in xfrm_add_sa()
633 struct nlattr **attrs, in xfrm_user_state_lookup() argument
639 u32 mark = xfrm_mark_get(attrs, &m); in xfrm_user_state_lookup()
647 verify_one_addr(attrs, XFRMA_SRCADDR, &saddr); in xfrm_user_state_lookup()
666 struct nlattr **attrs) in xfrm_del_sa() argument
674 x = xfrm_user_state_lookup(net, p, attrs, &err); in xfrm_del_sa()
893 struct nlattr *attrs[XFRMA_MAX+1]; in xfrm_dump_sa() local
900 err = nlmsg_parse(cb->nlh, 0, attrs, XFRMA_MAX, in xfrm_dump_sa()
905 if (attrs[XFRMA_ADDRESS_FILTER]) { in xfrm_dump_sa()
910 memcpy(filter, nla_data(attrs[XFRMA_ADDRESS_FILTER]), in xfrm_dump_sa()
914 if (attrs[XFRMA_PROTO]) in xfrm_dump_sa()
915 proto = nla_get_u8(attrs[XFRMA_PROTO]); in xfrm_dump_sa()
1027 struct nlattr **attrs) in xfrm_set_spdinfo() argument
1034 if (attrs[XFRMA_SPD_IPV4_HTHRESH]) { in xfrm_set_spdinfo()
1035 struct nlattr *rta = attrs[XFRMA_SPD_IPV4_HTHRESH]; in xfrm_set_spdinfo()
1043 if (attrs[XFRMA_SPD_IPV6_HTHRESH]) { in xfrm_set_spdinfo()
1044 struct nlattr *rta = attrs[XFRMA_SPD_IPV6_HTHRESH]; in xfrm_set_spdinfo()
1072 struct nlattr **attrs) in xfrm_get_spdinfo() argument
1130 struct nlattr **attrs) in xfrm_get_sadinfo() argument
1149 struct nlattr **attrs) in xfrm_get_sa() argument
1157 x = xfrm_user_state_lookup(net, p, attrs, &err); in xfrm_get_sa()
1173 struct nlattr **attrs) in xfrm_alloc_userspi() argument
1195 mark = xfrm_mark_get(attrs, &m); in xfrm_alloc_userspi()
1310 static int copy_from_user_sec_ctx(struct xfrm_policy *pol, struct nlattr **attrs) in copy_from_user_sec_ctx() argument
1312 struct nlattr *rt = attrs[XFRMA_SEC_CTX]; in copy_from_user_sec_ctx()
1380 static int copy_from_user_tmpl(struct xfrm_policy *pol, struct nlattr **attrs) in copy_from_user_tmpl() argument
1382 struct nlattr *rt = attrs[XFRMA_TMPL]; in copy_from_user_tmpl()
1400 static int copy_from_user_policy_type(u8 *tp, struct nlattr **attrs) in copy_from_user_policy_type() argument
1402 struct nlattr *rt = attrs[XFRMA_POLICY_TYPE]; in copy_from_user_policy_type()
1447 …policy_construct(struct net *net, struct xfrm_userpolicy_info *p, struct nlattr **attrs, int *errp) in xfrm_policy_construct() argument
1459 err = copy_from_user_policy_type(&xp->type, attrs); in xfrm_policy_construct()
1463 if (!(err = copy_from_user_tmpl(xp, attrs))) in xfrm_policy_construct()
1464 err = copy_from_user_sec_ctx(xp, attrs); in xfrm_policy_construct()
1468 xfrm_mark_get(attrs, &xp->mark); in xfrm_policy_construct()
1479 struct nlattr **attrs) in xfrm_add_policy() argument
1491 err = verify_sec_ctx_len(attrs); in xfrm_add_policy()
1495 xp = xfrm_policy_construct(net, p, attrs, &err); in xfrm_add_policy()
1683 struct nlattr **attrs) in xfrm_get_policy() argument
1693 u32 mark = xfrm_mark_get(attrs, &m); in xfrm_get_policy()
1698 err = copy_from_user_policy_type(&type, attrs); in xfrm_get_policy()
1709 struct nlattr *rt = attrs[XFRMA_SEC_CTX]; in xfrm_get_policy()
1712 err = verify_sec_ctx_len(attrs); in xfrm_get_policy()
1762 struct nlattr **attrs) in xfrm_flush_sa() argument
1856 struct nlattr **attrs) in xfrm_get_ae() argument
1868 mark = xfrm_mark_get(attrs, &m); in xfrm_get_ae()
1899 struct nlattr **attrs) in xfrm_new_ae() argument
1908 struct nlattr *rp = attrs[XFRMA_REPLAY_VAL]; in xfrm_new_ae()
1909 struct nlattr *re = attrs[XFRMA_REPLAY_ESN_VAL]; in xfrm_new_ae()
1910 struct nlattr *lt = attrs[XFRMA_LTIME_VAL]; in xfrm_new_ae()
1919 mark = xfrm_mark_get(attrs, &m); in xfrm_new_ae()
1933 xfrm_update_ae_params(x, attrs, 1); in xfrm_new_ae()
1948 struct nlattr **attrs) in xfrm_flush_policy() argument
1955 err = copy_from_user_policy_type(&type, attrs); in xfrm_flush_policy()
1976 struct nlattr **attrs) in xfrm_add_pol_expire() argument
1985 u32 mark = xfrm_mark_get(attrs, &m); in xfrm_add_pol_expire()
1987 err = copy_from_user_policy_type(&type, attrs); in xfrm_add_pol_expire()
1998 struct nlattr *rt = attrs[XFRMA_SEC_CTX]; in xfrm_add_pol_expire()
2001 err = verify_sec_ctx_len(attrs); in xfrm_add_pol_expire()
2039 struct nlattr **attrs) in xfrm_add_sa_expire() argument
2047 u32 mark = xfrm_mark_get(attrs, &m); in xfrm_add_sa_expire()
2073 struct nlattr **attrs) in xfrm_add_acquire() argument
2079 struct nlattr *rt = attrs[XFRMA_TMPL]; in xfrm_add_acquire()
2089 xfrm_mark_get(attrs, &mark); in xfrm_add_acquire()
2096 xp = xfrm_policy_construct(net, &ua->policy, attrs, &err); in xfrm_add_acquire()
2136 struct nlattr **attrs, int *num) in copy_from_user_migrate() argument
2138 struct nlattr *rt = attrs[XFRMA_MIGRATE]; in copy_from_user_migrate()
2145 uk = nla_data(attrs[XFRMA_KMADDRESS]); in copy_from_user_migrate()
2177 struct nlattr **attrs) in xfrm_do_migrate() argument
2187 if (attrs[XFRMA_MIGRATE] == NULL) in xfrm_do_migrate()
2190 kmp = attrs[XFRMA_KMADDRESS] ? &km : NULL; in xfrm_do_migrate()
2192 err = copy_from_user_policy_type(&type, attrs); in xfrm_do_migrate()
2196 err = copy_from_user_migrate((struct xfrm_migrate *)m, kmp, attrs, &n); in xfrm_do_migrate()
2209 struct nlattr **attrs) in xfrm_do_migrate() argument
2422 struct nlattr *attrs[XFRMA_MAX+1]; in xfrm_user_rcv_msg() local
2457 err = nlmsg_parse(nlh, xfrm_msg_min[type], attrs, in xfrm_user_rcv_msg()
2466 return link->doit(skb, nlh, attrs); in xfrm_user_rcv_msg()