Lines Matching refs:doi_def
382 int cipso_v4_doi_add(struct cipso_v4_doi *doi_def, in cipso_v4_doi_add() argument
391 doi = doi_def->doi; in cipso_v4_doi_add()
392 doi_type = doi_def->type; in cipso_v4_doi_add()
394 if (doi_def->doi == CIPSO_V4_DOI_UNKNOWN) in cipso_v4_doi_add()
397 switch (doi_def->tags[iter]) { in cipso_v4_doi_add()
402 if (doi_def->type != CIPSO_V4_MAP_PASS) in cipso_v4_doi_add()
406 if (doi_def->type != CIPSO_V4_MAP_LOCAL) in cipso_v4_doi_add()
418 refcount_set(&doi_def->refcount, 1); in cipso_v4_doi_add()
421 if (cipso_v4_doi_search(doi_def->doi)) { in cipso_v4_doi_add()
426 list_add_tail_rcu(&doi_def->list, &cipso_v4_doi_list); in cipso_v4_doi_add()
464 void cipso_v4_doi_free(struct cipso_v4_doi *doi_def) in cipso_v4_doi_free() argument
466 if (!doi_def) in cipso_v4_doi_free()
469 switch (doi_def->type) { in cipso_v4_doi_free()
471 kfree(doi_def->map.std->lvl.cipso); in cipso_v4_doi_free()
472 kfree(doi_def->map.std->lvl.local); in cipso_v4_doi_free()
473 kfree(doi_def->map.std->cat.cipso); in cipso_v4_doi_free()
474 kfree(doi_def->map.std->cat.local); in cipso_v4_doi_free()
475 kfree(doi_def->map.std); in cipso_v4_doi_free()
478 kfree(doi_def); in cipso_v4_doi_free()
493 struct cipso_v4_doi *doi_def; in cipso_v4_doi_free_rcu() local
495 doi_def = container_of(entry, struct cipso_v4_doi, rcu); in cipso_v4_doi_free_rcu()
496 cipso_v4_doi_free(doi_def); in cipso_v4_doi_free_rcu()
513 struct cipso_v4_doi *doi_def; in cipso_v4_doi_remove() local
517 doi_def = cipso_v4_doi_search(doi); in cipso_v4_doi_remove()
518 if (!doi_def) { in cipso_v4_doi_remove()
523 list_del_rcu(&doi_def->list); in cipso_v4_doi_remove()
526 cipso_v4_doi_putdef(doi_def); in cipso_v4_doi_remove()
554 struct cipso_v4_doi *doi_def; in cipso_v4_doi_getdef() local
557 doi_def = cipso_v4_doi_search(doi); in cipso_v4_doi_getdef()
558 if (!doi_def) in cipso_v4_doi_getdef()
560 if (!refcount_inc_not_zero(&doi_def->refcount)) in cipso_v4_doi_getdef()
561 doi_def = NULL; in cipso_v4_doi_getdef()
565 return doi_def; in cipso_v4_doi_getdef()
576 void cipso_v4_doi_putdef(struct cipso_v4_doi *doi_def) in cipso_v4_doi_putdef() argument
578 if (!doi_def) in cipso_v4_doi_putdef()
581 if (!refcount_dec_and_test(&doi_def->refcount)) in cipso_v4_doi_putdef()
585 call_rcu(&doi_def->rcu, cipso_v4_doi_free_rcu); in cipso_v4_doi_putdef()
602 int (*callback) (struct cipso_v4_doi *doi_def, void *arg), in cipso_v4_doi_walk()
642 static int cipso_v4_map_lvl_valid(const struct cipso_v4_doi *doi_def, u8 level) in cipso_v4_map_lvl_valid() argument
644 switch (doi_def->type) { in cipso_v4_map_lvl_valid()
648 if ((level < doi_def->map.std->lvl.cipso_size) && in cipso_v4_map_lvl_valid()
649 (doi_def->map.std->lvl.cipso[level] < CIPSO_V4_INV_LVL)) in cipso_v4_map_lvl_valid()
669 static int cipso_v4_map_lvl_hton(const struct cipso_v4_doi *doi_def, in cipso_v4_map_lvl_hton() argument
673 switch (doi_def->type) { in cipso_v4_map_lvl_hton()
678 if (host_lvl < doi_def->map.std->lvl.local_size && in cipso_v4_map_lvl_hton()
679 doi_def->map.std->lvl.local[host_lvl] < CIPSO_V4_INV_LVL) { in cipso_v4_map_lvl_hton()
680 *net_lvl = doi_def->map.std->lvl.local[host_lvl]; in cipso_v4_map_lvl_hton()
701 static int cipso_v4_map_lvl_ntoh(const struct cipso_v4_doi *doi_def, in cipso_v4_map_lvl_ntoh() argument
707 switch (doi_def->type) { in cipso_v4_map_lvl_ntoh()
712 map_tbl = doi_def->map.std; in cipso_v4_map_lvl_ntoh()
715 *host_lvl = doi_def->map.std->lvl.cipso[net_lvl]; in cipso_v4_map_lvl_ntoh()
736 static int cipso_v4_map_cat_rbm_valid(const struct cipso_v4_doi *doi_def, in cipso_v4_map_cat_rbm_valid() argument
745 switch (doi_def->type) { in cipso_v4_map_cat_rbm_valid()
749 cipso_cat_size = doi_def->map.std->cat.cipso_size; in cipso_v4_map_cat_rbm_valid()
750 cipso_array = doi_def->map.std->cat.cipso; in cipso_v4_map_cat_rbm_valid()
784 static int cipso_v4_map_cat_rbm_hton(const struct cipso_v4_doi *doi_def, in cipso_v4_map_cat_rbm_hton() argument
796 if (doi_def->type == CIPSO_V4_MAP_TRANS) { in cipso_v4_map_cat_rbm_hton()
797 host_cat_size = doi_def->map.std->cat.local_size; in cipso_v4_map_cat_rbm_hton()
798 host_cat_array = doi_def->map.std->cat.local; in cipso_v4_map_cat_rbm_hton()
807 switch (doi_def->type) { in cipso_v4_map_cat_rbm_hton()
845 static int cipso_v4_map_cat_rbm_ntoh(const struct cipso_v4_doi *doi_def, in cipso_v4_map_cat_rbm_ntoh() argument
857 if (doi_def->type == CIPSO_V4_MAP_TRANS) { in cipso_v4_map_cat_rbm_ntoh()
858 net_cat_size = doi_def->map.std->cat.cipso_size; in cipso_v4_map_cat_rbm_ntoh()
859 net_cat_array = doi_def->map.std->cat.cipso; in cipso_v4_map_cat_rbm_ntoh()
870 switch (doi_def->type) { in cipso_v4_map_cat_rbm_ntoh()
904 static int cipso_v4_map_cat_enum_valid(const struct cipso_v4_doi *doi_def, in cipso_v4_map_cat_enum_valid() argument
912 if (doi_def->type != CIPSO_V4_MAP_PASS || enumcat_len & 0x01) in cipso_v4_map_cat_enum_valid()
939 static int cipso_v4_map_cat_enum_hton(const struct cipso_v4_doi *doi_def, in cipso_v4_map_cat_enum_hton() argument
974 static int cipso_v4_map_cat_enum_ntoh(const struct cipso_v4_doi *doi_def, in cipso_v4_map_cat_enum_ntoh() argument
1005 static int cipso_v4_map_cat_rng_valid(const struct cipso_v4_doi *doi_def, in cipso_v4_map_cat_rng_valid() argument
1014 if (doi_def->type != CIPSO_V4_MAP_PASS || rngcat_len & 0x01) in cipso_v4_map_cat_rng_valid()
1047 static int cipso_v4_map_cat_rng_hton(const struct cipso_v4_doi *doi_def, in cipso_v4_map_cat_rng_hton() argument
1106 static int cipso_v4_map_cat_rng_ntoh(const struct cipso_v4_doi *doi_def, in cipso_v4_map_cat_rng_ntoh() argument
1148 static void cipso_v4_gentag_hdr(const struct cipso_v4_doi *doi_def, in cipso_v4_gentag_hdr() argument
1154 put_unaligned_be32(doi_def->doi, &buf[2]); in cipso_v4_gentag_hdr()
1171 static int cipso_v4_gentag_rbm(const struct cipso_v4_doi *doi_def, in cipso_v4_gentag_rbm() argument
1183 ret_val = cipso_v4_map_lvl_hton(doi_def, in cipso_v4_gentag_rbm()
1190 ret_val = cipso_v4_map_cat_rbm_hton(doi_def, in cipso_v4_gentag_rbm()
1227 static int cipso_v4_parsetag_rbm(const struct cipso_v4_doi *doi_def, in cipso_v4_parsetag_rbm() argument
1235 ret_val = cipso_v4_map_lvl_ntoh(doi_def, tag[3], &level); in cipso_v4_parsetag_rbm()
1242 ret_val = cipso_v4_map_cat_rbm_ntoh(doi_def, in cipso_v4_parsetag_rbm()
1270 static int cipso_v4_gentag_enum(const struct cipso_v4_doi *doi_def, in cipso_v4_gentag_enum() argument
1282 ret_val = cipso_v4_map_lvl_hton(doi_def, in cipso_v4_gentag_enum()
1289 ret_val = cipso_v4_map_cat_enum_hton(doi_def, in cipso_v4_gentag_enum()
1319 static int cipso_v4_parsetag_enum(const struct cipso_v4_doi *doi_def, in cipso_v4_parsetag_enum() argument
1327 ret_val = cipso_v4_map_lvl_ntoh(doi_def, tag[3], &level); in cipso_v4_parsetag_enum()
1334 ret_val = cipso_v4_map_cat_enum_ntoh(doi_def, in cipso_v4_parsetag_enum()
1361 static int cipso_v4_gentag_rng(const struct cipso_v4_doi *doi_def, in cipso_v4_gentag_rng() argument
1373 ret_val = cipso_v4_map_lvl_hton(doi_def, in cipso_v4_gentag_rng()
1380 ret_val = cipso_v4_map_cat_rng_hton(doi_def, in cipso_v4_gentag_rng()
1409 static int cipso_v4_parsetag_rng(const struct cipso_v4_doi *doi_def, in cipso_v4_parsetag_rng() argument
1417 ret_val = cipso_v4_map_lvl_ntoh(doi_def, tag[3], &level); in cipso_v4_parsetag_rng()
1424 ret_val = cipso_v4_map_cat_rng_ntoh(doi_def, in cipso_v4_parsetag_rng()
1452 static int cipso_v4_gentag_loc(const struct cipso_v4_doi *doi_def, in cipso_v4_gentag_loc() argument
1478 static int cipso_v4_parsetag_loc(const struct cipso_v4_doi *doi_def, in cipso_v4_parsetag_loc() argument
1554 struct cipso_v4_doi *doi_def = NULL; in cipso_v4_validate() local
1565 doi_def = cipso_v4_doi_search(get_unaligned_be32(&opt[2])); in cipso_v4_validate()
1566 if (!doi_def) { in cipso_v4_validate()
1574 for (tag_iter = 0; doi_def->tags[tag_iter] != tag[0];) in cipso_v4_validate()
1575 if (doi_def->tags[tag_iter] == CIPSO_V4_TAG_INVALID || in cipso_v4_validate()
1606 if (cipso_v4_map_lvl_valid(doi_def, in cipso_v4_validate()
1612 cipso_v4_map_cat_rbm_valid(doi_def, in cipso_v4_validate()
1626 if (cipso_v4_map_lvl_valid(doi_def, in cipso_v4_validate()
1632 cipso_v4_map_cat_enum_valid(doi_def, in cipso_v4_validate()
1645 if (cipso_v4_map_lvl_valid(doi_def, in cipso_v4_validate()
1651 cipso_v4_map_cat_rng_valid(doi_def, in cipso_v4_validate()
1759 const struct cipso_v4_doi *doi_def, in cipso_v4_genopt() argument
1774 switch (doi_def->tags[iter]) { in cipso_v4_genopt()
1776 ret_val = cipso_v4_gentag_rbm(doi_def, in cipso_v4_genopt()
1782 ret_val = cipso_v4_gentag_enum(doi_def, in cipso_v4_genopt()
1788 ret_val = cipso_v4_gentag_rng(doi_def, in cipso_v4_genopt()
1794 ret_val = cipso_v4_gentag_loc(doi_def, in cipso_v4_genopt()
1806 doi_def->tags[iter] != CIPSO_V4_TAG_INVALID); in cipso_v4_genopt()
1809 cipso_v4_gentag_hdr(doi_def, buf, ret_val); in cipso_v4_genopt()
1852 const struct cipso_v4_doi *doi_def, in cipso_v4_sock_setattr() argument
1881 ret_val = cipso_v4_genopt(buf, buf_len, doi_def, secattr); in cipso_v4_sock_setattr()
1937 const struct cipso_v4_doi *doi_def, in cipso_v4_req_setattr() argument
1957 ret_val = cipso_v4_genopt(buf, buf_len, doi_def, secattr); in cipso_v4_req_setattr()
2098 struct cipso_v4_doi *doi_def; in cipso_v4_getattr() local
2105 doi_def = cipso_v4_doi_search(doi); in cipso_v4_getattr()
2106 if (!doi_def) in cipso_v4_getattr()
2113 ret_val = cipso_v4_parsetag_rbm(doi_def, &cipso[6], secattr); in cipso_v4_getattr()
2116 ret_val = cipso_v4_parsetag_enum(doi_def, &cipso[6], secattr); in cipso_v4_getattr()
2119 ret_val = cipso_v4_parsetag_rng(doi_def, &cipso[6], secattr); in cipso_v4_getattr()
2122 ret_val = cipso_v4_parsetag_loc(doi_def, &cipso[6], secattr); in cipso_v4_getattr()
2173 const struct cipso_v4_doi *doi_def, in cipso_v4_skbuff_setattr() argument
2184 ret_val = cipso_v4_genopt(buf, buf_len, doi_def, secattr); in cipso_v4_skbuff_setattr()