Make group to run daemon as configurable. Fixes #2 from Bugzilla #64.
diff --git a/bgpd/ChangeLog b/bgpd/ChangeLog
index 0e767de..64b229c 100644
--- a/bgpd/ChangeLog
+++ b/bgpd/ChangeLog
@@ -1,3 +1,7 @@
+2004-11-25 Hasso Tepper <hasso at quagga.net>
+
+	* bgp_main.c: Make group to run as configurable.
+
 2004-11-09 Paul Jakma <paul@dishone.st>
 
 	* bgp_nexthop.c: collapse bgp_connected_ipvX, bgp_nexthop_cache_ipvX
diff --git a/bgpd/bgp_main.c b/bgpd/bgp_main.c
index 612013e..1d6710f 100644
--- a/bgpd/bgp_main.c
+++ b/bgpd/bgp_main.c
@@ -48,6 +48,7 @@
   { "retain",      no_argument,       NULL, 'r'},
   { "no_kernel",   no_argument,       NULL, 'n'},
   { "user",        required_argument, NULL, 'u'},
+  { "group",       required_argument, NULL, 'g'},
   { "version",     no_argument,       NULL, 'v'},
   { "help",        no_argument,       NULL, 'h'},
   { 0 }
@@ -137,7 +138,8 @@
 -P, --vty_port     Set vty's port number\n\
 -r, --retain       When program terminates, retain added route by bgpd.\n\
 -n, --no_kernel    Do not install route to kernel.\n\
--u, --user         User and group to run as\n\
+-u, --user         User to run as\n\
+-g, --group        Group to run as\n\
 -v, --version      Print program version\n\
 -h, --help         Display this help and exit\n\
 \n\
@@ -212,7 +214,7 @@
   /* Command line argument treatment. */
   while (1) 
     {
-      opt = getopt_long (argc, argv, "df:i:hp:A:P:rnu:v", longopts, 0);
+      opt = getopt_long (argc, argv, "df:i:hp:A:P:rnu:g:v", longopts, 0);
     
       if (opt == EOF)
 	break;
@@ -253,9 +255,12 @@
 	case 'n':
 	  bgp_option_set (BGP_OPT_NO_FIB);
 	  break;
-  case 'u':
-    bgpd_privs.user = bgpd_privs.group = optarg;
-    break;
+	case 'u':
+	  bgpd_privs.user = optarg;
+	  break;
+	case 'g':
+	  bgpd_privs.group = optarg;
+	  break;
 	case 'v':
 	  print_version (progname);
 	  exit (0);
diff --git a/doc/ChangeLog b/doc/ChangeLog
index 48f78c1..6afe5a3 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,8 @@
+2004-11-25 Hasso Tepper <hasso at quagga.net>
+
+	* *.8: Document -g/--group command line switch and some small
+	  cosmetical changes.
+
 2004-11-22 Paul Jakma <paul@dishone.st>
 
 	* bgpd.8: escape -/+ signs, reported by ESR to bug-zebra.
diff --git a/doc/bgpd.8 b/doc/bgpd.8
index 736250e..e6f5bc6 100644
--- a/doc/bgpd.8
+++ b/doc/bgpd.8
@@ -1,4 +1,4 @@
-.TH BGPD 8 "10 August 2004" "Quagga BGPD daemon" "Version 0.96.5"
+.TH BGPD 8 "25 November 2004" "Quagga BGPD daemon" "Version 0.97.3"
 .SH NAME
 bgpd \- a BGPv4, BGPv4\+, BGPv4\- routing engine for use with Quagga routing
 software
@@ -17,9 +17,6 @@
 .B \-p
 .I bgp-port-number
 ] [
-.B \--bgp_port=
-.I port-number
-] [
 .B \-P
 .I port-number
 ] [
@@ -28,6 +25,9 @@
 ] [
 .B \-u
 .I user
+] [
+.B \-g
+.I group
 ]
 .SH DESCRIPTION
 .B bgpd 
@@ -46,6 +46,9 @@
 Specifies the config file to use for startup. If not specified this
 option will likely default to \fB\fI/usr/local/etc/bgpd.conf\fR.
 .TP
+\fB\-g\fR, \fB\-\-group \fR\fIgroup\fR
+Specify the group to run as. Default is \fIquagga\fR.
+.TP
 \fB\-h\fR, \fB\-\-help\fR
 A brief message.
 .TP
