• Home
  • Raw
  • Download

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()
120 struct nlattr **attrs) in verify_replay() argument
122 struct nlattr *rt = attrs[XFRMA_REPLAY_ESN_VAL]; in verify_replay()
148 struct nlattr **attrs) in verify_newsa_info() argument
197 if ((!attrs[XFRMA_ALG_AUTH] && in verify_newsa_info()
198 !attrs[XFRMA_ALG_AUTH_TRUNC]) || in verify_newsa_info()
199 attrs[XFRMA_ALG_AEAD] || in verify_newsa_info()
200 attrs[XFRMA_ALG_CRYPT] || in verify_newsa_info()
201 attrs[XFRMA_ALG_COMP] || in verify_newsa_info()
202 attrs[XFRMA_TFCPAD]) in verify_newsa_info()
207 if (attrs[XFRMA_ALG_COMP]) in verify_newsa_info()
209 if (!attrs[XFRMA_ALG_AUTH] && in verify_newsa_info()
210 !attrs[XFRMA_ALG_AUTH_TRUNC] && in verify_newsa_info()
211 !attrs[XFRMA_ALG_CRYPT] && in verify_newsa_info()
212 !attrs[XFRMA_ALG_AEAD]) in verify_newsa_info()
214 if ((attrs[XFRMA_ALG_AUTH] || in verify_newsa_info()
215 attrs[XFRMA_ALG_AUTH_TRUNC] || in verify_newsa_info()
216 attrs[XFRMA_ALG_CRYPT]) && in verify_newsa_info()
217 attrs[XFRMA_ALG_AEAD]) in verify_newsa_info()
219 if (attrs[XFRMA_TFCPAD] && in verify_newsa_info()
225 if (!attrs[XFRMA_ALG_COMP] || in verify_newsa_info()
226 attrs[XFRMA_ALG_AEAD] || in verify_newsa_info()
227 attrs[XFRMA_ALG_AUTH] || in verify_newsa_info()
228 attrs[XFRMA_ALG_AUTH_TRUNC] || in verify_newsa_info()
229 attrs[XFRMA_ALG_CRYPT] || in verify_newsa_info()
230 attrs[XFRMA_TFCPAD] || in verify_newsa_info()
238 if (attrs[XFRMA_ALG_COMP] || in verify_newsa_info()
239 attrs[XFRMA_ALG_AUTH] || in verify_newsa_info()
240 attrs[XFRMA_ALG_AUTH_TRUNC] || in verify_newsa_info()
241 attrs[XFRMA_ALG_AEAD] || in verify_newsa_info()
242 attrs[XFRMA_ALG_CRYPT] || in verify_newsa_info()
243 attrs[XFRMA_ENCAP] || in verify_newsa_info()
244 attrs[XFRMA_SEC_CTX] || in verify_newsa_info()
245 attrs[XFRMA_TFCPAD] || in verify_newsa_info()
246 !attrs[XFRMA_COADDR]) in verify_newsa_info()
255 if ((err = verify_aead(attrs))) in verify_newsa_info()
257 if ((err = verify_auth_trunc(attrs))) in verify_newsa_info()
259 if ((err = verify_one_alg(attrs, XFRMA_ALG_AUTH))) in verify_newsa_info()
261 if ((err = verify_one_alg(attrs, XFRMA_ALG_CRYPT))) in verify_newsa_info()
263 if ((err = verify_one_alg(attrs, XFRMA_ALG_COMP))) in verify_newsa_info()
265 if ((err = verify_sec_ctx_len(attrs))) in verify_newsa_info()
267 if ((err = verify_replay(p, attrs))) in verify_newsa_info()
515 static void xfrm_update_ae_params(struct xfrm_state *x, struct nlattr **attrs, in xfrm_update_ae_params() argument
518 struct nlattr *rp = attrs[XFRMA_REPLAY_VAL]; in xfrm_update_ae_params()
519 struct nlattr *re = update_esn ? attrs[XFRMA_REPLAY_ESN_VAL] : NULL; in xfrm_update_ae_params()
520 struct nlattr *lt = attrs[XFRMA_LTIME_VAL]; in xfrm_update_ae_params()
521 struct nlattr *et = attrs[XFRMA_ETIMER_THRESH]; in xfrm_update_ae_params()
522 struct nlattr *rt = attrs[XFRMA_REPLAY_THRESH]; in xfrm_update_ae_params()
556 static void xfrm_smark_init(struct nlattr **attrs, struct xfrm_mark *m) in xfrm_smark_init() argument
558 if (attrs[XFRMA_SET_MARK]) { in xfrm_smark_init()
559 m->v = nla_get_u32(attrs[XFRMA_SET_MARK]); in xfrm_smark_init()
560 if (attrs[XFRMA_SET_MARK_MASK]) in xfrm_smark_init()
561 m->m = nla_get_u32(attrs[XFRMA_SET_MARK_MASK]); in xfrm_smark_init()
571 struct nlattr **attrs, in xfrm_state_construct() argument
582 if (attrs[XFRMA_SA_EXTRA_FLAGS]) in xfrm_state_construct()
583 x->props.extra_flags = nla_get_u32(attrs[XFRMA_SA_EXTRA_FLAGS]); in xfrm_state_construct()
585 if ((err = attach_aead(x, attrs[XFRMA_ALG_AEAD]))) in xfrm_state_construct()
588 attrs[XFRMA_ALG_AUTH_TRUNC]))) in xfrm_state_construct()
592 attrs[XFRMA_ALG_AUTH]))) in xfrm_state_construct()
595 if ((err = attach_crypt(x, attrs[XFRMA_ALG_CRYPT]))) in xfrm_state_construct()
599 attrs[XFRMA_ALG_COMP]))) in xfrm_state_construct()
602 if (attrs[XFRMA_ENCAP]) { in xfrm_state_construct()
603 x->encap = kmemdup(nla_data(attrs[XFRMA_ENCAP]), in xfrm_state_construct()
609 if (attrs[XFRMA_TFCPAD]) in xfrm_state_construct()
610 x->tfcpad = nla_get_u32(attrs[XFRMA_TFCPAD]); in xfrm_state_construct()
612 if (attrs[XFRMA_COADDR]) { in xfrm_state_construct()
613 x->coaddr = kmemdup(nla_data(attrs[XFRMA_COADDR]), in xfrm_state_construct()
619 xfrm_mark_get(attrs, &x->mark); in xfrm_state_construct()
621 xfrm_smark_init(attrs, &x->props.smark); in xfrm_state_construct()
623 if (attrs[XFRMA_IF_ID]) in xfrm_state_construct()
624 x->if_id = nla_get_u32(attrs[XFRMA_IF_ID]); in xfrm_state_construct()
626 err = __xfrm_init_state(x, false, attrs[XFRMA_OFFLOAD_DEV]); in xfrm_state_construct()
630 if (attrs[XFRMA_SEC_CTX]) { in xfrm_state_construct()
632 nla_data(attrs[XFRMA_SEC_CTX])); in xfrm_state_construct()
637 if (attrs[XFRMA_OFFLOAD_DEV]) { in xfrm_state_construct()
639 nla_data(attrs[XFRMA_OFFLOAD_DEV])); in xfrm_state_construct()
645 attrs[XFRMA_REPLAY_ESN_VAL]))) in xfrm_state_construct()
657 xfrm_update_ae_params(x, attrs, 0); in xfrm_state_construct()
670 struct nlattr **attrs) in xfrm_add_sa() argument
678 err = verify_newsa_info(p, attrs); in xfrm_add_sa()
682 x = xfrm_state_construct(net, p, attrs, &err); in xfrm_add_sa()
713 struct nlattr **attrs, in xfrm_user_state_lookup() argument
719 u32 mark = xfrm_mark_get(attrs, &m); in xfrm_user_state_lookup()
727 verify_one_addr(attrs, XFRMA_SRCADDR, &saddr); in xfrm_user_state_lookup()
746 struct nlattr **attrs) in xfrm_del_sa() argument
754 x = xfrm_user_state_lookup(net, p, attrs, &err); in xfrm_del_sa()
1020 struct nlattr *attrs[XFRMA_MAX+1]; in xfrm_dump_sa() local
1025 err = nlmsg_parse(cb->nlh, 0, attrs, XFRMA_MAX, xfrma_policy, in xfrm_dump_sa()
1030 if (attrs[XFRMA_ADDRESS_FILTER]) { in xfrm_dump_sa()
1031 filter = kmemdup(nla_data(attrs[XFRMA_ADDRESS_FILTER]), in xfrm_dump_sa()
1037 if (attrs[XFRMA_PROTO]) in xfrm_dump_sa()
1038 proto = nla_get_u8(attrs[XFRMA_PROTO]); in xfrm_dump_sa()
1153 struct nlattr **attrs) in xfrm_set_spdinfo() argument
1160 if (attrs[XFRMA_SPD_IPV4_HTHRESH]) { in xfrm_set_spdinfo()
1161 struct nlattr *rta = attrs[XFRMA_SPD_IPV4_HTHRESH]; in xfrm_set_spdinfo()
1169 if (attrs[XFRMA_SPD_IPV6_HTHRESH]) { in xfrm_set_spdinfo()
1170 struct nlattr *rta = attrs[XFRMA_SPD_IPV6_HTHRESH]; in xfrm_set_spdinfo()
1198 struct nlattr **attrs) in xfrm_get_spdinfo() argument
1256 struct nlattr **attrs) in xfrm_get_sadinfo() argument
1275 struct nlattr **attrs) in xfrm_get_sa() argument
1283 x = xfrm_user_state_lookup(net, p, attrs, &err); in xfrm_get_sa()
1299 struct nlattr **attrs) in xfrm_alloc_userspi() argument
1322 mark = xfrm_mark_get(attrs, &m); in xfrm_alloc_userspi()
1324 if (attrs[XFRMA_IF_ID]) in xfrm_alloc_userspi()
1325 if_id = nla_get_u32(attrs[XFRMA_IF_ID]); in xfrm_alloc_userspi()
1447 static int copy_from_user_sec_ctx(struct xfrm_policy *pol, struct nlattr **attrs) in copy_from_user_sec_ctx() argument
1449 struct nlattr *rt = attrs[XFRMA_SEC_CTX]; in copy_from_user_sec_ctx()
1537 static int copy_from_user_tmpl(struct xfrm_policy *pol, struct nlattr **attrs) in copy_from_user_tmpl() argument
1539 struct nlattr *rt = attrs[XFRMA_TMPL]; in copy_from_user_tmpl()
1557 static int copy_from_user_policy_type(u8 *tp, struct nlattr **attrs) in copy_from_user_policy_type() argument
1559 struct nlattr *rt = attrs[XFRMA_POLICY_TYPE]; in copy_from_user_policy_type()
1604 …policy_construct(struct net *net, struct xfrm_userpolicy_info *p, struct nlattr **attrs, int *errp) in xfrm_policy_construct() argument
1616 err = copy_from_user_policy_type(&xp->type, attrs); in xfrm_policy_construct()
1620 if (!(err = copy_from_user_tmpl(xp, attrs))) in xfrm_policy_construct()
1621 err = copy_from_user_sec_ctx(xp, attrs); in xfrm_policy_construct()
1625 xfrm_mark_get(attrs, &xp->mark); in xfrm_policy_construct()
1627 if (attrs[XFRMA_IF_ID]) in xfrm_policy_construct()
1628 xp->if_id = nla_get_u32(attrs[XFRMA_IF_ID]); in xfrm_policy_construct()
1639 struct nlattr **attrs) in xfrm_add_policy() argument
1651 err = verify_sec_ctx_len(attrs); in xfrm_add_policy()
1655 xp = xfrm_policy_construct(net, p, attrs, &err); in xfrm_add_policy()
1849 struct nlattr **attrs) in xfrm_get_policy() argument
1859 u32 mark = xfrm_mark_get(attrs, &m); in xfrm_get_policy()
1865 err = copy_from_user_policy_type(&type, attrs); in xfrm_get_policy()
1873 if (attrs[XFRMA_IF_ID]) in xfrm_get_policy()
1874 if_id = nla_get_u32(attrs[XFRMA_IF_ID]); in xfrm_get_policy()
1879 struct nlattr *rt = attrs[XFRMA_SEC_CTX]; in xfrm_get_policy()
1882 err = verify_sec_ctx_len(attrs); in xfrm_get_policy()
1930 struct nlattr **attrs) in xfrm_flush_sa() argument
2030 struct nlattr **attrs) in xfrm_get_ae() argument
2042 mark = xfrm_mark_get(attrs, &m); in xfrm_get_ae()
2073 struct nlattr **attrs) in xfrm_new_ae() argument
2082 struct nlattr *rp = attrs[XFRMA_REPLAY_VAL]; in xfrm_new_ae()
2083 struct nlattr *re = attrs[XFRMA_REPLAY_ESN_VAL]; in xfrm_new_ae()
2084 struct nlattr *lt = attrs[XFRMA_LTIME_VAL]; in xfrm_new_ae()
2085 struct nlattr *et = attrs[XFRMA_ETIMER_THRESH]; in xfrm_new_ae()
2086 struct nlattr *rt = attrs[XFRMA_REPLAY_THRESH]; in xfrm_new_ae()
2095 mark = xfrm_mark_get(attrs, &m); in xfrm_new_ae()
2109 xfrm_update_ae_params(x, attrs, 1); in xfrm_new_ae()
2124 struct nlattr **attrs) in xfrm_flush_policy() argument
2131 err = copy_from_user_policy_type(&type, attrs); in xfrm_flush_policy()
2152 struct nlattr **attrs) in xfrm_add_pol_expire() argument
2161 u32 mark = xfrm_mark_get(attrs, &m); in xfrm_add_pol_expire()
2164 err = copy_from_user_policy_type(&type, attrs); in xfrm_add_pol_expire()
2172 if (attrs[XFRMA_IF_ID]) in xfrm_add_pol_expire()
2173 if_id = nla_get_u32(attrs[XFRMA_IF_ID]); in xfrm_add_pol_expire()
2178 struct nlattr *rt = attrs[XFRMA_SEC_CTX]; in xfrm_add_pol_expire()
2181 err = verify_sec_ctx_len(attrs); in xfrm_add_pol_expire()
2216 struct nlattr **attrs) in xfrm_add_sa_expire() argument
2224 u32 mark = xfrm_mark_get(attrs, &m); in xfrm_add_sa_expire()
2250 struct nlattr **attrs) in xfrm_add_acquire() argument
2256 struct nlattr *rt = attrs[XFRMA_TMPL]; in xfrm_add_acquire()
2266 xfrm_mark_get(attrs, &mark); in xfrm_add_acquire()
2271 err = verify_sec_ctx_len(attrs); in xfrm_add_acquire()
2276 xp = xfrm_policy_construct(net, &ua->policy, attrs, &err); in xfrm_add_acquire()
2314 struct nlattr **attrs, int *num) in copy_from_user_migrate() argument
2316 struct nlattr *rt = attrs[XFRMA_MIGRATE]; in copy_from_user_migrate()
2323 uk = nla_data(attrs[XFRMA_KMADDRESS]); in copy_from_user_migrate()
2355 struct nlattr **attrs) in xfrm_do_migrate() argument
2366 if (attrs[XFRMA_MIGRATE] == NULL) in xfrm_do_migrate()
2369 kmp = attrs[XFRMA_KMADDRESS] ? &km : NULL; in xfrm_do_migrate()
2371 err = copy_from_user_policy_type(&type, attrs); in xfrm_do_migrate()
2375 err = copy_from_user_migrate((struct xfrm_migrate *)m, kmp, attrs, &n); in xfrm_do_migrate()
2382 if (attrs[XFRMA_ENCAP]) { in xfrm_do_migrate()
2383 encap = kmemdup(nla_data(attrs[XFRMA_ENCAP]), in xfrm_do_migrate()
2397 struct nlattr **attrs) in xfrm_do_migrate() argument
2628 struct nlattr *attrs[XFRMA_MAX+1]; in xfrm_user_rcv_msg() local
2659 err = nlmsg_parse(nlh, xfrm_msg_min[type], attrs, in xfrm_user_rcv_msg()
2668 return link->doit(skb, nlh, attrs); in xfrm_user_rcv_msg()