1 /* SPDX-License-Identifier: GPL-2.0-or-later * << 2 /* 1 /* 3 * CALIPSO - Common Architecture Label IPv6 Se 2 * CALIPSO - Common Architecture Label IPv6 Security Option 4 * 3 * 5 * This is an implementation of the CALIPSO pr 4 * This is an implementation of the CALIPSO protocol as specified in 6 * RFC 5570. 5 * RFC 5570. 7 * 6 * 8 * Authors: Paul Moore <paul@paul-moore.com> 7 * Authors: Paul Moore <paul@paul-moore.com> 9 * Huw Davies <huw@codeweavers.com> 8 * Huw Davies <huw@codeweavers.com> >> 9 * 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 * >> 16 * This program is free software; you can redistribute it and/or modify >> 17 * it under the terms of the GNU General Public License as published by >> 18 * the Free Software Foundation; either version 2 of the License, or >> 19 * (at your option) any later version. >> 20 * >> 21 * This program is distributed in the hope that it will be useful, >> 22 * but WITHOUT ANY WARRANTY; without even the implied warranty of >> 23 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See >> 24 * the GNU General Public License for more details. >> 25 * >> 26 * You should have received a copy of the GNU General Public License >> 27 * along with this program; if not, see <http://www.gnu.org/licenses/>. >> 28 * 15 */ 29 */ 16 30 17 #ifndef _CALIPSO_H 31 #ifndef _CALIPSO_H 18 #define _CALIPSO_H 32 #define _CALIPSO_H 19 33 20 #include <linux/types.h> 34 #include <linux/types.h> 21 #include <linux/rcupdate.h> 35 #include <linux/rcupdate.h> 22 #include <linux/list.h> 36 #include <linux/list.h> 23 #include <linux/net.h> 37 #include <linux/net.h> 24 #include <linux/skbuff.h> 38 #include <linux/skbuff.h> 25 #include <net/netlabel.h> 39 #include <net/netlabel.h> 26 #include <net/request_sock.h> 40 #include <net/request_sock.h> 27 #include <linux/refcount.h> !! 41 #include <linux/atomic.h> 28 #include <asm/unaligned.h> 42 #include <asm/unaligned.h> 29 43 30 /* known doi values */ 44 /* known doi values */ 31 #define CALIPSO_DOI_UNKNOWN 0x0000000 45 #define CALIPSO_DOI_UNKNOWN 0x00000000 32 46 33 /* doi mapping types */ 47 /* doi mapping types */ 34 #define CALIPSO_MAP_UNKNOWN 0 48 #define CALIPSO_MAP_UNKNOWN 0 35 #define CALIPSO_MAP_PASS 2 49 #define CALIPSO_MAP_PASS 2 36 50 37 /* 51 /* 38 * CALIPSO DOI definitions 52 * CALIPSO DOI definitions 39 */ 53 */ 40 54 41 /* DOI definition struct */ 55 /* DOI definition struct */ 42 struct calipso_doi { 56 struct calipso_doi { 43 u32 doi; 57 u32 doi; 44 u32 type; 58 u32 type; 45 59 46 refcount_t refcount; !! 60 atomic_t refcount; 47 struct list_head list; 61 struct list_head list; 48 struct rcu_head rcu; 62 struct rcu_head rcu; 49 }; 63 }; 50 64 51 /* 65 /* 52 * Sysctl Variables 66 * Sysctl Variables 53 */ 67 */ 54 extern int calipso_cache_enabled; 68 extern int calipso_cache_enabled; 55 extern int calipso_cache_bucketsize; 69 extern int calipso_cache_bucketsize; 56 70 57 #ifdef CONFIG_NETLABEL 71 #ifdef CONFIG_NETLABEL 58 int __init calipso_init(void); 72 int __init calipso_init(void); 59 void calipso_exit(void); 73 void calipso_exit(void); 60 bool calipso_validate(const struct sk_buff *sk 74 bool calipso_validate(const struct sk_buff *skb, const unsigned char *option); 61 #else 75 #else 62 static inline int __init calipso_init(void) 76 static inline int __init calipso_init(void) 63 { 77 { 64 return 0; 78 return 0; 65 } 79 } 66 80 67 static inline void calipso_exit(void) 81 static inline void calipso_exit(void) 68 { 82 { 69 } 83 } 70 static inline bool calipso_validate(const stru 84 static inline bool calipso_validate(const struct sk_buff *skb, 71 const unsi 85 const unsigned char *option) 72 { 86 { 73 return true; 87 return true; 74 } 88 } 75 #endif /* CONFIG_NETLABEL */ 89 #endif /* CONFIG_NETLABEL */ 76 90 77 #endif /* _CALIPSO_H */ 91 #endif /* _CALIPSO_H */ 78 92
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.