#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
}
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
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;
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;
int ppp_restart_time; // timeout for PPP restart
int ppp_max_configure; // max lcp configure requests to send
int ppp_max_failure; // max lcp configure naks to send
+ int ppp_keepalive; // send echoes regardless
char radiussecret[64];
int radius_accounting;
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;
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);