X-Git-Url: http://git.sameswireless.fr/l2tpns.git/blobdiff_plain/b3f40f41f7de7a383c6f1170e546d0b09cc57338..9c77145f71b0e669421d00ae0b34680f875121ae:/l2tpns.h diff --git a/l2tpns.h b/l2tpns.h index d92c274..c4487ff 100644 --- a/l2tpns.h +++ b/l2tpns.h @@ -49,6 +49,7 @@ #define MAXPLUGINS 20 // maximum number of plugins to load #define MAXRADSERVER 10 // max radius servers #define MAXROUTE 10 // max static routes per session +#define MAXROUTE6 5 // max static Ipv6 routes per session #define MAXIPPOOL 131072 // max number of ip addresses in pool #define RINGBUFFER_SIZE 10000 // Number of ringbuffer entries to allocate #define MAX_LOG_LENGTH 512 // Maximum size of log message @@ -252,6 +253,14 @@ typedef struct // route } routet; +// structures +typedef struct // route +{ + struct in6_addr ipv6route; // Static IPv6 route + uint8_t ipv6prefixlen; // IPv6 route prefix length +} +routet6; + typedef struct controls // control message { struct controls *next; // next in queue @@ -329,14 +338,13 @@ typedef struct uint8_t walled_garden; // is this session gardened? uint8_t classlen; // class (needed for radius accounting messages) char class[MAXCLASS]; - uint8_t ipv6prefixlen; // IPv6 route prefix length - struct in6_addr ipv6route; // Static IPv6 route sessionidt forwardtosession; // LNS id_session to forward uint8_t src_hwaddr[ETH_ALEN]; // MAC addr source (for pppoe sessions 6 bytes) uint32_t dhcpv6_prefix_iaid; // prefix iaid requested by client uint32_t dhcpv6_iana_iaid; // iaid of iana requested by client struct in6_addr ipv6address; // Framed Ipv6 address struct dhcp6_opt_clientid dhcpv6_client_id; // Size max (headers + DUID) + routet6 route6[MAXROUTE6]; // static IPv6 routes char reserved[4]; // Space to expand structure without changing HB_VERSION } sessiont; @@ -598,6 +606,7 @@ struct Tstats uint32_t call_processudp; uint32_t call_sessionbyip; uint32_t call_sessionbyipv6; + uint32_t call_sessionbyipv6new; uint32_t call_sessionbyuser; uint32_t call_sendarp; uint32_t call_sendipcp; @@ -799,6 +808,7 @@ typedef struct uint32_t dhcp6_preferred_lifetime; // preferred lifetime (see rfc3315) uint32_t dhcp6_valid_lifetime; // valid lifetime (see rfc3315) uint32_t dhcp6_server_duid; // DUID of dhcpv6 server (see rfc3315) + uint32_t dns6_lifetime; // RDNSS lifetime default 1200 (see rfc6106, rfc4861) (MaxRtrAdvInterval <= Lifetime <= 2*MaxRtrAdvInterval) char default_ipv6_domain_list[255]; } configt; @@ -943,6 +953,7 @@ void send_ipv6_ra(sessionidt s, tunnelidt t, struct in6_addr *ip); void route6set(sessionidt s, struct in6_addr ip, int prefixlen, int add); sessionidt sessionbyip(in_addr_t ip); sessionidt sessionbyipv6(struct in6_addr ip); +sessionidt sessionbyipv6new(struct in6_addr ip); sessionidt sessionbyuser(char *username); void increment_counter(uint32_t *counter, uint32_t *wrap, uint32_t delta); void random_data(uint8_t *buf, int len);