@@ -54,7 +57,7 @@
 \fB\fIpid-file\fR.  The init system uses the recorded PID to stop or
 restart bgpd.  The likely default is \fB\fI/var/run/bgpd.pid\fR.
 .TP
-\fB\-p\fR, \fB\-\-bgp_port=\fR\fIport\fR
+\fB\-p\fR, \fB\-\-bgp_port \fR\fIbgp-port-number\fR
 Set the port that bgpd will listen to for bgp data.  
 .TP
 \fB\-P\fR, \fB\-\-vty_port \fR\fIport-number\fR 
@@ -66,8 +69,7 @@
 intrefaces.
 .TP
 \fB\-u\fR, \fB\-\-user \fR\fIuser\fR
-Specify the user and group to run as. User and group have to have same
-name at the moment. Default is \fIquagga\fR.
+Specify the user to run as. Default is \fIquagga\fR.
 .TP
 \fB\-r\fR, \fB\-\-retain\fR 
 When the program terminates, retain routes added by \fBbgpd\fR.
diff --git a/doc/isisd.8 b/doc/isisd.8
index 9e33f7c..7ae7dba 100644
--- a/doc/isisd.8
+++ b/doc/isisd.8
@@ -1,4 +1,4 @@
-.TH IS-IS 8 "10 August 2004" "Quagga IS-IS daemon" "Version 0.96.5"
+.TH IS-IS 8 "25 November 2004" "Quagga IS-IS daemon" "Version 0.97.3"
 .SH NAME
 isisd \- an IS-IS routing engine for use with Quagga routing software.
 .SH SYNOPSIS
@@ -20,6 +20,9 @@
 ] [
 .B \-u
 .I user
+] [
+.B \-g
+.I group
 ]
 .SH DESCRIPTION
 .B isisd
@@ -38,6 +41,9 @@
 Specifies the config file to use for startup. If not specified this
 option will likely default to \fB\fI/usr/local/etc/isisd.conf\fR.
 .TP
+\fB\-g\fR, \fB\-\-group \fR\fIgroup\fR
+Specify the group to run as. Default is \fIquagga\fR.
+.TP
 \fB\-h\fR, \fB\-\-help\fR
 A brief message.
 .TP
@@ -55,8 +61,7 @@
 intrefaces.
 .TP
 \fB\-u\fR, \fB\-\-user \fR\fIuser\fR
-Specify the user and group to run as. User and group have to have same
-name at the moment. Default is \fIquagga\fR.
+Specify the user to run as. Default is \fIquagga\fR.
 .TP
 \fB\-v\fR, \fB\-\-version\fR
 Print the version and exit.
diff --git a/doc/ospf6d.8 b/doc/ospf6d.8
index 275844b..2266fff 100644
--- a/doc/ospf6d.8
+++ b/doc/ospf6d.8
@@ -1,4 +1,4 @@
-.TH OSPF6D 8 "10 August 2004" "Quagga OSPFv3 daemon" "Version 0.96.5"
+.TH OSPF6D 8 "25 November 2004" "Quagga OSPFv3 daemon" "Version 0.97.3"
 .SH NAME
 ospf6d \- an OSPFv3 routing engine for use with Quagga routing software.
 .SH SYNOPSIS
@@ -20,6 +20,9 @@
 ] [
 .B \-u
 .I user
+] [
+.B \-g
+.I group
 ]
 .SH DESCRIPTION
 .B ospf6d
@@ -39,6 +42,9 @@
 Specifies the config file to use for startup. If not specified this
 option will likely default to \fB\fI/usr/local/etc/ospf6d.conf\fR.
 .TP
+\fB\-g\fR, \fB\-\-group \fR\fIgroup\fR
+Specify the group to run as. Default is \fIquagga\fR.
+.TP
 \fB\-h\fR, \fB\-\-help\fR
 A brief message.
 .TP
@@ -56,8 +62,7 @@
 intrefaces.
 .TP
 \fB\-u\fR, \fB\-\-user \fR\fIuser\fR
-Specify the user and group to run as. User and group have to have same
-name at the moment. Default is \fIquagga\fR.
+Specify the user to run as. Default is \fIquagga\fR.
 .TP
 \fB\-v\fR, \fB\-\-version\fR
 Print the version and exit.
