diff --git a/client/Makefile b/client/Makefile index 0d01724f..867476cc 100644 --- a/client/Makefile +++ b/client/Makefile @@ -1,4 +1,4 @@ -source=client.c +source=client.c commands.c util.c root-rel=../ dir-name=client diff --git a/client/client.c b/client/client.c index 2a43a8de..e9bc827d 100644 --- a/client/client.c +++ b/client/client.c @@ -6,21 +6,48 @@ * Can be freely distributed and used under the terms of the GNU GPL. */ +#include +#include +#include +#include + #include "nest/bird.h" +#include "lib/resource.h" #include "client/client.h" -struct cmd_info { - char *command; - char *args; - char *help; -}; +static char *opt_list = ""; -static struct cmd_info command_table[] = { -#include "conf/commands.h" -}; +static void +usage(void) +{ + fprintf(stderr, "Usage: birdc\n"); + exit(1); +} + +static void +parse_args(int argc, char **argv) +{ + int c; + + while ((c = getopt(argc, argv, opt_list)) >= 0) + switch (c) + { + default: + usage(); + } + if (optind < argc) + usage(); +} int main(int argc, char **argv) { - return client_main(argc, argv); /* Call sysdep code */ +#ifdef HAVE_LIBDMALLOC + if (!getenv("DMALLOC_OPTIONS")) + dmalloc_debug(0x2f03d00); +#endif + + parse_args(argc, argv); + + bug("Not implemented yet!"); } diff --git a/client/client.h b/client/client.h index b5d6ab16..2e1e050f 100644 --- a/client/client.h +++ b/client/client.h @@ -1,11 +1,7 @@ /* * BIRD Client * - * (c) 1999 Martin Mares + * (c) 1999--2000 Martin Mares * * Can be freely distributed and used under the terms of the GNU GPL. */ - -/* sysdep code */ - -int client_main(int argc, char **argv); diff --git a/client/commands.c b/client/commands.c new file mode 100644 index 00000000..ea9358d8 --- /dev/null +++ b/client/commands.c @@ -0,0 +1,20 @@ +/* + * BIRD Client -- Command Handling + * + * (c) 1999--2000 Martin Mares + * + * Can be freely distributed and used under the terms of the GNU GPL. + */ + +#include "nest/bird.h" +#include "client/client.h" + +struct cmd_info { + char *command; + char *args; + char *help; +}; + +struct cmd_info command_table[] = { +#include "conf/commands.h" +}; diff --git a/client/util.c b/client/util.c new file mode 100644 index 00000000..65a1fb20 --- /dev/null +++ b/client/util.c @@ -0,0 +1,40 @@ +/* + * BIRD Client -- Utility Functions + * + * (c) 1999--2000 Martin Mares + * + * Can be freely distributed and used under the terms of the GNU GPL. + */ + +#include +#include +#include +#include + +#include "nest/bird.h" +#include "client/client.h" + +/* Client versions of logging functions */ + +void +bug(char *msg, ...) +{ + va_list args; + + va_start(args, msg); + fputs("Internal error: ", stderr); + vfprintf(stderr, msg, args); + fputc('\n', stderr); + exit(1); +} + +void +die(char *msg, ...) +{ + va_list args; + + va_start(args, msg); + vfprintf(stderr, msg, args); + fputc('\n', stderr); + exit(1); +} diff --git a/configure.in b/configure.in index 5ef82123..1e1fdba7 100644 --- a/configure.in +++ b/configure.in @@ -1,12 +1,13 @@ dnl ** This is a configure script template for BIRD dnl ** Process it with autoconf to get ./configure -dnl ** (c) 1999 Martin Mares +dnl ** (c) 1999--2000 Martin Mares AC_REVISION($Id$) AC_INIT(conf/confbase.Y) AC_CONFIG_AUX_DIR(tools) AC_ARG_ENABLE(debug,[ --enable-debug enable internal debugging routines (default: enabled)],,enable_debug=yes) +AC_ARG_ENABLE(client,[ --enable-client enable building of BIRD client (default: enabled)],,enable_client=yes) AC_ARG_WITH(sysconfig,[ --with-sysconfig=FILE use specified BIRD system configuration file]) AC_ARG_WITH(protocols,[ --with-protocols=LIST include specified routing protocols (default: rip,static,pipe)],,[with_protocols="rip,static,pipe"]) AC_ARG_WITH(sysinclude,[ --with-sysinclude=PATH search for system includes on specified place]) @@ -133,6 +134,13 @@ else AC_DEFINE_UNQUOTED(PATH_CONTROL_SOCKET_DIR, "$localstatedir") fi +if test "$enable_client" = yes ; then + CLIENT=client +else + CLIENT= +fi +AC_SUBST(CLIENT) + mkdir -p $objdir/sysdep AC_CONFIG_HEADER($objdir/sysdep/autoconf.h:sysdep/autoconf.h.in) AC_OUTPUT_COMMANDS(,[CPP="$CPP" $srcdir/tools/mergedirs $srcdir $srcdir_rel $objdir $sysdep_dirs]) @@ -146,5 +154,6 @@ BIRD was configured with the following options: System configuration: $sysdesc Debugging: $enable_debug Routing protocols: $protocols + Client: $enable_client EOF rm -f $objdir/.*-stamp diff --git a/sysdep/unix/Modules b/sysdep/unix/Modules index aca79319..017623e7 100644 --- a/sysdep/unix/Modules +++ b/sysdep/unix/Modules @@ -19,5 +19,3 @@ krt-iface.h krt-set.c krt-set.h #endif - -client-main.c diff --git a/sysdep/unix/client-main.c b/sysdep/unix/client-main.c deleted file mode 100644 index 4fc24338..00000000 --- a/sysdep/unix/client-main.c +++ /dev/null @@ -1,61 +0,0 @@ -/* - * BIRD Client -- Unix Entry Point - * - * (c) 1999 Martin Mares - * - * Can be freely distributed and used under the terms of the GNU GPL. - */ - -#include -#include -#include -#include - -#include "nest/bird.h" -#include "lib/resource.h" /* For dmalloc */ -#include "client/client.h" -#include "nest/cli.h" - -#include "unix.h" - -static char *opt_list = ""; - -static void -usage(void) -{ - fprintf(stderr, "Usage: birdc\n"); - exit(1); -} - -static void -parse_args(int argc, char **argv) -{ - int c; - - while ((c = getopt(argc, argv, opt_list)) >= 0) - switch (c) - { - default: - usage(); - } - if (optind < argc) - usage(); -} - -void -cli_echo(unsigned int class, byte *buf) -{ -} - -int -client_main(int argc, char **argv) -{ -#ifdef HAVE_LIBDMALLOC - if (!getenv("DMALLOC_OPTIONS")) - dmalloc_debug(0x2f03d00); -#endif - - parse_args(argc, argv); - - bug("Not implemented yet!"); -} diff --git a/tools/Makefile.in b/tools/Makefile.in index bbf4db07..56d65140 100644 --- a/tools/Makefile.in +++ b/tools/Makefile.in @@ -1,13 +1,17 @@ # Makefile for the BIRD Internet Routing Daemon -# (c) 1999 Martin Mares +# (c) 1999--2000 Martin Mares include Rules srcdir_abs := $(shell cd $(srcdir) ; pwd) -.PHONY: all subdir depend clean distclean tags +.PHONY: all daemon client subdir depend clean distclean tags -all: .dep-stamp subdir $(exedir)/bird $(exedir)/birdc +all: .dep-stamp subdir daemon @CLIENT@ + +daemon: $(exedir)/bird + +client: $(exedir)/birdc subdir depend: .dir-stamp set -e ; for a in $(dynamic-dirs) ; do $(MAKE) -C $$a $@ ; done