X-Git-Url: http://git.sameswireless.fr/l2tpns.git/blobdiff_plain/9fb78ffe6ae137125521a5810149e2adde5e63c6..ec4f5a95de78fd6dea23e8a20ace3144e4e3eea6:/l2tpns.h diff --git a/l2tpns.h b/l2tpns.h index 98e605a..092c683 100644 --- a/l2tpns.h +++ b/l2tpns.h @@ -64,7 +64,7 @@ #define MAXFRAGLEN 1496 // Maximum length for Multilink fragment (The multilink may contain only one link) #define MAXFRAGNUM 512 // Maximum number of Multilink fragment in a bundle (must be in the form of 2^X) // it's not expected to have a space for more than 10 unassembled packets = 10 * MAXBUNDLESES -#define MAXFRAGNUM_MASK 511 // Must be equal to MAXFRAGNUM-1 +#define MAXFRAGNUM_MASK (MAXFRAGNUM - 1) // Must be equal to MAXFRAGNUM-1 // Constants #ifndef ETCDIR @@ -247,10 +247,7 @@ typedef struct controls // control message { struct controls *next; // next in queue uint16_t length; // length - union { - uint8_t buf[MAXCONTROL]; - uint16_t buf16[MAXCONTROL/2]; - } __attribute__ ((__transparent_union__)); + uint8_t buf[MAXCONTROL]; } controlt; @@ -356,9 +353,9 @@ bundlet; typedef struct { - fragmentt fragment[MAXFRAGNUM]; - uint8_t reassembled_frame[MAXETHER]; // The reassembled frame - uint16_t re_frame_len; // The reassembled frame length + fragmentt fragment[MAXFRAGNUM]; + uint8_t reassembled_frame[MAXETHER]; // The reassembled frame + uint16_t re_frame_len; // The reassembled frame length uint16_t re_frame_begin_index, re_frame_end_index; // reassembled frame begin index, end index respectively uint16_t start_index, end_index; // start and end sequence numbers available on the fragments array respectively uint32_t M; // Minumum frame sequence number received over all bundle members @@ -780,6 +777,7 @@ typedef struct char pppoe_ac_name[64]; uint8_t pppoe_hwaddr[ETH_ALEN]; // MAC addr of interface pppoe to bind int disable_sending_hello; // Disable l2tp sending HELLO message for Apple compatibility. + int disable_no_spoof; // Disable no spoof (permit load balancing client --> internet) } configt; enum config_typet { INT, STRING, UNSIGNED_LONG, SHORT, BOOL, IPv4, IPv6 }; @@ -899,6 +897,7 @@ void processipv6in(sessionidt s, tunnelidt t, uint8_t *p, uint16_t l); void processccp(sessionidt s, tunnelidt t, uint8_t *p, uint16_t l); void sendchap(sessionidt s, tunnelidt t); uint8_t *makeppp(uint8_t *b, int size, uint8_t *p, int l, sessionidt s, tunnelidt t, uint16_t mtype, uint8_t prio, bundleidt bid, uint8_t mp_bits); +uint8_t *opt_makeppp(uint8_t *p, int l, sessionidt s, tunnelidt t, uint16_t mtype, uint8_t prio, bundleidt bid, uint8_t mp_bits); void sendlcp(sessionidt s, tunnelidt t); void send_ipin(sessionidt s, uint8_t *buf, int len); void sendccp(sessionidt s, tunnelidt t);