1/* 2 * CALIPSO - Common Architecture Label IPv6 Security Option 3 * 4 * This is an implementation of the CALIPSO protocol as specified in 5 * RFC 5570. 6 * 7 * Authors: Paul Moore <paul@paul-moore.com> 8 * Huw Davies <huw@codeweavers.com> 9 * 10 */ 11 12/* 13 * (c) Copyright Hewlett-Packard Development Company, L.P., 2006 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 * 29 */ 30 31#ifndef _CALIPSO_H 32#define _CALIPSO_H 33 34#include <linux/types.h> 35#include <linux/rcupdate.h> 36#include <linux/list.h> 37#include <linux/net.h> 38#include <linux/skbuff.h> 39#include <net/netlabel.h> 40#include <net/request_sock.h> 41#include <linux/refcount.h> 42#include <asm/unaligned.h> 43 44/* known doi values */ 45#define CALIPSO_DOI_UNKNOWN 0x00000000 46 47/* doi mapping types */ 48#define CALIPSO_MAP_UNKNOWN 0 49#define CALIPSO_MAP_PASS 2 50 51/* 52 * CALIPSO DOI definitions 53 */ 54 55/* DOI definition struct */ 56struct calipso_doi { 57 u32 doi; 58 u32 type; 59 60 refcount_t refcount; 61 struct list_head list; 62 struct rcu_head rcu; 63}; 64 65/* 66 * Sysctl Variables 67 */ 68extern int calipso_cache_enabled; 69extern int calipso_cache_bucketsize; 70 71#ifdef CONFIG_NETLABEL 72int __init calipso_init(void); 73void calipso_exit(void); 74bool calipso_validate(const struct sk_buff *skb, const unsigned char *option); 75#else 76static inline int __init calipso_init(void) 77{ 78 return 0; 79} 80 81static inline void calipso_exit(void) 82{ 83} 84static inline bool calipso_validate(const struct sk_buff *skb, 85 const unsigned char *option) 86{ 87 return true; 88} 89#endif /* CONFIG_NETLABEL */ 90 91#endif /* _CALIPSO_H */ 92