diff --git a/doc/ospfd.8 b/doc/ospfd.8
index af5a83a..c6c1857 100644
--- a/doc/ospfd.8
+++ b/doc/ospfd.8
@@ -1,4 +1,4 @@
-.TH OSPFD 8 "10 August 2004" "Quagga OSPFv2 daemon" "Version 0.96.5"
+.TH OSPFD 8 "25 November 2004" "Quagga OSPFv2 daemon" "Version 0.97.3"
 .SH NAME
 ospfd \- an OSPFv2 routing engine for use with Quagga routing software.
 .SH SYNOPSIS
@@ -20,6 +20,9 @@
 ] [
 .B \-u
 .I user
+] [
+.B \-g
+.I group
 ]
 .SH DESCRIPTION
 .B ospfd
@@ -38,6 +41,9 @@
 Specifies the config file to use for startup. If not specified this
 option will likely default to \fB\fI/usr/local/etc/ospfd.conf\fR.
 .TP
+\fB\-g\fR, \fB\-\-group \fR\fIgroup\fR
+Specify the group to run as. Default is \fIquagga\fR.
+.TP
 \fB\-h\fR, \fB\-\-help\fR
 A brief message.
 .TP
@@ -58,8 +64,7 @@
 intrefaces.
 .TP
 \fB\-u\fR, \fB\-\-user \fR\fIuser\fR
-Specify the user and group to run as. User and group have to have same
-name at the moment. Default is \fIquagga\fR.
+Specify the user to run as. Default is \fIquagga\fR.
 .TP
 \fB\-a\fR, \fB\-\-apiserver \fR
 Enable OSPF apiserver. Default is disabled.
diff --git a/doc/ripd.8 b/doc/ripd.8
index 2f38682..5a9f5fa 100644
--- a/doc/ripd.8
+++ b/doc/ripd.8
@@ -1,4 +1,4 @@
-.TH RIPD 8 "10 August 2004" "Quagga RIP daemon" "Version 0.96.5"
+.TH RIPD 8 "25 November 2004" "Quagga RIP daemon" "Version 0.97.3"
 .SH NAME
 ripd \- a RIP routing engine for use with Quagga routing software.
 .SH SYNOPSIS
@@ -20,6 +20,9 @@
 ] [
 .B \-u
 .I user
+] [
+.B \-g
+.I group
 ]
 .SH DESCRIPTION
 .B ripd
@@ -36,7 +39,11 @@
 Runs in daemon mode, forking and exiting from tty.
 .TP
 \fB\-f\fR, \fB\-\-config-file \fR\fIconfig-file\fR
-Specifies the config file to use for startup. If not specified this option will likely default to \fB\fI/usr/local/etc/ripd.conf\fR.
+Specifies the config file to use for startup. If not specified this
+option will likely default to \fB\fI/usr/local/etc/ripd.conf\fR.
+.TP
+\fB\-g\fR, \fB\-\-group \fR\fIgroup\fR
+Specify the group to run as. Default is \fIquagga\fR.
 .TP
 \fB\-h\fR, \fB\-\-help\fR
 A brief message.
@@ -55,8 +62,7 @@
 intrefaces.
 .TP
 \fB\-u\fR, \fB\-\-user \fR\fIuser\fR
-Specify the user and group to run as. User and group have to have same
-name at the moment. Default is \fIquagga\fR.
+Specify the user to run as. Default is \fIquagga\fR.
 .TP
 \fB\-r\fR, \fB\-\-retain\fR 
 When the program terminates, retain routes added by \fBripd\fR.
diff --git a/doc/ripngd.8 b/doc/ripngd.8
index 1dee0bb..c45fc30 100644
--- a/doc/ripngd.8
+++ b/doc/ripngd.8
@@ -1,4 +1,4 @@
-.TH RIPNGD 8 "10 August 2004" "Quagga RIPNG daemon" "Version 0.96.5"
+.TH RIPNGD 8 "25 November 2004" "Quagga RIPNG daemon" "Version 0.97.3"
 .SH NAME
 ripngd \- a RIPNG routing engine for use with Quagga routing software.
 .SH SYNOPSIS
@@ -20,6 +20,9 @@
 ] [
 .B \-u
 .I user
+] [
+.B \-g
+.I group
 ]
 .SH DESCRIPTION
 .B ripngd
