Put client on a stony ground. The whole client is going to be system-specific
(the current version UNIX-specific) anyway, so it's useless to try splitting it to sysdep and generic part. Instead of this, configure script decides (based on system type and user's wish) what (if any) client should be built and what autoconfiguration it requires. Also, the client provides its own die/bug/... functions.
This commit is contained in:
parent
f50b9e48b9
commit
9fac310d1a
9 changed files with 115 additions and 82 deletions
|
@ -1,4 +1,4 @@
|
|||
source=client.c
|
||||
source=client.c commands.c util.c
|
||||
root-rel=../
|
||||
dir-name=client
|
||||
|
||||
|
|
|
@ -6,21 +6,48 @@
|
|||
* Can be freely distributed and used under the terms of the GNU GPL.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#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!");
|
||||
}
|
||||
|
|
|
@ -1,11 +1,7 @@
|
|||
/*
|
||||
* BIRD Client
|
||||
*
|
||||
* (c) 1999 Martin Mares <mj@ucw.cz>
|
||||
* (c) 1999--2000 Martin Mares <mj@ucw.cz>
|
||||
*
|
||||
* Can be freely distributed and used under the terms of the GNU GPL.
|
||||
*/
|
||||
|
||||
/* sysdep code */
|
||||
|
||||
int client_main(int argc, char **argv);
|
||||
|
|
20
client/commands.c
Normal file
20
client/commands.c
Normal file
|
@ -0,0 +1,20 @@
|
|||
/*
|
||||
* BIRD Client -- Command Handling
|
||||
*
|
||||
* (c) 1999--2000 Martin Mares <mj@ucw.cz>
|
||||
*
|
||||
* 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"
|
||||
};
|
40
client/util.c
Normal file
40
client/util.c
Normal file
|
@ -0,0 +1,40 @@
|
|||
/*
|
||||
* BIRD Client -- Utility Functions
|
||||
*
|
||||
* (c) 1999--2000 Martin Mares <mj@ucw.cz>
|
||||
*
|
||||
* Can be freely distributed and used under the terms of the GNU GPL.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdarg.h>
|
||||
|
||||
#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);
|
||||
}
|
11
configure.in
11
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 <mj@ucw.cz>
|
||||
dnl ** (c) 1999--2000 Martin Mares <mj@ucw.cz>
|
||||
|
||||
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
|
||||
|
|
|
@ -19,5 +19,3 @@ krt-iface.h
|
|||
krt-set.c
|
||||
krt-set.h
|
||||
#endif
|
||||
|
||||
client-main.c
|
||||
|
|
|
@ -1,61 +0,0 @@
|
|||
/*
|
||||
* BIRD Client -- Unix Entry Point
|
||||
*
|
||||
* (c) 1999 Martin Mares <mj@ucw.cz>
|
||||
*
|
||||
* Can be freely distributed and used under the terms of the GNU GPL.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#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!");
|
||||
}
|
|
@ -1,13 +1,17 @@
|
|||
# Makefile for the BIRD Internet Routing Daemon
|
||||
# (c) 1999 Martin Mares <mj@ucw.cz>
|
||||
# (c) 1999--2000 Martin Mares <mj@ucw.cz>
|
||||
|
||||
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
|
||||
|
|
Loading…
Reference in a new issue