~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Linux Cross Reference
Linux/include/linux/divert.h

Version: ~ [ 2.4.0 ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /*
  2  * Frame Diversion, Benoit Locher <Benoit.Locher@skf.com>
  3  *
  4  * Changes:
  5  *              06/09/2000      BL:     initial version
  6  * 
  7  */
  8  
  9 #ifndef _LINUX_DIVERT_H
 10 #define _LINUX_DIVERT_H
 11 
 12 #include <asm/types.h>
 13 
 14 #define MAX_DIVERT_PORTS        8       /* Max number of ports to divert (tcp, udp) */
 15 
 16 /* Divertable protocols */
 17 #define DIVERT_PROTO_NONE       0x0000
 18 #define DIVERT_PROTO_IP         0x0001
 19 #define DIVERT_PROTO_ICMP       0x0002
 20 #define DIVERT_PROTO_TCP        0x0004
 21 #define DIVERT_PROTO_UDP        0x0008
 22 
 23 /*
 24  *      This is an Ethernet Frame Diverter option block
 25  */
 26 struct divert_blk
 27 {
 28         int             divert;  /* are we active */
 29         unsigned int protos;    /* protocols */
 30         u16             tcp_dst[MAX_DIVERT_PORTS]; /* specific tcp dst ports to divert */
 31         u16             tcp_src[MAX_DIVERT_PORTS]; /* specific tcp src ports to divert */
 32         u16             udp_dst[MAX_DIVERT_PORTS]; /* specific udp dst ports to divert */
 33         u16             udp_src[MAX_DIVERT_PORTS]; /* specific udp src ports to divert */
 34 };
 35 
 36 /*
 37  * Diversion control block, for configuration with the userspace tool
 38  * divert
 39  */
 40 
 41 typedef union _divert_cf_arg
 42 {
 43         s16             int16;
 44         u16             uint16;
 45         s32             int32;
 46         u32             uint32;
 47         s64             int64;
 48         u64             uint64;
 49         void    *ptr;
 50 } divert_cf_arg;
 51 
 52 
 53 struct divert_cf
 54 {
 55         int     cmd;                            /* Command */
 56         divert_cf_arg   arg1,
 57                                         arg2,
 58                                         arg3;
 59         int     dev_index;      /* device index (eth0=0, etc...) */
 60 };
 61 
 62 
 63 /* Diversion commands */
 64 #define DIVCMD_DIVERT                   1 /* ENABLE/DISABLE diversion */
 65 #define DIVCMD_IP                               2 /* ENABLE/DISABLE whold IP diversion */
 66 #define DIVCMD_TCP                              3 /* ENABLE/DISABLE whold TCP diversion */
 67 #define DIVCMD_TCPDST                   4 /* ADD/REMOVE TCP DST port for diversion */
 68 #define DIVCMD_TCPSRC                   5 /* ADD/REMOVE TCP SRC port for diversion */
 69 #define DIVCMD_UDP                              6 /* ENABLE/DISABLE whole UDP diversion */
 70 #define DIVCMD_UDPDST                   7 /* ADD/REMOVE UDP DST port for diversion */
 71 #define DIVCMD_UDPSRC                   8 /* ADD/REMOVE UDP SRC port for diversion */
 72 #define DIVCMD_ICMP                             9 /* ENABLE/DISABLE whole ICMP diversion */
 73 #define DIVCMD_GETSTATUS                10 /* GET the status of the diverter */
 74 #define DIVCMD_RESET                    11 /* Reset the diverter on the specified dev */
 75 #define DIVCMD_GETVERSION               12 /* Retrieve the diverter code version (char[32]) */
 76 
 77 /* General syntax of the commands:
 78  * 
 79  * DIVCMD_xxxxxx(arg1, arg2, arg3, dev_index)
 80  * 
 81  * SIOCSIFDIVERT:
 82  *   DIVCMD_DIVERT(DIVARG1_ENABLE|DIVARG1_DISABLE, , ,ifindex)
 83  *   DIVCMD_IP(DIVARG1_ENABLE|DIVARG1_DISABLE, , , ifindex)
 84  *   DIVCMD_TCP(DIVARG1_ENABLE|DIVARG1_DISABLE, , , ifindex)
 85  *   DIVCMD_TCPDST(DIVARG1_ADD|DIVARG1_REMOVE, port, , ifindex)
 86  *   DIVCMD_TCPSRC(DIVARG1_ADD|DIVARG1_REMOVE, port, , ifindex)
 87  *   DIVCMD_UDP(DIVARG1_ENABLE|DIVARG1_DISABLE, , , ifindex)
 88  *   DIVCMD_UDPDST(DIVARG1_ADD|DIVARG1_REMOVE, port, , ifindex)
 89  *   DIVCMD_UDPSRC(DIVARG1_ADD|DIVARG1_REMOVE, port, , ifindex)
 90  *   DIVCMD_ICMP(DIVARG1_ENABLE|DIVARG1_DISABLE, , , ifindex)
 91  *   DIVCMD_RESET(, , , ifindex)
 92  *   
 93  * SIOGIFDIVERT:
 94  *   DIVCMD_GETSTATUS(divert_blk, , , ifindex)
 95  *   DIVCMD_GETVERSION(string[3])
 96  */
 97 
 98 
 99 /* Possible values for arg1 */
100 #define DIVARG1_ENABLE                  0 /* ENABLE something */
101 #define DIVARG1_DISABLE                 1 /* DISABLE something */
102 #define DIVARG1_ADD                             2 /* ADD something */
103 #define DIVARG1_REMOVE                  3 /* REMOVE something */
104 
105 
106 #ifdef __KERNEL__
107 
108 /* diverter functions */
109 #include <linux/skbuff.h>
110 int alloc_divert_blk(struct net_device *);
111 void free_divert_blk(struct net_device *);
112 int divert_ioctl(unsigned int cmd, struct divert_cf *arg);
113 void divert_frame(struct sk_buff *skb);
114 
115 #endif 
116 
117 #endif  /* _LINUX_DIVERT_H */
118 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.