@@ -39,6 +42,9 @@
 Specifies the config file to use for startup. If not specified this
 option will likely default to \fB\fI/usr/local/etc/ripngd.conf\fR.
 .TP
+\fB\-g\fR, \fB\-\-group \fR\fIgroup\fR
+Specify the group to run as. Default is \fIquagga\fR.
+.TP
 \fB\-h\fR, \fB\-\-help\fR
 A brief message.
 .TP
@@ -59,8 +65,7 @@
 intrefaces.
 .TP
 \fB\-u\fR, \fB\-\-user \fR\fIuser\fR
-Specify the user and group to run as. User and group have to have same
-name at the moment. Default is \fIquagga\fR.
+Specify the user to run as. Default is \fIquagga\fR.
 .TP
 \fB\-r\fR, \fB\-\-retain\fR 
 When the program terminates, retain routes added by \fBripd\fR.
diff --git a/doc/zebra.8 b/doc/zebra.8
index 25cbb36..a3f4b1a 100644
--- a/doc/zebra.8
+++ b/doc/zebra.8
@@ -1,4 +1,4 @@
-.TH ZEBRA 8 "10 August 2004" "Zebra daemon" "Version 0.96.5"
+.TH ZEBRA 8 "25 November 2004" "Zebra daemon" "Version 0.97.3"
 .SH NAME
 zebra \- a routing manager for use with associated Quagga components.
 .SH SYNOPSIS
@@ -20,6 +20,9 @@
 ] [
 .B \-u
 .I user
+] [
+.B \-g
+.I group
 ]
 .SH DESCRIPTION
 .B zebra 
@@ -40,7 +43,11 @@
 Runs in daemon mode, forking and exiting from tty.
 .TP
 \fB\-f\fR, \fB\-\-config-file \fR\fIconfig-file\fR
-Specifies the config file to use for startup. If not specified this option will likely default to \fB\fI/usr/local/etc/zebra.conf\fR.
+Specifies the config file to use for startup. If not specified this
+option will likely default to \fB\fI/usr/local/etc/zebra.conf\fR.
+.TP
+\fB\-g\fR, \fB\-\-group \fR\fIgroup\fR
+Specify the group to run as. Default is \fIquagga\fR.
 .TP
 \fB\-h\fR, \fB\-\-help\fR
 A brief message.
@@ -65,8 +72,7 @@
 intrefaces.
 .TP
 \fB\-u\fR, \fB\-\-user \fR\fIuser\fR
-Specify the user and group to run as. User and group have to have same
-name at the moment. Default is \fIquagga\fR.
+Specify the user to run as. Default is \fIquagga\fR.
 .TP
 \fB\-r\fR, \fB\-\-retain\fR 
 When the program terminates, retain routes added by \fBzebra\fR.
diff --git a/isisd/ChangeLog b/isisd/ChangeLog
index 20be060..9ba86f1 100644
--- a/isisd/ChangeLog
+++ b/isisd/ChangeLog
@@ -1,3 +1,7 @@
+2004-11-25 Hasso Tepper <hasso at quagga.net>
+
+	* isis_main.c: Make group to run as configurable.
+
 2004-11-24 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
 
 	* dict.c: Include "zassert.h" instead of <assert.h>.
diff --git a/isisd/isis_main.c b/isisd/isis_main.c
index 58fe977..1bf93f2 100644
--- a/isisd/isis_main.c
+++ b/isisd/isis_main.c
@@ -79,6 +79,7 @@
   {"vty_addr", required_argument, NULL, 'A'},
   {"vty_port", required_argument, NULL, 'P'},
   {"user", required_argument, NULL, 'u'},
+  {"group", required_argument, NULL, 'g'},
   {"version", no_argument, NULL, 'v'},
   {"help", no_argument, NULL, 'h'},
   {0}
@@ -121,7 +122,8 @@
 -i, --pid_file     Set process identifier file name\n\
 -A, --vty_addr     Set vty's bind address\n\
 -P, --vty_port     Set vty's port number\n\
--u, --user         User and group to run as\n\
+-u, --user         User to run as\n\
+-g, --group        Group to run as\n\
 -v, --version      Print program version\n\
 -h, --help         Display this help and exit\n\
 \n\
@@ -234,7 +236,7 @@
   /* Command line argument treatment. */
   while (1)
     {
-      opt = getopt_long (argc, argv, "df:i:hA:p:P:u:v", longopts, 0);
+      opt = getopt_long (argc, argv, "df:i:hA:p:P:u:g:v", longopts, 0);
 
       if (opt == EOF)
 	break;
@@ -267,8 +269,10 @@
 	  vty_port = (vty_port ? vty_port : ISISD_VTY_PORT);
 	  break;
 	case 'u':
-	  isisd_privs.user = isisd_privs.group = optarg;
+	  isisd_privs.user = optarg;
 	  break;
+	case 'g':
+	  isisd_privs.group = optarg;
 	  break;
 	case 'v':
 	  printf ("ISISd version %s\n", ISISD_VERSION);
diff --git a/ospf6d/ChangeLog b/ospf6d/ChangeLog
index 9c88424..27593b3 100644
--- a/ospf6d/ChangeLog
+++ b/ospf6d/ChangeLog
@@ -1,3 +1,7 @@
+2004-11-25 Hasso Tepper <hasso at quagga.net>
+
+	* ospf6_main.c: Make group to run as configurable.
+
 2004-11-05 Phil Spagnolo <phillip.a.spagnolo@boeing.com>
        * ospf6_flood.c:  When adding a thread to retransmit an lsa after 
     rxmt_interval, the ospf6d used thread_add_event().  However, 
diff --git a/ospf6d/ospf6_main.c b/ospf6d/ospf6_main.c
index 95086f2..4563ece 100644
--- a/ospf6d/ospf6_main.c
+++ b/ospf6d/ospf6_main.c
@@ -74,6 +74,8 @@
   { "pid_file",    required_argument, NULL, 'i'},
   { "vty_addr",    required_argument, NULL, 'A'},
   { "vty_port",    required_argument, NULL, 'P'},
+  { "user",        required_argument, NULL, 'u'},
+  { "group",       required_argument, NULL, 'g'},
   { "version",     no_argument,       NULL, 'v'},
   { "help",        no_argument,       NULL, 'h'},
   { 0 }
@@ -109,6 +111,8 @@
 -i, --pid_file     Set process identifier file name\n\
 -A, --vty_addr     Set vty's bind address\n\
 -P, --vty_port     Set vty's port number\n\
+-u, --user         User to run as\n\
+-g, --group        Group to run as\n\
 -v, --version      Print program version\n\
 -h, --help         Display this help and exit\n\
 \n\
@@ -191,7 +195,7 @@
   /* Command line argument treatment. */
   while (1) 
     {
-      opt = getopt_long (argc, argv, "df:i:hp:A:P:u:v", longopts, 0);
+      opt = getopt_long (argc, argv, "df:i:hp:A:P:u:g:v", longopts, 0);
     
       if (opt == EOF)
         break;
@@ -224,8 +228,11 @@
           vty_port = (vty_port ? vty_port : OSPF6_VTY_PORT);
           break;
         case 'u':
-          ospf6d_privs.user = ospf6d_privs.group = optarg;
+          ospf6d_privs.user = optarg;
           break;
+	case 'g':
+	  ospf6d_privs.group = optarg;
+	  break;
         case 'v':
           print_version (progname);
           exit (0);
diff --git a/ospfd/ChangeLog b/ospfd/ChangeLog
index 11fb3b6..40e5491 100644
--- a/ospfd/ChangeLog
+++ b/ospfd/ChangeLog
@@ -1,3 +1,7 @@
+2004-11-25 Hasso Tepper <hasso at quagga.net>
+
+	* ospf_main.c: Make group to run as configurable.
+
 2004-11-15  Greg Troxel  <gdt@fnord.ir.bbn.com>
 
 	* ospf_packet.c (ospf_recv_packet): Assume CMSG_SPACE is present
diff --git a/ospfd/ospf_main.c b/ospfd/ospf_main.c
index 67912d6..f560547 100644
--- a/ospfd/ospf_main.c
+++ b/ospfd/ospf_main.c
@@ -87,6 +87,7 @@
   { "vty_addr",    required_argument, NULL, 'A'},
   { "vty_port",    required_argument, NULL, 'P'},
   { "user",        required_argument, NULL, 'u'},
+  { "group",       required_argument, NULL, 'g'},
   { "apiserver",   no_argument,       NULL, 'a'},
   { "version",     no_argument,       NULL, 'v'},
   { 0 }
@@ -119,7 +120,8 @@
 -i, --pid_file     Set process identifier file name\n\
 -A, --vty_addr     Set vty's bind address\n\
 -P, --vty_port     Set vty's port number\n\
--u, --user         User and group to run as\n\
+-u, --user         User to run as\n\
+-g, --group        Group to run as\n\
 -a. --apiserver    Enable OSPF apiserver\n\
 -v, --version      Print program version\n\
 -h, --help         Display this help and exit\n\
@@ -215,7 +217,7 @@
     {
       int opt;
 
-      opt = getopt_long (argc, argv, "dlf:i:hA:P:u:av", longopts, 0);
+      opt = getopt_long (argc, argv, "dlf:i:hA:P:u:g:av", longopts, 0);
     
       if (opt == EOF)
 	break;
@@ -248,7 +250,10 @@
           vty_port = (vty_port ? vty_port : OSPF_VTY_PORT);
   	  break;
 	case 'u':
-	  ospfd_privs.group = ospfd_privs.user = optarg;
+	  ospfd_privs.user = optarg;
+	  break;
+	case 'g':
+	  ospfd_privs.group = optarg;
 	  break;
 #ifdef SUPPORT_OSPF_API
 	case 'a':
diff --git a/ripd/ChangeLog b/ripd/ChangeLog
index 8618cb6..3ca7d18 100644
--- a/ripd/ChangeLog
+++ b/ripd/ChangeLog
@@ -1,3 +1,7 @@
+2004-11-25 Hasso Tepper <hasso at quagga.net>
+
+	* rip_main.c: Make group to run as configurable.
+
 2004-10-22 Paul Jakma <paul@dishone.st>
 
 	* ripd.c: Collapse redundant passing of various address structs,
diff --git a/ripd/rip_main.c b/ripd/rip_main.c
index bc25159..d545a8e 100644
--- a/ripd/rip_main.c
+++ b/ripd/rip_main.c
@@ -46,6 +46,7 @@
   { "vty_port",    required_argument, NULL, 'P'},
   { "retain",      no_argument,       NULL, 'r'},
   { "user",        required_argument, NULL, 'u'},
+  { "group",       required_argument, NULL, 'g'},
   { "version",     no_argument,       NULL, 'v'},
   { 0 }
 };
@@ -110,7 +111,8 @@
 -A, --vty_addr     Set vty's bind address\n\
 -P, --vty_port     Set vty's port number\n\
 -r, --retain       When program terminates, retain added route by ripd.\n\
--u, --user         User and group to run as\n\
+-u, --user         User to run as\n\
+-g, --group        Group to run as\n\
 -v, --version      Print program version\n\
 -h, --help         Display this help and exit\n\
 \n\
@@ -201,7 +203,7 @@
     {
       int opt;
 
-      opt = getopt_long (argc, argv, "df:i:hA:P:u:rv", longopts, 0);
+      opt = getopt_long (argc, argv, "df:i:hA:P:u:g:rv", longopts, 0);
     
       if (opt == EOF)
 	break;
@@ -236,9 +238,12 @@
 	case 'r':
 	  retain_mode = 1;
 	  break;
-    case 'u':
-        ripd_privs.group = ripd_privs.user = optarg;
-        break;
+	case 'u':
+	  ripd_privs.user = optarg;
+	  break;
+	case 'g':
+	  ripd_privs.group = optarg;
+	  break;
 	case 'v':
 	  print_version (progname);
 	  exit (0);
diff --git a/ripngd/ChangeLog b/ripngd/ChangeLog
index 78dc1d3..1abea56 100644
--- a/ripngd/ChangeLog
+++ b/ripngd/ChangeLog
@@ -1,3 +1,7 @@
+2004-11-25 Hasso Tepper <hasso at quagga.net>
+
+	* ripng_main.c: Make group to run as configurable.
+
 2004-10-26 Hasso Tepper <hasso at quagga.net>
 
 	* ripng_debug.c: Fix help of "show debugging ripng" command.
diff --git a/ripngd/ripng_main.c b/ripngd/ripng_main.c
index 40d2b14..df609a5 100644
--- a/ripngd/ripng_main.c
+++ b/ripngd/ripng_main.c
@@ -53,6 +53,7 @@
   { "vty_port",    required_argument, NULL, 'P'},
   { "retain",      no_argument,       NULL, 'r'},
   { "user",        required_argument, NULL, 'u'},
+  { "group",       required_argument, NULL, 'g'},
   { "version",     no_argument,       NULL, 'v'},
   { 0 }
 };
@@ -115,7 +116,8 @@
 -A, --vty_addr     Set vty's bind address\n\
 -P, --vty_port     Set vty's port number\n\
 -r, --retain       When program terminates, retain added route by ripngd.\n\
--u, --user         User and group to run as\n\
+-u, --user         User to run as\n\
+-g, --group        Group to run as\n\
 -v, --version      Print program version\n\
 -h, --help         Display this help and exit\n\
 \n\
@@ -203,7 +205,7 @@
     {
       int opt;
 
-      opt = getopt_long (argc, argv, "dlf:i:hA:P:u:v", longopts, 0);
+      opt = getopt_long (argc, argv, "dlf:i:hA:P:u:g:v", longopts, 0);
     
       if (opt == EOF)
 	break;
@@ -241,9 +243,12 @@
 	case 'r':
 	  retain_mode = 1;
 	  break;
-  case 'u':
-    ripngd_privs.group = ripngd_privs.user = optarg;
-    break;
+	case 'u':
+	  ripngd_privs.user = optarg;
+	  break;
+	case 'g':
+	  ripngd_privs.group = optarg;
+	  break;
 	case 'v':
 	  print_version (progname);
 	  exit (0);
diff --git a/zebra/ChangeLog b/zebra/ChangeLog
index c4e32b8..7193231 100644
--- a/zebra/ChangeLog
+++ b/zebra/ChangeLog
@@ -2,6 +2,7 @@
 
 	* irdp_interface.c: Remove comment from DEFUN, it breaks vtysh because
 	  it confuses extract.pl.
+	* main.c: Make group to run as configurable.
 
 2004-10-28 Hasso Tepper <hasso at quagga.net>
 
diff --git a/zebra/main.c b/zebra/main.c
index 72e2c58..42e6bd1 100644
--- a/zebra/main.c
+++ b/zebra/main.c
@@ -79,6 +79,7 @@
   { "nl-bufsize",  no_argument,       NULL, 's'},
 #endif /* HAVE_NETLINK */
   { "user",        required_argument, NULL, 'u'},
+  { "group",       required_argument, NULL, 'g'},
   { "version",     no_argument,       NULL, 'v'},
   { 0 }
 };
@@ -133,7 +134,8 @@
 	      "-P, --vty_port     Set vty's port number\n"\
 	      "-r, --retain       When program terminates, retain added route "\
 				  "by zebra.\n"\
-	      "-u, --user         User and group to run as\n", progname);
+	      "-u, --user         User to run as\n"\
+	      "-g, --group	  Group to run as\n", progname);
 #ifdef HAVE_NETLINK
       printf ("-s, --nl-bufsize   Set netlink receive buffer size\n");
 #endif /* HAVE_NETLINK */
@@ -230,9 +232,9 @@
       int opt;
   
 #ifdef HAVE_NETLINK  
-      opt = getopt_long (argc, argv, "bdklf:i:hA:P:ru:vs:", longopts, 0);
+      opt = getopt_long (argc, argv, "bdklf:i:hA:P:ru:g:vs:", longopts, 0);
 #else
-      opt = getopt_long (argc, argv, "bdklf:i:hA:P:ru:v", longopts, 0);
+      opt = getopt_long (argc, argv, "bdklf:i:hA:P:ru:g:v", longopts, 0);
 #endif /* HAVE_NETLINK */
 
       if (opt == EOF)
@@ -281,9 +283,12 @@
 	  nl_rcvbufsize = atoi (optarg);
 	  break;
 #endif /* HAVE_NETLINK */
-  case 'u':
-    zserv_privs.user = zserv_privs.group = optarg;
-    break;
+	case 'u':
+	  zserv_privs.user = optarg;
+	  break;
+	case 'g':
+	  zserv_privs.group = optarg;
+	  break;
 	case 'v':
 	  print_version (progname);
 	  exit (0);