Lines Matching refs:doi_def
383 int cipso_v4_doi_add(struct cipso_v4_doi *doi_def, in cipso_v4_doi_add() argument
392 doi = doi_def->doi; in cipso_v4_doi_add()
393 doi_type = doi_def->type; in cipso_v4_doi_add()
395 if (doi_def->doi == CIPSO_V4_DOI_UNKNOWN) in cipso_v4_doi_add()
398 switch (doi_def->tags[iter]) { in cipso_v4_doi_add()
403 if (doi_def->type != CIPSO_V4_MAP_PASS) in cipso_v4_doi_add()
407 if (doi_def->type != CIPSO_V4_MAP_LOCAL) in cipso_v4_doi_add()
419 refcount_set(&doi_def->refcount, 1); in cipso_v4_doi_add()
422 if (cipso_v4_doi_search(doi_def->doi)) { in cipso_v4_doi_add()
427 list_add_tail_rcu(&doi_def->list, &cipso_v4_doi_list); in cipso_v4_doi_add()
465 void cipso_v4_doi_free(struct cipso_v4_doi *doi_def) in cipso_v4_doi_free() argument
467 if (!doi_def) in cipso_v4_doi_free()
470 switch (doi_def->type) { in cipso_v4_doi_free()
472 kfree(doi_def->map.std->lvl.cipso); in cipso_v4_doi_free()
473 kfree(doi_def->map.std->lvl.local); in cipso_v4_doi_free()
474 kfree(doi_def->map.std->cat.cipso); in cipso_v4_doi_free()
475 kfree(doi_def->map.std->cat.local); in cipso_v4_doi_free()
476 kfree(doi_def->map.std); in cipso_v4_doi_free()
479 kfree(doi_def); in cipso_v4_doi_free()
494 struct cipso_v4_doi *doi_def; in cipso_v4_doi_free_rcu() local
496 doi_def = container_of(entry, struct cipso_v4_doi, rcu); in cipso_v4_doi_free_rcu()
497 cipso_v4_doi_free(doi_def); in cipso_v4_doi_free_rcu()
514 struct cipso_v4_doi *doi_def; in cipso_v4_doi_remove() local
518 doi_def = cipso_v4_doi_search(doi); in cipso_v4_doi_remove()
519 if (!doi_def) { in cipso_v4_doi_remove()
524 list_del_rcu(&doi_def->list); in cipso_v4_doi_remove()
527 cipso_v4_doi_putdef(doi_def); in cipso_v4_doi_remove()
555 struct cipso_v4_doi *doi_def; in cipso_v4_doi_getdef() local
558 doi_def = cipso_v4_doi_search(doi); in cipso_v4_doi_getdef()
559 if (!doi_def) in cipso_v4_doi_getdef()
561 if (!refcount_inc_not_zero(&doi_def->refcount)) in cipso_v4_doi_getdef()
562 doi_def = NULL; in cipso_v4_doi_getdef()
566 return doi_def; in cipso_v4_doi_getdef()
577 void cipso_v4_doi_putdef(struct cipso_v4_doi *doi_def) in cipso_v4_doi_putdef() argument
579 if (!doi_def) in cipso_v4_doi_putdef()
582 if (!refcount_dec_and_test(&doi_def->refcount)) in cipso_v4_doi_putdef()
586 call_rcu(&doi_def->rcu, cipso_v4_doi_free_rcu); in cipso_v4_doi_putdef()
603 int (*callback) (struct cipso_v4_doi *doi_def, void *arg), in cipso_v4_doi_walk()
643 static int cipso_v4_map_lvl_valid(const struct cipso_v4_doi *doi_def, u8 level) in cipso_v4_map_lvl_valid() argument
645 switch (doi_def->type) { in cipso_v4_map_lvl_valid()
649 if ((level < doi_def->map.std->lvl.cipso_size) && in cipso_v4_map_lvl_valid()
650 (doi_def->map.std->lvl.cipso[level] < CIPSO_V4_INV_LVL)) in cipso_v4_map_lvl_valid()
670 static int cipso_v4_map_lvl_hton(const struct cipso_v4_doi *doi_def, in cipso_v4_map_lvl_hton() argument
674 switch (doi_def->type) { in cipso_v4_map_lvl_hton()
679 if (host_lvl < doi_def->map.std->lvl.local_size && in cipso_v4_map_lvl_hton()
680 doi_def->map.std->lvl.local[host_lvl] < CIPSO_V4_INV_LVL) { in cipso_v4_map_lvl_hton()
681 *net_lvl = doi_def->map.std->lvl.local[host_lvl]; in cipso_v4_map_lvl_hton()
702 static int cipso_v4_map_lvl_ntoh(const struct cipso_v4_doi *doi_def, in cipso_v4_map_lvl_ntoh() argument
708 switch (doi_def->type) { in cipso_v4_map_lvl_ntoh()
713 map_tbl = doi_def->map.std; in cipso_v4_map_lvl_ntoh()
716 *host_lvl = doi_def->map.std->lvl.cipso[net_lvl]; in cipso_v4_map_lvl_ntoh()
737 static int cipso_v4_map_cat_rbm_valid(const struct cipso_v4_doi *doi_def, in cipso_v4_map_cat_rbm_valid() argument
746 switch (doi_def->type) { in cipso_v4_map_cat_rbm_valid()
750 cipso_cat_size = doi_def->map.std->cat.cipso_size; in cipso_v4_map_cat_rbm_valid()
751 cipso_array = doi_def->map.std->cat.cipso; in cipso_v4_map_cat_rbm_valid()
785 static int cipso_v4_map_cat_rbm_hton(const struct cipso_v4_doi *doi_def, in cipso_v4_map_cat_rbm_hton() argument
797 if (doi_def->type == CIPSO_V4_MAP_TRANS) { in cipso_v4_map_cat_rbm_hton()
798 host_cat_size = doi_def->map.std->cat.local_size; in cipso_v4_map_cat_rbm_hton()
799 host_cat_array = doi_def->map.std->cat.local; in cipso_v4_map_cat_rbm_hton()
808 switch (doi_def->type) { in cipso_v4_map_cat_rbm_hton()
846 static int cipso_v4_map_cat_rbm_ntoh(const struct cipso_v4_doi *doi_def, in cipso_v4_map_cat_rbm_ntoh() argument
858 if (doi_def->type == CIPSO_V4_MAP_TRANS) { in cipso_v4_map_cat_rbm_ntoh()
859 net_cat_size = doi_def->map.std->cat.cipso_size; in cipso_v4_map_cat_rbm_ntoh()
860 net_cat_array = doi_def->map.std->cat.cipso; in cipso_v4_map_cat_rbm_ntoh()
874 switch (doi_def->type) { in cipso_v4_map_cat_rbm_ntoh()
908 static int cipso_v4_map_cat_enum_valid(const struct cipso_v4_doi *doi_def, in cipso_v4_map_cat_enum_valid() argument
916 if (doi_def->type != CIPSO_V4_MAP_PASS || enumcat_len & 0x01) in cipso_v4_map_cat_enum_valid()
943 static int cipso_v4_map_cat_enum_hton(const struct cipso_v4_doi *doi_def, in cipso_v4_map_cat_enum_hton() argument
978 static int cipso_v4_map_cat_enum_ntoh(const struct cipso_v4_doi *doi_def, in cipso_v4_map_cat_enum_ntoh() argument
1009 static int cipso_v4_map_cat_rng_valid(const struct cipso_v4_doi *doi_def, in cipso_v4_map_cat_rng_valid() argument
1018 if (doi_def->type != CIPSO_V4_MAP_PASS || rngcat_len & 0x01) in cipso_v4_map_cat_rng_valid()
1051 static int cipso_v4_map_cat_rng_hton(const struct cipso_v4_doi *doi_def, in cipso_v4_map_cat_rng_hton() argument
1110 static int cipso_v4_map_cat_rng_ntoh(const struct cipso_v4_doi *doi_def, in cipso_v4_map_cat_rng_ntoh() argument
1152 static void cipso_v4_gentag_hdr(const struct cipso_v4_doi *doi_def, in cipso_v4_gentag_hdr() argument
1158 *(__be32 *)&buf[2] = htonl(doi_def->doi); in cipso_v4_gentag_hdr()
1175 static int cipso_v4_gentag_rbm(const struct cipso_v4_doi *doi_def, in cipso_v4_gentag_rbm() argument
1187 ret_val = cipso_v4_map_lvl_hton(doi_def, in cipso_v4_gentag_rbm()
1194 ret_val = cipso_v4_map_cat_rbm_hton(doi_def, in cipso_v4_gentag_rbm()
1231 static int cipso_v4_parsetag_rbm(const struct cipso_v4_doi *doi_def, in cipso_v4_parsetag_rbm() argument
1239 ret_val = cipso_v4_map_lvl_ntoh(doi_def, tag[3], &level); in cipso_v4_parsetag_rbm()
1246 ret_val = cipso_v4_map_cat_rbm_ntoh(doi_def, in cipso_v4_parsetag_rbm()
1274 static int cipso_v4_gentag_enum(const struct cipso_v4_doi *doi_def, in cipso_v4_gentag_enum() argument
1286 ret_val = cipso_v4_map_lvl_hton(doi_def, in cipso_v4_gentag_enum()
1293 ret_val = cipso_v4_map_cat_enum_hton(doi_def, in cipso_v4_gentag_enum()
1323 static int cipso_v4_parsetag_enum(const struct cipso_v4_doi *doi_def, in cipso_v4_parsetag_enum() argument
1331 ret_val = cipso_v4_map_lvl_ntoh(doi_def, tag[3], &level); in cipso_v4_parsetag_enum()
1338 ret_val = cipso_v4_map_cat_enum_ntoh(doi_def, in cipso_v4_parsetag_enum()
1365 static int cipso_v4_gentag_rng(const struct cipso_v4_doi *doi_def, in cipso_v4_gentag_rng() argument
1377 ret_val = cipso_v4_map_lvl_hton(doi_def, in cipso_v4_gentag_rng()
1384 ret_val = cipso_v4_map_cat_rng_hton(doi_def, in cipso_v4_gentag_rng()
1413 static int cipso_v4_parsetag_rng(const struct cipso_v4_doi *doi_def, in cipso_v4_parsetag_rng() argument
1421 ret_val = cipso_v4_map_lvl_ntoh(doi_def, tag[3], &level); in cipso_v4_parsetag_rng()
1428 ret_val = cipso_v4_map_cat_rng_ntoh(doi_def, in cipso_v4_parsetag_rng()
1456 static int cipso_v4_gentag_loc(const struct cipso_v4_doi *doi_def, in cipso_v4_gentag_loc() argument
1482 static int cipso_v4_parsetag_loc(const struct cipso_v4_doi *doi_def, in cipso_v4_parsetag_loc() argument
1558 struct cipso_v4_doi *doi_def = NULL; in cipso_v4_validate() local
1569 doi_def = cipso_v4_doi_search(get_unaligned_be32(&opt[2])); in cipso_v4_validate()
1570 if (!doi_def) { in cipso_v4_validate()
1578 for (tag_iter = 0; doi_def->tags[tag_iter] != tag[0];) in cipso_v4_validate()
1579 if (doi_def->tags[tag_iter] == CIPSO_V4_TAG_INVALID || in cipso_v4_validate()
1610 if (cipso_v4_map_lvl_valid(doi_def, in cipso_v4_validate()
1616 cipso_v4_map_cat_rbm_valid(doi_def, in cipso_v4_validate()
1630 if (cipso_v4_map_lvl_valid(doi_def, in cipso_v4_validate()
1636 cipso_v4_map_cat_enum_valid(doi_def, in cipso_v4_validate()
1649 if (cipso_v4_map_lvl_valid(doi_def, in cipso_v4_validate()
1655 cipso_v4_map_cat_rng_valid(doi_def, in cipso_v4_validate()
1763 const struct cipso_v4_doi *doi_def, in cipso_v4_genopt() argument
1778 switch (doi_def->tags[iter]) { in cipso_v4_genopt()
1780 ret_val = cipso_v4_gentag_rbm(doi_def, in cipso_v4_genopt()
1786 ret_val = cipso_v4_gentag_enum(doi_def, in cipso_v4_genopt()
1792 ret_val = cipso_v4_gentag_rng(doi_def, in cipso_v4_genopt()
1798 ret_val = cipso_v4_gentag_loc(doi_def, in cipso_v4_genopt()
1810 doi_def->tags[iter] != CIPSO_V4_TAG_INVALID); in cipso_v4_genopt()
1813 cipso_v4_gentag_hdr(doi_def, buf, ret_val); in cipso_v4_genopt()
1832 const struct cipso_v4_doi *doi_def, in cipso_v4_sock_setattr() argument
1860 ret_val = cipso_v4_genopt(buf, buf_len, doi_def, secattr); in cipso_v4_sock_setattr()
1917 const struct cipso_v4_doi *doi_def, in cipso_v4_req_setattr() argument
1937 ret_val = cipso_v4_genopt(buf, buf_len, doi_def, secattr); in cipso_v4_req_setattr()
2090 struct cipso_v4_doi *doi_def; in cipso_v4_getattr() local
2097 doi_def = cipso_v4_doi_search(doi); in cipso_v4_getattr()
2098 if (!doi_def) in cipso_v4_getattr()
2105 ret_val = cipso_v4_parsetag_rbm(doi_def, &cipso[6], secattr); in cipso_v4_getattr()
2108 ret_val = cipso_v4_parsetag_enum(doi_def, &cipso[6], secattr); in cipso_v4_getattr()
2111 ret_val = cipso_v4_parsetag_rng(doi_def, &cipso[6], secattr); in cipso_v4_getattr()
2114 ret_val = cipso_v4_parsetag_loc(doi_def, &cipso[6], secattr); in cipso_v4_getattr()
2165 const struct cipso_v4_doi *doi_def, in cipso_v4_skbuff_setattr() argument
2176 ret_val = cipso_v4_genopt(buf, buf_len, doi_def, secattr); in cipso_v4_skbuff_setattr()