Commit 9fac310d authored by Martin Mareš's avatar Martin Mareš

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.
parent f50b9e48
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!");
}
/*
* 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);
/*
* 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"
};
/*
* 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);
}
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
/*
* 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!");
}
# 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
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment