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()
152 struct nlattr **attrs) in verify_newsa_info() argument
176 if ((!attrs[XFRMA_ALG_AUTH] && in verify_newsa_info()
177 !attrs[XFRMA_ALG_AUTH_TRUNC]) || in verify_newsa_info()
178 attrs[XFRMA_ALG_AEAD] || in verify_newsa_info()
179 attrs[XFRMA_ALG_CRYPT] || in verify_newsa_info()
180 attrs[XFRMA_ALG_COMP] || in verify_newsa_info()
181 attrs[XFRMA_TFCPAD]) in verify_newsa_info()
186 if (attrs[XFRMA_ALG_COMP]) in verify_newsa_info()
188 if (!attrs[XFRMA_ALG_AUTH] && in verify_newsa_info()
189 !attrs[XFRMA_ALG_AUTH_TRUNC] && in verify_newsa_info()
190 !attrs[XFRMA_ALG_CRYPT] && in verify_newsa_info()
191 !attrs[XFRMA_ALG_AEAD]) in verify_newsa_info()
193 if ((attrs[XFRMA_ALG_AUTH] || in verify_newsa_info()
194 attrs[XFRMA_ALG_AUTH_TRUNC] || in verify_newsa_info()
195 attrs[XFRMA_ALG_CRYPT]) && in verify_newsa_info()
196 attrs[XFRMA_ALG_AEAD]) in verify_newsa_info()
198 if (attrs[XFRMA_TFCPAD] && in verify_newsa_info()
204 if (!attrs[XFRMA_ALG_COMP] || in verify_newsa_info()
205 attrs[XFRMA_ALG_AEAD] || in verify_newsa_info()
206 attrs[XFRMA_ALG_AUTH] || in verify_newsa_info()
207 attrs[XFRMA_ALG_AUTH_TRUNC] || in verify_newsa_info()
208 attrs[XFRMA_ALG_CRYPT] || in verify_newsa_info()
209 attrs[XFRMA_TFCPAD] || in verify_newsa_info()
217 if (attrs[XFRMA_ALG_COMP] || in verify_newsa_info()
218 attrs[XFRMA_ALG_AUTH] || in verify_newsa_info()
219 attrs[XFRMA_ALG_AUTH_TRUNC] || in verify_newsa_info()
220 attrs[XFRMA_ALG_AEAD] || in verify_newsa_info()
221 attrs[XFRMA_ALG_CRYPT] || in verify_newsa_info()
222 attrs[XFRMA_ENCAP] || in verify_newsa_info()
223 attrs[XFRMA_SEC_CTX] || in verify_newsa_info()
224 attrs[XFRMA_TFCPAD] || in verify_newsa_info()
225 !attrs[XFRMA_COADDR]) in verify_newsa_info()
234 if ((err = verify_aead(attrs))) in verify_newsa_info()
236 if ((err = verify_auth_trunc(attrs))) in verify_newsa_info()
238 if ((err = verify_one_alg(attrs, XFRMA_ALG_AUTH))) in verify_newsa_info()
240 if ((err = verify_one_alg(attrs, XFRMA_ALG_CRYPT))) in verify_newsa_info()
242 if ((err = verify_one_alg(attrs, XFRMA_ALG_COMP))) in verify_newsa_info()
244 if ((err = verify_sec_ctx_len(attrs))) in verify_newsa_info()
246 if ((err = verify_replay(p, attrs))) in verify_newsa_info()
487 static void xfrm_update_ae_params(struct xfrm_state *x, struct nlattr **attrs, in xfrm_update_ae_params() argument
490 struct nlattr *rp = attrs[XFRMA_REPLAY_VAL]; in xfrm_update_ae_params()
491 struct nlattr *re = update_esn ? attrs[XFRMA_REPLAY_ESN_VAL] : NULL; in xfrm_update_ae_params()
492 struct nlattr *lt = attrs[XFRMA_LTIME_VAL]; in xfrm_update_ae_params()
493 struct nlattr *et = attrs[XFRMA_ETIMER_THRESH]; in xfrm_update_ae_params()
494 struct nlattr *rt = attrs[XFRMA_REPLAY_THRESH]; in xfrm_update_ae_params()
530 struct nlattr **attrs, in xfrm_state_construct() argument
541 if (attrs[XFRMA_SA_EXTRA_FLAGS]) in xfrm_state_construct()
542 x->props.extra_flags = nla_get_u32(attrs[XFRMA_SA_EXTRA_FLAGS]); in xfrm_state_construct()
544 if ((err = attach_aead(x, attrs[XFRMA_ALG_AEAD]))) in xfrm_state_construct()
547 attrs[XFRMA_ALG_AUTH_TRUNC]))) in xfrm_state_construct()
551 attrs[XFRMA_ALG_AUTH]))) in xfrm_state_construct()
554 if ((err = attach_crypt(x, attrs[XFRMA_ALG_CRYPT]))) in xfrm_state_construct()
558 attrs[XFRMA_ALG_COMP]))) in xfrm_state_construct()
561 if (attrs[XFRMA_ENCAP]) { in xfrm_state_construct()
562 x->encap = kmemdup(nla_data(attrs[XFRMA_ENCAP]), in xfrm_state_construct()
568 if (attrs[XFRMA_TFCPAD]) in xfrm_state_construct()
569 x->tfcpad = nla_get_u32(attrs[XFRMA_TFCPAD]); in xfrm_state_construct()
571 if (attrs[XFRMA_COADDR]) { in xfrm_state_construct()
572 x->coaddr = kmemdup(nla_data(attrs[XFRMA_COADDR]), in xfrm_state_construct()
578 xfrm_mark_get(attrs, &x->mark); in xfrm_state_construct()
584 if (attrs[XFRMA_SEC_CTX] && in xfrm_state_construct()
585 security_xfrm_state_alloc(x, nla_data(attrs[XFRMA_SEC_CTX]))) in xfrm_state_construct()
589 attrs[XFRMA_REPLAY_ESN_VAL]))) in xfrm_state_construct()
601 xfrm_update_ae_params(x, attrs, 0); in xfrm_state_construct()
614 struct nlattr **attrs) in xfrm_add_sa() argument
622 err = verify_newsa_info(p, attrs); in xfrm_add_sa()
626 x = xfrm_state_construct(net, p, attrs, &err); in xfrm_add_sa()
656 struct nlattr **attrs, in xfrm_user_state_lookup() argument
662 u32 mark = xfrm_mark_get(attrs, &m); in xfrm_user_state_lookup()
670 verify_one_addr(attrs, XFRMA_SRCADDR, &saddr); in xfrm_user_state_lookup()
689 struct nlattr **attrs) in xfrm_del_sa() argument
697 x = xfrm_user_state_lookup(net, p, attrs, &err); in xfrm_del_sa()
918 struct nlattr *attrs[XFRMA_MAX+1]; in xfrm_dump_sa() local
925 err = nlmsg_parse(cb->nlh, 0, attrs, XFRMA_MAX, in xfrm_dump_sa()
930 if (attrs[XFRMA_ADDRESS_FILTER]) { in xfrm_dump_sa()
931 filter = kmemdup(nla_data(attrs[XFRMA_ADDRESS_FILTER]), in xfrm_dump_sa()
937 if (attrs[XFRMA_PROTO]) in xfrm_dump_sa()
938 proto = nla_get_u8(attrs[XFRMA_PROTO]); in xfrm_dump_sa()
1050 struct nlattr **attrs) in xfrm_set_spdinfo() argument
1057 if (attrs[XFRMA_SPD_IPV4_HTHRESH]) { in xfrm_set_spdinfo()
1058 struct nlattr *rta = attrs[XFRMA_SPD_IPV4_HTHRESH]; in xfrm_set_spdinfo()
1066 if (attrs[XFRMA_SPD_IPV6_HTHRESH]) { in xfrm_set_spdinfo()
1067 struct nlattr *rta = attrs[XFRMA_SPD_IPV6_HTHRESH]; in xfrm_set_spdinfo()
1095 struct nlattr **attrs) in xfrm_get_spdinfo() argument
1153 struct nlattr **attrs) in xfrm_get_sadinfo() argument
1172 struct nlattr **attrs) in xfrm_get_sa() argument
1180 x = xfrm_user_state_lookup(net, p, attrs, &err); in xfrm_get_sa()
1196 struct nlattr **attrs) in xfrm_alloc_userspi() argument
1218 mark = xfrm_mark_get(attrs, &m); in xfrm_alloc_userspi()
1333 static int copy_from_user_sec_ctx(struct xfrm_policy *pol, struct nlattr **attrs) in copy_from_user_sec_ctx() argument
1335 struct nlattr *rt = attrs[XFRMA_SEC_CTX]; in copy_from_user_sec_ctx()
1403 static int copy_from_user_tmpl(struct xfrm_policy *pol, struct nlattr **attrs) in copy_from_user_tmpl() argument
1405 struct nlattr *rt = attrs[XFRMA_TMPL]; in copy_from_user_tmpl()
1423 static int copy_from_user_policy_type(u8 *tp, struct nlattr **attrs) in copy_from_user_policy_type() argument
1425 struct nlattr *rt = attrs[XFRMA_POLICY_TYPE]; in copy_from_user_policy_type()
1470 …policy_construct(struct net *net, struct xfrm_userpolicy_info *p, struct nlattr **attrs, int *errp) in xfrm_policy_construct() argument
1482 err = copy_from_user_policy_type(&xp->type, attrs); in xfrm_policy_construct()
1486 if (!(err = copy_from_user_tmpl(xp, attrs))) in xfrm_policy_construct()
1487 err = copy_from_user_sec_ctx(xp, attrs); in xfrm_policy_construct()
1491 xfrm_mark_get(attrs, &xp->mark); in xfrm_policy_construct()
1502 struct nlattr **attrs) in xfrm_add_policy() argument
1514 err = verify_sec_ctx_len(attrs); in xfrm_add_policy()
1518 xp = xfrm_policy_construct(net, p, attrs, &err); in xfrm_add_policy()
1706 struct nlattr **attrs) in xfrm_get_policy() argument
1716 u32 mark = xfrm_mark_get(attrs, &m); in xfrm_get_policy()
1721 err = copy_from_user_policy_type(&type, attrs); in xfrm_get_policy()
1732 struct nlattr *rt = attrs[XFRMA_SEC_CTX]; in xfrm_get_policy()
1735 err = verify_sec_ctx_len(attrs); in xfrm_get_policy()
1785 struct nlattr **attrs) in xfrm_flush_sa() argument
1879 struct nlattr **attrs) in xfrm_get_ae() argument
1891 mark = xfrm_mark_get(attrs, &m); in xfrm_get_ae()
1922 struct nlattr **attrs) in xfrm_new_ae() argument
1931 struct nlattr *rp = attrs[XFRMA_REPLAY_VAL]; in xfrm_new_ae()
1932 struct nlattr *re = attrs[XFRMA_REPLAY_ESN_VAL]; in xfrm_new_ae()
1933 struct nlattr *lt = attrs[XFRMA_LTIME_VAL]; in xfrm_new_ae()
1934 struct nlattr *et = attrs[XFRMA_ETIMER_THRESH]; in xfrm_new_ae()
1935 struct nlattr *rt = attrs[XFRMA_REPLAY_THRESH]; in xfrm_new_ae()
1944 mark = xfrm_mark_get(attrs, &m); in xfrm_new_ae()
1958 xfrm_update_ae_params(x, attrs, 1); in xfrm_new_ae()
1973 struct nlattr **attrs) in xfrm_flush_policy() argument
1980 err = copy_from_user_policy_type(&type, attrs); in xfrm_flush_policy()
2001 struct nlattr **attrs) in xfrm_add_pol_expire() argument
2010 u32 mark = xfrm_mark_get(attrs, &m); in xfrm_add_pol_expire()
2012 err = copy_from_user_policy_type(&type, attrs); in xfrm_add_pol_expire()
2023 struct nlattr *rt = attrs[XFRMA_SEC_CTX]; in xfrm_add_pol_expire()
2026 err = verify_sec_ctx_len(attrs); in xfrm_add_pol_expire()
2064 struct nlattr **attrs) in xfrm_add_sa_expire() argument
2072 u32 mark = xfrm_mark_get(attrs, &m); in xfrm_add_sa_expire()
2098 struct nlattr **attrs) in xfrm_add_acquire() argument
2104 struct nlattr *rt = attrs[XFRMA_TMPL]; in xfrm_add_acquire()
2114 xfrm_mark_get(attrs, &mark); in xfrm_add_acquire()
2121 xp = xfrm_policy_construct(net, &ua->policy, attrs, &err); in xfrm_add_acquire()
2161 struct nlattr **attrs, int *num) in copy_from_user_migrate() argument
2163 struct nlattr *rt = attrs[XFRMA_MIGRATE]; in copy_from_user_migrate()
2170 uk = nla_data(attrs[XFRMA_KMADDRESS]); in copy_from_user_migrate()
2202 struct nlattr **attrs) in xfrm_do_migrate() argument
2212 if (attrs[XFRMA_MIGRATE] == NULL) in xfrm_do_migrate()
2215 kmp = attrs[XFRMA_KMADDRESS] ? &km : NULL; in xfrm_do_migrate()
2217 err = copy_from_user_policy_type(&type, attrs); in xfrm_do_migrate()
2221 err = copy_from_user_migrate((struct xfrm_migrate *)m, kmp, attrs, &n); in xfrm_do_migrate()
2234 struct nlattr **attrs) in xfrm_do_migrate() argument
2447 struct nlattr *attrs[XFRMA_MAX+1]; in xfrm_user_rcv_msg() local
2482 err = nlmsg_parse(nlh, xfrm_msg_min[type], attrs, in xfrm_user_rcv_msg()
2491 return link->doit(skb, nlh, attrs); in xfrm_user_rcv_msg()