ipsec.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:2k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. /*
  2.  * Definitions for the SECurity layer
  3.  *
  4.  * Author:
  5.  * Robert Muchsel <muchsel@acm.org>
  6.  *
  7.  * This program is free software; you can redistribute it and/or
  8.  * modify it under the terms of the GNU General Public License
  9.  * as published by the Free Software Foundation; either version
  10.  * 2 of the License, or (at your option) any later version.
  11.  */
  12.  
  13. #ifndef _LINUX_IPSEC_H
  14. #define _LINUX_IPSEC_H
  15. #include <linux/config.h>
  16. #include <linux/socket.h>
  17. #include <net/sock.h>
  18. #include <linux/skbuff.h>
  19. /* Values for the set/getsockopt calls */
  20. /* These defines are compatible with NRL IPv6, however their semantics
  21.    is different */
  22. #define IPSEC_LEVEL_NONE -1 /* send plaintext, accept any */
  23. #define IPSEC_LEVEL_DEFAULT 0 /* encrypt/authenticate if possible */
  24. /* the default MUST be 0, because a */
  25. /* socket is initialized with 0's */
  26. #define IPSEC_LEVEL_USE 1 /* use outbound, don't require inbound */
  27. #define IPSEC_LEVEL_REQUIRE 2 /* require both directions */
  28. #define IPSEC_LEVEL_UNIQUE 2 /* for compatibility only */
  29. #ifdef __KERNEL__
  30. /* skb bit flags set on packet input processing */
  31. #define RCV_SEC 0x0f /* options on receive */
  32. #define RCV_AUTH 0x01 /* was authenticated */
  33. #define RCV_CRYPT 0x02 /* was encrypted */
  34. #define RCV_TUNNEL 0x04 /* was tunneled */
  35. #define SND_SEC 0xf0 /* options on send, these are */
  36. #define SND_AUTH 0x10 /* currently unused */
  37. #define SND_CRYPT 0x20
  38. #define SND_TUNNEL 0x40
  39. /*
  40.  * FIXME: ignores network encryption for now..
  41.  */
  42.  
  43. #ifdef CONFIG_NET_SECURITY
  44. static __inline__ int ipsec_sk_policy(struct sock *sk, struct sk_buff *skb)
  45. {
  46. return ((sk->authentication < IPSEC_LEVEL_REQUIRE) ||
  47. (skb->security & RCV_AUTH)) &&
  48. ((sk->encryption < IPSEC_LEVEL_REQUIRE) ||
  49. (skb->security & RCV_CRYPT));
  50. }
  51. #else
  52. static __inline__ int ipsec_sk_policy(struct sock *sk, struct sk_buff *skb)
  53. {
  54. return 1;
  55. }
  56. #endif /* CONFIG */
  57. #endif /* __KERNEL__ */
  58. #endif /* _LINUX_IPSEC_H */