Add an "hostname" config option.
authorBenjamin Cama <benoar@dolka.fr>
Mon, 25 Jul 2011 18:07:14 +0000 (20:07 +0200)
committerBenjamin Cama <benoar@dolka.fr>
Fri, 29 Jul 2011 10:54:54 +0000 (12:54 +0200)
It is overridden by the -h command line option.

Signed-off-by: Benjamin Cama <benoar@dolka.fr>
etc/startup-config.default
l2tpns.c
l2tpns.h

index 5e3f930..1b88dc2 100644 (file)
@@ -7,6 +7,9 @@ set log_file "/var/log/l2tpns"
 # Write pid to this file
 set pid_file "/var/run/l2tpns.pid"
 
+# This host name, if different from the OS one
+#set hostname "localhost"
+
 # Shared secret with LAC
 set l2tp_secret "secret"
 
index f966a78..b745b3f 100644 (file)
--- a/l2tpns.c
+++ b/l2tpns.c
@@ -69,7 +69,7 @@ int rand_fd = -1;             // Random data source
 int cluster_sockfd = -1;       // Intra-cluster communications socket.
 int epollfd = -1;              // event polling
 time_t basetime = 0;           // base clock
-char hostname[1000] = "";      // us.
+char hostname[MAXHOSTNAME] = "";       // us.
 static int tunidx;             // ifr_ifindex of tun device
 static int syslog_log = 0;     // are we logging to syslog
 static FILE *log_stream = 0;   // file handle for direct logging (i.e. direct into file, not via syslog).
@@ -158,6 +158,7 @@ config_descriptt config_values[] = {
        CONFIG("cluster_master_min_adv", cluster_master_min_adv, INT),
        CONFIG("ipv6_prefix", ipv6_prefix, IPv6),
        CONFIG("cli_bind_address", cli_bind_address, IPv4),
+       CONFIG("hostname", hostname, STRING),
        { NULL, 0, 0, 0 },
 };
 
@@ -4068,9 +4069,14 @@ static void initdata(int optdebug, char *optconfig)
 
        if (!*hostname)
        {
-               // Grab my hostname unless it's been specified
-               gethostname(hostname, sizeof(hostname));
-               stripdomain(hostname);
+               if (!*config->hostname)
+               {
+                       // Grab my hostname unless it's been specified
+                       gethostname(hostname, sizeof(hostname));
+                       stripdomain(hostname);
+               }
+               else
+                       strcpy(hostname, config->hostname);
        }
 
        _statistics->start_time = _statistics->last_reset = time(NULL);
index 76e9aa2..4df0a5a 100644 (file)
--- a/l2tpns.h
+++ b/l2tpns.h
@@ -38,6 +38,7 @@
 #define PPPoE_MRU      1492            // maximum PPPoE MRU (rfc2516: 1500 less PPPoE header (6) and PPP protocol ID (2))
 #define MAXETHER       (MAXMTU+18)     // max packet we try sending to tun
 #define MAXTEL         96              // telephone number
+#define MAXHOSTNAME    256             // hostname
 #define MAXUSER                128             // username
 #define MAXPASS                128             // password
 #define MAXPLUGINS     20              // maximum number of plugins to load
@@ -713,6 +714,7 @@ typedef struct
        int             cluster_master_min_adv;         // Master advertises routes while the number of up to date
                                                        // slaves is less than this value.
        in_addr_t       cli_bind_address;               // bind address for CLI
+       char            hostname[MAXHOSTNAME];  // hostname (overridden by -h on command line)
        // Guest change
        char            guest_user[MAXUSER];            // Guest account username