ip_nat_protocol.h
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:2k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. /* Header for use in defining a given protocol. */
  2. #ifndef _IP_NAT_PROTOCOL_H
  3. #define _IP_NAT_PROTOCOL_H
  4. #include <linux/init.h>
  5. #include <linux/list.h>
  6. struct iphdr;
  7. struct ip_nat_range;
  8. struct ip_nat_protocol
  9. {
  10. struct list_head list;
  11. /* Protocol name */
  12. const char *name;
  13. /* Protocol number. */
  14. unsigned int protonum;
  15. /* Do a packet translation according to the ip_nat_proto_manip
  16.  * and manip type. */
  17. void (*manip_pkt)(struct iphdr *iph, size_t len,
  18.   const struct ip_conntrack_manip *manip,
  19.   enum ip_nat_manip_type maniptype);
  20. /* Is the manipable part of the tuple between min and max incl? */
  21. int (*in_range)(const struct ip_conntrack_tuple *tuple,
  22. enum ip_nat_manip_type maniptype,
  23. const union ip_conntrack_manip_proto *min,
  24. const union ip_conntrack_manip_proto *max);
  25. /* Alter the per-proto part of the tuple (depending on
  26.    maniptype), to give a unique tuple in the given range if
  27.    possible; return false if not.  Per-protocol part of tuple
  28.    is initialized to the incoming packet. */
  29. int (*unique_tuple)(struct ip_conntrack_tuple *tuple,
  30.     const struct ip_nat_range *range,
  31.     enum ip_nat_manip_type maniptype,
  32.     const struct ip_conntrack *conntrack);
  33. unsigned int (*print)(char *buffer,
  34.       const struct ip_conntrack_tuple *match,
  35.       const struct ip_conntrack_tuple *mask);
  36. unsigned int (*print_range)(char *buffer,
  37.     const struct ip_nat_range *range);
  38. };
  39. /* Protocol registration. */
  40. extern int ip_nat_protocol_register(struct ip_nat_protocol *proto);
  41. extern void ip_nat_protocol_unregister(struct ip_nat_protocol *proto);
  42. extern int init_protocols(void) __init;
  43. extern void cleanup_protocols(void);
  44. extern struct ip_nat_protocol *find_nat_proto(u_int16_t protonum);
  45. #endif /*_IP_NAT_PROTO_H*/