#define MAXSESSINGRP 12 // Maximum number of member links in grouped session
#define MAXGROUPE 300 // could be up to 65535, Maximum number of grouped session
#define MAXROUTEINGRP 15 // max static routes per group
+#define MAXROUTE6INGRP 15 // max static Ipv6 routes per group
// Tunnel Id reserved for pppoe
#define TUNNEL_ID_PPPOE 1
sessionidt smin;
groupsesslistt sesslist[MAXSESSINGRP];
routet route[MAXROUTEINGRP]; // static routes
+ routet6 route6[MAXROUTE6INGRP]; // static IPv6 routes
+ uint8_t ipv6cp_opened;
uint8_t nbroutesgrp;
+ uint8_t nbroutes6grp;
uint8_t nbsession;
}
groupsesst;
-union iphash
-{
- sessionidt sess;
- union iphash *idx;
-}; // Mapping from IP address to session structures.
-
typedef struct
{
int state; // current state (bundlestate enum)
void lac_tunnelshutdown(tunnelidt t, char *reason, int result, int error, char *msg);
// grpsess.c
-sessionidt grp_getnextsession(groupidt g, in_addr_t ip, in_addr_t ip_src);
+sessionidt grp_getnextsession(groupidt g, void *p_ip, void *p_ip_src, int is_ipv6);
void grp_initdata(void);
void grp_processvendorspecific(sessionidt s, uint8_t *pvs);
groupidt grp_groupbysession(sessionidt s);
groupidt grp_groupbyip(in_addr_t ip);
+groupidt grp_groupbyipv6(struct in6_addr ip);
void grp_setgrouproute(groupidt g, int add);
+void grp_setgrouproute6(groupidt g, int add);
void grp_time_changed(void);
void grp_removesession(groupidt g, sessionidt s);
int grp_cluster_load_groupe(groupidt g, groupsesst *new);
extern int clifd;
extern int epollfd;
extern int tunidx; // ifr_ifindex of tun device
-extern union iphash ip_hash[256];
struct event_data {
enum {