Merge from master
[l2tpns.git] / l2tpns.h
index bce434f..d28f3e7 100644 (file)
--- a/l2tpns.h
+++ b/l2tpns.h
@@ -72,6 +72,8 @@
 // Multi bind address constants
 #define MAX_UDPFD 4
 #define MAX_BINDADDR MAX_UDPFD
+// + 1 for the LAC Hostname
+#define MAX_NBHOSTNAME (MAX_UDPFD + 1)
 // 4 + 1 for the udplac
 #define INIT_TABUDPFD {-1, -1, -1, -1, -1}
 #define INIT_TABUDPVAR {0, 0, 0, 0, 0}
@@ -736,6 +738,7 @@ typedef struct
        int             num_tbfs;                       // number of throttle buckets
 
        char            accounting_dir[128];
+       int             account_all_origin; // Accouting all origin (LAC data + Remote LNS Data + PPPOE data)
        in_addr_t       bind_address;
        in_addr_t       peer_address;
        int             send_garp;                      // Set to true to garp for vip address on startup
@@ -815,15 +818,19 @@ typedef struct
        char pppoe_service_name[64];    // pppoe service name
        char pppoe_ac_name[64];
        uint8_t pppoe_hwaddr[ETH_ALEN]; // MAC addr of interface pppoe to bind
+       int pppoe_only_equal_svc_name; // Accept only PADI with service-name equal to server
        int disable_sending_hello; // Disable l2tp sending HELLO message for Apple compatibility.
        int disable_no_spoof; // Disable no spoof (permit load balancing client --> internet)
        int nbudpfd; // number UDP file handle
        int nbmultiaddress; // number multi address to bind
        int indexlacudpfd;      // Index UDP LAC file handle (in udpfd[])
+       int nbmultihostname;    // number hostname, normally the same number as the nbudpfd
+       int grp_txrate_average_time; // caculation txrate average time (default 10s)
        in_addr_t bind_n_address[MAX_BINDADDR];
        in_addr_t iftun_n_address[MAX_BINDADDR];
        char bind_multi_address[256];
-       int grp_txrate_average_time; // caculation txrate average time (default 10s)
+       char multi_hostname[512];
+       char multi_n_hostname[MAX_NBHOSTNAME][MAXHOSTNAME];     // list hostname
 } configt;
 
 enum config_typet { INT, STRING, UNSIGNED_LONG, SHORT, BOOL, IPv4, IPv6 };
@@ -984,13 +991,12 @@ void processipout(uint8_t *buf, int len);
 void snoop_send_packet(uint8_t *packet, uint16_t size, in_addr_t destination, uint16_t port);
 int find_filter(char const *name, size_t len);
 int ip_filter(uint8_t *buf, int len, uint8_t filter);
-int cmd_show_ipcache(struct cli_def *cli, char *command, char **argv, int argc);
-int cmd_show_hist_idle(struct cli_def *cli, char *command, char **argv, int argc);
-int cmd_show_hist_open(struct cli_def *cli, char *command, char **argv, int argc);
+int cmd_show_ipcache(struct cli_def *cli, const char *command, char **argv, int argc);
+int cmd_show_hist_idle(struct cli_def *cli, const char *command, char **argv, int argc);
+int cmd_show_hist_open(struct cli_def *cli, const char *command, char **argv, int argc);
 void netlink_addattr(struct nlmsghdr *nh, int type, const void *data, int alen);
 ssize_t netlink_send(struct nlmsghdr *nh);
 void cache_ipmap(in_addr_t ip, sessionidt s);
-
 tunnelidt lac_new_tunnel();
 void lac_tunnelclear(tunnelidt t);
 void lac_send_SCCRQ(tunnelidt t, uint8_t * auth, unsigned int auth_len);
@@ -998,7 +1004,7 @@ void lac_send_ICRQ(tunnelidt t, sessionidt s);
 void lac_tunnelshutdown(tunnelidt t, char *reason, int result, int error, char *msg);
 
 // grpsess.c
-sessionidt grp_getnextsession(groupidt g, in_addr_t ip);
+sessionidt grp_getnextsession(groupidt g, in_addr_t ip, in_addr_t ip_src);
 void grp_initdata(void);
 void grp_processvendorspecific(sessionidt s, uint8_t *pvs);
 groupidt grp_groupbysession(sessionidt s);