Add configurable hostname
authorDavid Parrish <david@dparrish.com>
Sun, 19 Sep 2004 23:26:46 +0000 (23:26 +0000)
committerDavid Parrish <david@dparrish.com>
Sun, 19 Sep 2004 23:26:46 +0000 (23:26 +0000)
Changes
cli.c
l2tpns.c
l2tpns.h

diff --git a/Changes b/Changes
index ed18206..24a6b00 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,7 +1,7 @@
 * ? David Parrish <david@dparrish.com> ?
 - Added support for hidden AVPs by Robert Clark
 - l2tpns-chap-response.patch from Robert Clark
-- l2tpns-config-hostname.patch from Robert Clark
+- merge l2tpns-config-hostname.patch from Robert Clark
 
 * Thu Sep 02 2004 David Parrish <david@dparrish.com> 2.0.2
 - Combined LCP patches from Iain and Yuri. This should allow Windows 2k/XP
diff --git a/cli.c b/cli.c
index 088ec48..ed0874e 100644 (file)
--- a/cli.c
+++ b/cli.c
@@ -2,7 +2,7 @@
 // vim: sw=8 ts=8
 
 char const *cvs_name = "$Name:  $";
-char const *cvs_id_cli = "$Id: cli.c,v 1.15 2004-09-02 04:18:07 fred_nerk Exp $";
+char const *cvs_id_cli = "$Id: cli.c,v 1.16 2004-09-19 23:26:46 fred_nerk Exp $";
 
 #include <stdio.h>
 #include <stdarg.h>
@@ -103,7 +103,7 @@ int cmd_remove_plugin(struct cli_def *cli, char *command, char **argv, int argc)
 int cmd_uptime(struct cli_def *cli, char *command, char **argv, int argc);
 int regular_stuff(struct cli_def *cli);
 
-void init_cli(char *hostname)
+void init_cli()
 {
        FILE *f;
        char buf[4096];
@@ -113,10 +113,10 @@ void init_cli(char *hostname)
        struct sockaddr_in addr;
 
        cli = cli_init();
-       if (hostname && *hostname)
-                       cli_set_hostname(cli, hostname);
+       if (config->hostname && *config->hostname)
+               cli_set_hostname(cli, config->hostname);
        else
-                       cli_set_hostname(cli, "l2tpns");
+               cli_set_hostname(cli, "l2tpns");
 
        c = cli_register_command(cli, NULL, "show", NULL, PRIVILEGE_UNPRIVILEGED, MODE_EXEC, NULL);
        cli_register_command(cli, c, "banana", cmd_show_banana, PRIVILEGE_UNPRIVILEGED, MODE_EXEC, "Show a banana");
@@ -258,6 +258,9 @@ void cli_do(int sockfd)
                }
        }
 
+       if (config->hostname && *config->hostname)
+               cli_set_hostname(cli, config->hostname);
+
        signal(SIGPIPE, SIG_DFL);
        signal(SIGCHLD, SIG_DFL);
        signal(SIGHUP, SIG_DFL);
index d55a091..0a5e6bc 100644 (file)
--- a/l2tpns.c
+++ b/l2tpns.c
@@ -4,7 +4,7 @@
 // Copyright (c) 2002 FireBrick (Andrews & Arnold Ltd / Watchfront Ltd) - GPL licenced
 // vim: sw=8 ts=8
 
-char const *cvs_id_l2tpns = "$Id: l2tpns.c,v 1.26 2004-09-19 23:19:23 fred_nerk Exp $";
+char const *cvs_id_l2tpns = "$Id: l2tpns.c,v 1.27 2004-09-19 23:26:46 fred_nerk Exp $";
 
 #include <arpa/inet.h>
 #include <assert.h>
@@ -57,7 +57,7 @@ int snoopfd = -1;             // UDP file handle for sending out intercept data
 int *radfds = NULL;            // RADIUS requests file handles
 int ifrfd = -1;                        // File descriptor for routing, etc
 time_t basetime = 0;           // base clock
-char hostname[1000] = "";      // us.
+char *hostname = NULL;         // us.
 int tunidx;                    // ifr_ifindex of tun device
 u32 sessionid = 0;             // session id for radius accounting
 int syslog_log = 0;            // are we logging to syslog
@@ -95,6 +95,7 @@ struct config_descriptt config_values[] = {
        CONFIG("debug", debug, INT),
        CONFIG("log_file", log_filename, STRING),
        CONFIG("pid_file", pid_file, STRING),
+       CONFIG("hostname", hostname, STRING),
        CONFIG("l2tp_secret", l2tpsecret, STRING),
        CONFIG("primary_dns", default_dns1, IP),
        CONFIG("secondary_dns", default_dns2, IP),
@@ -2461,6 +2462,7 @@ void mainloop(void)
 void initdata(void)
 {
        int i;
+       char *p;
 
        if ((_statistics = shared_malloc(sizeof(struct Tstats))) == MAP_FAILED)
        {
@@ -2547,13 +2549,11 @@ void initdata(void)
        for (i = 1; i < MAXTUNNEL- 1; i++)
                tunnel[i].state = TUNNELUNDEF;  // mark it as not filled in.
 
-       if (!*hostname)
-       {
-               char *p;
-               // Grab my hostname unless it's been specified
-               gethostname(hostname, sizeof(hostname));
-               if ((p = strchr(hostname, '.'))) *p = 0;
-       }
+       // Grab my hostname unless it's been specified
+       gethostname(config->hostname, sizeof(config->hostname));
+       if ((p = strchr(config->hostname, '.'))) *p = 0;
+       hostname = config->hostname;
+
        _statistics->start_time = _statistics->last_reset = time(NULL);
 
 #ifdef BGP
@@ -2957,7 +2957,7 @@ int main(int argc, char *argv[])
        config->debug = optdebug;
 
        init_tbf();
-       init_cli(hostname);
+       init_cli();
        read_config_file();
 
        log(0, 0, 0, 0, "L2TPNS version " VERSION "\n");
index aa35448..39e862f 100644 (file)
--- a/l2tpns.h
+++ b/l2tpns.h
@@ -1,5 +1,5 @@
 // L2TPNS Global Stuff
-// $Id: l2tpns.h,v 1.17 2004-09-02 04:18:07 fred_nerk Exp $
+// $Id: l2tpns.h,v 1.18 2004-09-19 23:26:46 fred_nerk Exp $
 
 #ifndef __L2TPNS_H__
 #define __L2TPNS_H__
@@ -448,6 +448,7 @@ struct configt
        char            bgp_peer[2][64];
        u16             bgp_peer_as[2];
 #endif
+       char            hostname[256];                  // our hostname - set to gethostname() by default
 };
 
 struct config_descriptt
@@ -546,7 +547,7 @@ int sessionsetup(tunnelidt t, sessionidt s);
 int cluster_send_session(int s);
 int cluster_send_tunnel(int t);
 int cluster_send_goodbye();
-void init_cli(char *hostname);
+void init_cli();
 void cli_do_file(FILE *fh);
 void cli_do(int sockfd);
 int cli_arg_help(struct cli_def *cli, int cr_ok, char *entry, ...);