1 /* SPDX-License-Identifier: GPL-2.0-or-later * 1 /* SPDX-License-Identifier: GPL-2.0-or-later */ 2 /* 2 /* 3 * CALIPSO - Common Architecture Label IPv6 Se 3 * CALIPSO - Common Architecture Label IPv6 Security Option 4 * 4 * 5 * This is an implementation of the CALIPSO pr 5 * This is an implementation of the CALIPSO protocol as specified in 6 * RFC 5570. 6 * RFC 5570. 7 * 7 * 8 * Authors: Paul Moore <paul@paul-moore.com> 8 * Authors: Paul Moore <paul@paul-moore.com> 9 * Huw Davies <huw@codeweavers.com> 9 * Huw Davies <huw@codeweavers.com> 10 */ 10 */ 11 11 12 /* 12 /* 13 * (c) Copyright Hewlett-Packard Development C 13 * (c) Copyright Hewlett-Packard Development Company, L.P., 2006 14 * (c) Copyright Huw Davies <huw@codeweavers.c 14 * (c) Copyright Huw Davies <huw@codeweavers.com>, 2015 15 */ 15 */ 16 16 17 #ifndef _CALIPSO_H 17 #ifndef _CALIPSO_H 18 #define _CALIPSO_H 18 #define _CALIPSO_H 19 19 20 #include <linux/types.h> 20 #include <linux/types.h> 21 #include <linux/rcupdate.h> 21 #include <linux/rcupdate.h> 22 #include <linux/list.h> 22 #include <linux/list.h> 23 #include <linux/net.h> 23 #include <linux/net.h> 24 #include <linux/skbuff.h> 24 #include <linux/skbuff.h> 25 #include <net/netlabel.h> 25 #include <net/netlabel.h> 26 #include <net/request_sock.h> 26 #include <net/request_sock.h> 27 #include <linux/refcount.h> 27 #include <linux/refcount.h> 28 #include <asm/unaligned.h> 28 #include <asm/unaligned.h> 29 29 30 /* known doi values */ 30 /* known doi values */ 31 #define CALIPSO_DOI_UNKNOWN 0x0000000 31 #define CALIPSO_DOI_UNKNOWN 0x00000000 32 32 33 /* doi mapping types */ 33 /* doi mapping types */ 34 #define CALIPSO_MAP_UNKNOWN 0 34 #define CALIPSO_MAP_UNKNOWN 0 35 #define CALIPSO_MAP_PASS 2 35 #define CALIPSO_MAP_PASS 2 36 36 37 /* 37 /* 38 * CALIPSO DOI definitions 38 * CALIPSO DOI definitions 39 */ 39 */ 40 40 41 /* DOI definition struct */ 41 /* DOI definition struct */ 42 struct calipso_doi { 42 struct calipso_doi { 43 u32 doi; 43 u32 doi; 44 u32 type; 44 u32 type; 45 45 46 refcount_t refcount; 46 refcount_t refcount; 47 struct list_head list; 47 struct list_head list; 48 struct rcu_head rcu; 48 struct rcu_head rcu; 49 }; 49 }; 50 50 51 /* 51 /* 52 * Sysctl Variables 52 * Sysctl Variables 53 */ 53 */ 54 extern int calipso_cache_enabled; 54 extern int calipso_cache_enabled; 55 extern int calipso_cache_bucketsize; 55 extern int calipso_cache_bucketsize; 56 56 57 #ifdef CONFIG_NETLABEL 57 #ifdef CONFIG_NETLABEL 58 int __init calipso_init(void); 58 int __init calipso_init(void); 59 void calipso_exit(void); 59 void calipso_exit(void); 60 bool calipso_validate(const struct sk_buff *sk 60 bool calipso_validate(const struct sk_buff *skb, const unsigned char *option); 61 #else 61 #else 62 static inline int __init calipso_init(void) 62 static inline int __init calipso_init(void) 63 { 63 { 64 return 0; 64 return 0; 65 } 65 } 66 66 67 static inline void calipso_exit(void) 67 static inline void calipso_exit(void) 68 { 68 { 69 } 69 } 70 static inline bool calipso_validate(const stru 70 static inline bool calipso_validate(const struct sk_buff *skb, 71 const unsi 71 const unsigned char *option) 72 { 72 { 73 return true; 73 return true; 74 } 74 } 75 #endif /* CONFIG_NETLABEL */ 75 #endif /* CONFIG_NETLABEL */ 76 76 77 #endif /* _CALIPSO_H */ 77 #endif /* _CALIPSO_H */ 78 78
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.