[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH for-4.5 3/4] tools/misc: Delete more obsolete utilities



On Wed, Oct 15, 2014 at 06:33:56PM +0100, Andrew Cooper wrote:
> * nsplitd has been orphaned from the build since its introduction in c/s
>   dc44ed4764 (in 2004), and never been developed since.  While it does appear
>   to compile, it is full of pointer width mismatch, pointer sign mismatch, and
>   uninitialised variable warnings, which makes it unlikely to function
>   correctly when compiled for a 64bit environment.
> 
> * xen-python-path was declared obsolete in c/s 11e1149fe (in 2009) and can't
>   actually be used correctly by out-of-tree components.  5 years is long 
> enough
>   for out-of-tree callers to catch up.
> 
> There are no subdirectories any more, so drop the notion from the Makefile.

Release-Acked-by: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>

> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
> CC: Ian Campbell <Ian.Campbell@xxxxxxxxxx>
> CC: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx>
> CC: Wei Liu <wei.liu2@xxxxxxxxxx>
> CC: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
> ---
>  tools/misc/Makefile          |    7 +-
>  tools/misc/nsplitd/Makefile  |   25 --
>  tools/misc/nsplitd/nsplitd.c |  686 
> ------------------------------------------
>  tools/misc/xen-python-path   |   24 --
>  4 files changed, 1 insertion(+), 741 deletions(-)


I think I know what the release code-name is going to be: SlimDiet!

>  delete mode 100644 tools/misc/nsplitd/Makefile
>  delete mode 100644 tools/misc/nsplitd/nsplitd.c
>  delete mode 100644 tools/misc/xen-python-path
> 
> diff --git a/tools/misc/Makefile b/tools/misc/Makefile
> index 3237461..7a2bfd2 100644
> --- a/tools/misc/Makefile
> +++ b/tools/misc/Makefile
> @@ -16,13 +16,11 @@ TARGETS-$(CONFIG_X86) += xen-detect xen-hvmctx 
> xen-hvmcrash xen-lowmemd xen-mfnd
>  TARGETS-$(CONFIG_MIGRATE) += xen-hptool
>  TARGETS := $(TARGETS-y)
>  
> -SUBDIRS := $(SUBDIRS-y)
> -
>  INSTALL_BIN-y := xencons xencov_split
>  INSTALL_BIN-$(CONFIG_X86) += xen-detect
>  INSTALL_BIN := $(INSTALL_BIN-y)
>  
> -INSTALL_SBIN-y := xen-bugtool xen-python-path xenperf xenpm 
> xen-tmem-list-parse gtraceview \
> +INSTALL_SBIN-y := xen-bugtool xenperf xenpm xen-tmem-list-parse gtraceview \
>       gtracestat xenlockprof xenwatchdogd xen-ringwatch xencov
>  INSTALL_SBIN-$(CONFIG_X86) += xen-hvmctx xen-hvmcrash xen-lowmemd xen-mfndump
>  INSTALL_SBIN-$(CONFIG_MIGRATE) += xen-hptool
> @@ -39,7 +37,6 @@ all: build
>  
>  .PHONY: build
>  build: $(TARGETS)
> -     set -e; for d in $(SUBDIRS); do $(MAKE) -C $$d; done
>  
>  .PHONY: install
>  install: build
> @@ -49,12 +46,10 @@ install: build
>       $(INSTALL_PYTHON_PROG) $(INSTALL_BIN) $(DESTDIR)$(BINDIR)
>       $(INSTALL_PYTHON_PROG) $(INSTALL_SBIN) $(DESTDIR)$(SBINDIR)
>       $(INSTALL_PYTHON_PROG) $(INSTALL_PRIVBIN) $(DESTDIR)$(LIBEXEC_BIN)
> -     set -e; for d in $(SUBDIRS); do $(MAKE) -C $$d install-recurse; done
>  
>  .PHONY: clean
>  clean:
>       $(RM) *.o $(TARGETS) *~ $(DEPS)
> -     set -e; for d in $(SUBDIRS); do $(MAKE) -C $$d clean; done
>  
>  xen-hvmctx: xen-hvmctx.o
>       $(CC) $(LDFLAGS) -o $@ $< $(LDLIBS_libxenctrl) $(APPEND_LDFLAGS)
> diff --git a/tools/misc/nsplitd/Makefile b/tools/misc/nsplitd/Makefile
> deleted file mode 100644
> index 91ccf4d..0000000
> --- a/tools/misc/nsplitd/Makefile
> +++ /dev/null
> @@ -1,25 +0,0 @@
> -XEN_ROOT := $(CURDIR)/../../..
> -include $(XEN_ROOT)/tools/Rules.mk
> -
> -CFILES = $(wildcard *.c)
> -
> -HDRS     = $(wildcard *.h)
> -OBJS     = $(patsubst %.c,%.o,$(wildcard *.c))
> -
> -TARGET   = nsplitd
> -
> -.PHONY: all
> -all: $(TARGET)
> -
> -.PHONY: install
> -install: all
> -
> -.PHONY: clean
> -clean:
> -     $(RM) *.o $(TARGET) *~
> -
> -$(TARGET): $(OBJS)
> -     $(HOSTCC) $(HOSTCFLAGS) -o $@ $^
> -
> -%.o: %.c $(HDRS) Makefile
> -     $(HOSTCC) $(HOSTCFLAGS) -c -o $@ $<
> diff --git a/tools/misc/nsplitd/nsplitd.c b/tools/misc/nsplitd/nsplitd.c
> deleted file mode 100644
> index 32f0b56..0000000
> --- a/tools/misc/nsplitd/nsplitd.c
> +++ /dev/null
> @@ -1,686 +0,0 @@
> -/*
> - *   nsplitd.c
> - *   ---------
> - *
> - * $Id: nsplitd.c,v 2.6 1998/09/17 14:28:37 sde1000 Exp $
> - *
> - * Copyright (c) 1995, University of Cambridge Computer Laboratory,
> - * Copyright (c) 1995, Richard Black, All Rights Reserved.
> - *
> - *
> - * A complete re-implementation of DME's nsplitd for use from inetd
> - *
> - */
> -
> -/* The basic stream comes in (via inetd) and we then conenct to
> - * somewhere else providing a loop-through service, except we offer
> - * two other ports for connection - one of which gets a second channel
> - * using the top bit to distinguish, and the other is a master control
> - * port (normally used for gdb) which gets complete exclusive access
> - * for its duration.
> - *
> - * Originally designed for multiplexing a xwcons/telnet with a gdb
> - * post-mortem debugging session.
> - *
> - * Here is a picture:
> - *
> - *                                       port0 (from inetd)
> - *      8-bit connection                        /
> - *      made by us      <----> nsplitd <-----gdbport (default port0+2)
> - *   to host:port/tcp                  |\
> - *                                     | port1 (default port0+1)
> - *                                         \
> - *                                          control (default port0+3)
> - *
> - * If port1 is explicitly disabled (through a command-line option) then
> - * port0 becomes 8-bit clean.
> - */
> -
> -/*
> - * N.B.: We do NOT support 8 bit stdin/stdout usage on a
> - * /dev/... because to do that right involves much messing with ioctl
> - * and TIOC... etc.  If you want to do that sort of thing then the
> - * right way to do it is to chain this onto wconsd (which does know
> - * about and understand all the ioctl and TIOC grief).
> - */
> -
> -#include <sys/types.h>
> -#include <stdarg.h>
> -#include <stdio.h>
> -#include <stdlib.h>
> -#include <assert.h>
> -#include <errno.h>
> -#include <unistd.h>
> -#include <ctype.h>
> -#include <netdb.h>
> -#include <string.h>
> -
> -#include <sys/time.h>
> -#include <sys/signal.h>
> -#include <sys/socket.h>
> -#include <netinet/in.h>
> -#include <netinet/tcp.h>
> -#include <arpa/inet.h>
> -#include <sys/ioctl.h>
> -#include <syslog.h>
> -
> -#ifndef FALSE
> -#define FALSE 0
> -#endif
> -#ifndef TRUE
> -#define TRUE 1
> -#endif
> -
> -#ifndef LOG_DAEMON
> -#define LOG_DAEMON 0
> -#endif
> -
> -#define DB(x)  /* ((x), fflush(stderr)) */
> -
> -extern char *optarg;
> -
> -extern int optind, opterr, optopt;
> -
> -static char *prog_name;
> -
> -static void usage(void)
> -{
> -    fprintf(stderr, "This program (%s) should be run via inetd (tcp)\n\n",
> -         prog_name);
> -    fprintf(stderr, "usage: %s [-h<highport>][-g<gdbport>]"
> -         "[-c<ctlport>][-8] host:service\n",
> -         prog_name);
> -    exit(1);
> -}
> -
> -static void fault(char *format, ...)
> -{
> -    va_list          ap;
> -    char             logbuf[1024];
> -
> -    va_start(ap, format);
> -    fprintf(stderr, "%s: ", prog_name);
> -    vfprintf(stderr, format, ap);
> -    fflush(stderr);
> -    va_end(ap);
> -    
> -    /* XXX This is a bit dubious, but there is no vsyslog */
> -    va_start(ap, format);
> -    vsnprintf(logbuf, sizeof(logbuf), format, ap);
> -    syslog(LOG_ERR, logbuf);
> -    va_end(ap);
> -    exit(1);
> -}
> -
> -static int getservice(char *name, unsigned short *port)
> -{
> -    struct servent           *se;
> -
> -    if (!name) return -1;
> -
> -    if (isdigit(name[0]))
> -     *port = atoi(name);
> -    else
> -    {
> -     if (!(se = getservbyname(name, "tcp")))
> -         return -1;
> -     *port = ntohs(se->s_port);
> -    }
> -    return 0;
> -}
> -
> -/* 
> - *  connect_host: connect to ("name", "port")
> - */
> -static int connect_host (char *name, unsigned int port)
> -{
> -    int                      fd;
> -    struct hostent   *hostent;
> -    struct sockaddr_in       sin;
> -    int                      on;
> -    
> -    if ((fd = socket (AF_INET, SOCK_STREAM, 0)) < 0)
> -     fault("socket");
> -    
> -    if (!(hostent = gethostbyname(name)))
> -     fault("gethostbyname: %s: %s\n", name, strerror(errno));
> -    
> -    memset(&sin, 0, sizeof(sin));
> -    sin.sin_family = AF_INET;
> -    sin.sin_port   = htons (port);
> -    memcpy(&sin.sin_addr.s_addr, hostent->h_addr, sizeof(struct in_addr));
> -    
> -    if (connect(fd, (struct sockaddr *) &sin, sizeof (sin)) < 0)
> -     fault("connect: %s:%u: %s\n", name, port, strerror(errno));
> -    
> -    on = 1;
> -    if (setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &on, sizeof (on)) < 0)
> -     syslog(LOG_WARNING, "setsockopt (TCP_NODELAY): %m");
> -
> -    on = 1;
> -    if (setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, &on, sizeof (on)) < 0)
> -     syslog(LOG_WARNING, "setsockopt (SO_KEEPALIVE): %m");
> -
> -    return fd;
> -}
> -
> -/*
> - * open a tcp socket and start listening for connections on it
> - */
> -static int startlistening(unsigned short port)
> -{
> -    int                      fd, on;
> -    struct sockaddr_in       sin;
> -
> -    if ((fd = socket (AF_INET, SOCK_STREAM, 0)) < 0)
> -     fault("socket");
> -    
> -    on = 1;
> -    if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof (on)) < 0)
> -      syslog(LOG_WARNING, "setsockopt (SO_REUSEADDR): %m");
> -
> -    memset(&sin, 0, sizeof(sin));
> -    sin.sin_family      = AF_INET;
> -    sin.sin_port        = htons (port);
> -    sin.sin_addr.s_addr = INADDR_ANY;
> -    if (bind(fd, &sin, sizeof(sin)) < 0)
> -     fault("bind: %u: %s\n", port, strerror(errno));
> -    
> -    if (listen(fd, 1) < 0)
> -     fault("listen: %s\n", strerror(errno));
> -    
> -    return fd;
> -}
> -
> -static void noblock(int fd)
> -{
> -    int on=1;
> -    
> -    if (ioctl(fd, FIONBIO, &on) < 0)
> -     fault("ioctl: FIONBIO: %s\n", strerror(errno));
> -}
> -
> -
> -/* You might not believe this, but fd_sets don't have to be a 32-bit
> - * integer.  In particular, in glibc2 it is an array of unsigned
> - * longs.  Hence, this hacked up FD_SET_rjb() that works out if it
> - * would have been a nop. */
> -#define FD_SET_rjb(fd, setp) \
> -do {                                         \
> -    if ((fd) != 32)                          \
> -     FD_SET((fd), (setp));                   \
> -} while(0)
> -
> -#define FD_ISSET_rjb(fd, setp) (((fd) != 32)? FD_ISSET((fd), (setp)) : 0)
> -
> -#define MAXSIZE      256
> -
> -/* -----------------------------------------------------------------
> - * The main bit of the algorithm. Note we use 32 to mean not connected
> - * because this gives us 1<<32 == 0. We could have done this one
> - * character at a time, but that would have been very inefficient and
> - * not the unix way.  */
> -static int debug;
> -
> -static void doit(int actl, int acto, int lish, int lisg, int lisc)
> -{
> -    int              acth, actg, actc;
> -    int              gdbmode = FALSE;
> -    char     gibuf[MAXSIZE], oibuf[MAXSIZE];
> -    char     libuf[MAXSIZE], lobuf[MAXSIZE];
> -    char     hibuf[MAXSIZE], hobuf[MAXSIZE];
> -    char     ctlbuf[MAXSIZE];
> -    fd_set   rdfs, wrfs, exfs;
> -    int              gicc, oicc, licc, locc, hicc, hocc, ctlcc;
> -    char     *giptr, *oiptr, *liptr, *loptr, *hiptr, *hoptr;
> -    int              rc, fromlen;
> -    struct sockaddr_in               from;
> -    
> -    gicc = oicc = licc = locc = hicc = hocc = ctlcc = 0;
> -    acth = actg = actc = 32;                 /* XXX yummy */
> -
> -    noblock(actl);
> -    noblock(acto);
> -
> -    for(;;)
> -    {
> -     FD_ZERO(&rdfs);
> -     FD_ZERO(&wrfs);
> -     FD_ZERO(&exfs);
> -
> -     /* always take input from the control port (if it's connected) */
> -     FD_SET_rjb(actc, &rdfs);
> -
> -     if (gdbmode)
> -     {
> -         if (oicc)
> -             FD_SET_rjb(actg, &wrfs);
> -         else
> -             FD_SET_rjb(acto, &rdfs);
> -         
> -         if (gicc)
> -             FD_SET_rjb(acto, &wrfs);
> -         else
> -             FD_SET_rjb(actg, &rdfs);
> -     }
> -     else
> -     {
> -         /* There is no such thing as oibuf because its been split into
> -          * lobuf and hobuf
> -          */
> -         if (locc || hocc)
> -         {
> -             if (locc)
> -                 FD_SET_rjb(actl, &wrfs);
> -             if (hocc)
> -                 FD_SET_rjb(acth, &wrfs);
> -         }
> -         else
> -             FD_SET_rjb(acto, &rdfs);
> -         
> -         if (licc)
> -             FD_SET_rjb(acto, &wrfs);
> -         else
> -             FD_SET_rjb(actl, &rdfs);
> -         
> -         if (hicc)
> -             FD_SET_rjb(acto, &wrfs);
> -         else
> -             FD_SET_rjb(acth, &rdfs);
> -     }
> -     
> -     if (acth == 32 && lish>=0)      FD_SET_rjb(lish, &rdfs);
> -     if (actg == 32)                 FD_SET_rjb(lisg, &rdfs);
> -     if (actc == 32)                 FD_SET_rjb(lisc, &rdfs);
> -
> -     /* now make exfs the union of the read and write fd sets, plus
> -      * "actl" */
> -     {
> -         int i;
> -         exfs = rdfs;
> -         for(i=0; i<32; i++)  /* XXX we only copy fd numbers up to 31 */
> -             if (FD_ISSET(i, &wrfs))
> -                 FD_SET_rjb(i, &exfs);
> -         FD_SET_rjb(actl, &exfs);
> -     }
> -
> -     /* XXX AND: can't print something of type fd_set as %x - it
> -         * might be an array */
> -     DB(fprintf(stderr, "%s: before select: %08x %08x %08x\n",
> -                prog_name, rdfs, wrfs, exfs));
> -     
> -     if (select(32, &rdfs, &wrfs, &exfs, NULL) < 0)
> -         fault("select: %s\n", strerror(errno));
> -     
> -     DB(fprintf(stderr, "%s: after  select: %08x %08x %08x\n",
> -                prog_name, rdfs, wrfs, exfs));
> -     
> -     /* XXX it appears that a non-blocking socket may not show up
> -      * correctly in exfs but instead goes readable with no data in
> -      * it. Thus we check for zero and goto the appropriate close
> -      * method.  */
> -
> -     /* Deal with exceptions */
> -     if (FD_ISSET_rjb(actg, &exfs))
> -     {
> -     exfs_actg:
> -         close(actg);
> -         gdbmode = FALSE;
> -         oicc = 0;
> -         oiptr = oibuf;
> -         actg = 32;
> -         continue;           /* because assumptions changed */
> -     }
> -     if (FD_ISSET_rjb(acth, &exfs))
> -     {
> -     exfs_acth:
> -         close(acth);
> -         hicc = hocc = 0;
> -         hiptr = hibuf;
> -         hoptr = hibuf;
> -         acth = 32;
> -         continue;           /* because assumptions changed */
> -     }
> -     if (FD_ISSET_rjb(actl, &exfs) ||
> -         FD_ISSET_rjb(acto, &exfs))
> -     {
> -     exfs_actl:
> -     exfs_acto:
> -         /* Thats all folks ... */
> -         break;
> -     }
> -     if (FD_ISSET_rjb(actc, &exfs))
> -     {
> -     exfs_ctl:
> -         close(actc);
> -         actc = 32;
> -         ctlcc = 0;
> -         continue;
> -     }
> -
> -     /* Deal with reading */
> -     if (FD_ISSET_rjb(acto, &rdfs))
> -     {
> -         if ((oicc = read(acto, oiptr = oibuf, MAXSIZE)) < 0)
> -             fault("read acto: %d: %s\n", oicc, strerror(errno));
> -         if (!oicc) goto exfs_acto;
> -         
> -         if (!gdbmode)
> -         {
> -             int t;
> -
> -             assert((locc == 0) && (hocc == 0));
> -             loptr = lobuf;
> -             hoptr = hobuf;
> -             
> -             if (lish>=0) {
> -                 for(t=0; t<oicc; t++)
> -                     if (oibuf[t] & 0x80)
> -                         hobuf[hocc++] = oibuf[t] & 0x7f;
> -                     else
> -                         lobuf[locc++] = oibuf[t];
> -             } else {
> -                 for (t=0; t<oicc; t++)
> -                     lobuf[locc++] = oibuf[t];
> -             }
> -             /* If no high connection scratch that */
> -             if (acth == 32)
> -                 hocc=0;
> -         }
> -     }
> -     if (FD_ISSET_rjb(actl, &rdfs))
> -     {
> -         if ((licc = read(actl, liptr = libuf, MAXSIZE)) < 0)
> -             fault("read actl: %d: %s\n", licc, strerror(errno));
> -         if (!licc) goto exfs_actl;
> -     }
> -     if (FD_ISSET_rjb(acth, &rdfs))
> -     {
> -         int t;
> -         
> -         if ((hicc = read(acth, hiptr = hibuf, MAXSIZE)) < 0)
> -             fault("read acth: %d: %s\n", hicc, strerror(errno));
> -         if (!hicc) goto exfs_acth;
> -         for(t=0; t<hicc; t++)
> -             hibuf[t] |= 0x80;
> -     }
> -     if (FD_ISSET_rjb(actg, &rdfs))
> -     {
> -         if ((gicc = read(actg, giptr = gibuf, MAXSIZE)) < 0)
> -             fault("read actg: %d: %s\n", gicc, strerror(errno));
> -         if (debug) write(1, giptr, gicc);           /* XXX */
> -         if (!gicc) goto exfs_actg;
> -     }
> -     if (FD_ISSET_rjb(actc, &rdfs))
> -     {
> -         if ((ctlcc = read(actc, ctlbuf, MAXSIZE)) < 0)
> -             fault("read actc: %d: %s\n", ctlcc, strerror(errno));
> -         if (debug) write(1, ctlbuf, gicc);
> -         if (!ctlcc) goto exfs_ctl;
> -         if (ctlbuf[0] == 'r') /* reset command */
> -         {
> -             syslog(LOG_INFO, "reset command read, exiting");
> -             if (debug) write(1, "reseting\n", sizeof("reseting\n"));
> -             break;
> -         }
> -     }
> -     
> -     /* Deal with writing */
> -     if (FD_ISSET_rjb(actg, &wrfs))
> -     {
> -         /* We must be in gdb mode so send oi buffer data */
> -         assert(gdbmode);
> -         if (debug) write(2, oiptr, oicc);           /* XXX */
> -         if ((rc = write(actg, oiptr, oicc)) <= 0)
> -             fault("write actg: %d: %s\n", rc, strerror(errno));
> -         oiptr += rc;
> -         oicc  -= rc;
> -     }
> -     if (FD_ISSET_rjb(actl, &wrfs))
> -     {
> -         if ((rc = write(actl, loptr, locc)) <= 0)
> -             fault("write actl: %d: %s\n", rc, strerror(errno));
> -         loptr += rc;
> -         locc  -= rc;
> -     }
> -     if (FD_ISSET_rjb(acth, &wrfs))
> -     {
> -         if ((rc = write(acth, hoptr, hocc)) <= 0)
> -             fault("write acth: %d: %s\n", rc, strerror(errno));
> -         hoptr += rc;
> -         hocc  -= rc;
> -     }
> -     if (FD_ISSET_rjb(acto, &wrfs))
> -     {
> -         /* If in gdb mode send gdb input, otherwise send low data
> -            preferentially */
> -         if (gdbmode)
> -         {
> -             assert(gicc);
> -             if ((rc = write(acto, giptr, gicc)) <= 0)
> -                 fault("write acto: %d: %s\n", rc, strerror(errno));
> -             giptr += rc;
> -             gicc  -= rc;
> -         }
> -         else
> -         {
> -             if (licc)
> -             {
> -                 if ((rc = write(acto, liptr, licc)) <= 0)
> -                     fault("write acto: %d: %s\n", rc, strerror(errno));
> -                 liptr += rc;
> -                 licc  -= rc;
> -             }
> -             else
> -             {
> -                 assert(hicc);
> -                 if ((rc = write(acto, hiptr, hicc)) <= 0)
> -                     fault("write acto: %d: %s\n", rc, strerror(errno));
> -                 hiptr += rc;
> -                 hicc  -= rc;
> -             }
> -         }
> -     }
> -     
> -     /* Deals with new connections */
> -     if ((acth == 32) && lish>=0 && (FD_ISSET_rjb(lish, &rdfs)))
> -     {
> -         fromlen = sizeof(from);
> -         if ((acth = accept(lish, &from, &fromlen)) < 0)
> -         {
> -             syslog(LOG_WARNING, "accept: %m");
> -             acth = 32;
> -         }
> -         else
> -         {
> -             noblock(acth);
> -             hicc = hocc = 0;
> -             syslog(LOG_INFO, "highbit client peer is %s:%u\n",
> -                    inet_ntoa(from.sin_addr), ntohs(from.sin_port));
> -         }
> -     }
> -     
> -     if ((actg == 32) && (FD_ISSET_rjb(lisg, &rdfs)))
> -     {
> -         fromlen = sizeof(from);
> -         if ((actg = accept(lisg, &from, &fromlen)) < 0)
> -         {
> -             syslog(LOG_WARNING, "accept: %m");
> -             actg = 32;
> -         }
> -         else
> -         {
> -             noblock(actg);
> -             gicc = 0;
> -             gdbmode = TRUE;
> -             syslog(LOG_INFO, "gdb client peer is %s:%u\n",
> -                    inet_ntoa(from.sin_addr), ntohs(from.sin_port));
> -         }
> -     }
> -
> -     if ((actc == 32) && (FD_ISSET_rjb(lisc, &rdfs)))
> -     {
> -         fromlen = sizeof(from);
> -         if ((actc = accept(lisc, &from, &fromlen)) < 0)
> -         {
> -             syslog(LOG_WARNING, "accept (ctl): %m");
> -             actc = 32;
> -         }
> -         else
> -         {
> -             noblock(actc);
> -             syslog(LOG_INFO, "ctl client peer is %s:%u\n",
> -                    inet_ntoa(from.sin_addr), ntohs(from.sin_port));
> -         }
> -     }
> -         
> -     /* Back to top of loop */
> -    }
> -    
> -    /* We are bailing because one of the primary connections has gone
> -     * away. We close these all explicitly here because that way the
> -     * timeout on reusing the port numbers is smnaller. */
> -    
> -    close(acth);
> -    close(actg);
> -    /* XXX AND: why are we closing all these "character counts" ?? */
> -    close(gicc);
> -    close(oicc);
> -    close(licc);
> -    close(locc);
> -    close(hicc);
> -    close(hocc);
> -}
> -
> -/*
> - * ------------------------------------------------------------
> - */
> -int main(int argc, char **argv)
> -{
> -    /* In general, suffix "l" is low channel, "h" is high channel, "g"
> -     * is gdb channel, "c" is control channel and "o" is output channel.
> -     */
> -    struct sockaddr_in               from;
> -    int                              infd = 0, outfd;
> -    unsigned short           portl, porth, portg, portc, porto;
> -    int                              on = 1, c;
> -    char                     *outname, *outservice;
> -    int                              fromlen;
> -    int                              lish, lisg, lisc;
> -#if 0
> -    FILE                     *newerr;
> -#endif /* 0 */
> -    
> -    prog_name = argv[0];
> -
> -    if (isatty(infd))
> -     usage();
> -
> -    /* Here, then not just a simple idiot. */
> -
> -    signal(SIGPIPE, SIG_IGN);
> -
> -    openlog(prog_name, LOG_PID, LOG_DAEMON);
> -
> -    fromlen = sizeof(from);
> -    if (getsockname(infd, &from, &fromlen) < 0)
> -     fault("getsockname: %s", strerror(errno));
> -    if ((fromlen != sizeof(from)) || (from.sin_family != AF_INET))
> -     fault("not an inet socket (family=%d)\n", from.sin_family);
> -    
> -    portl = ntohs(from.sin_port);
> -    porth = portl+1;
> -    portg = porth+1;
> -    portc = portg+1;
> -
> -    fromlen = sizeof(from);
> -    if (getpeername(infd, &from, &fromlen) < 0)
> -     fault("getpeername: %s", strerror(errno));
> -    if ((fromlen != sizeof(from)) || (from.sin_family != AF_INET))
> -     fault("not an inet socket (family=%d)\n", from.sin_family);
> -
> -    syslog(LOG_INFO, "on port %u peer is %s:%u\n", portl,
> -        inet_ntoa(from.sin_addr), ntohs(from.sin_port));
> -    
> -    if (setsockopt(infd, SOL_SOCKET, SO_KEEPALIVE, &on, sizeof (on)) < 0)
> -     syslog(LOG_WARNING, "setsockopt (SO_KEEPALIVE): %m");
> -
> -    /* from here on, we map stderr to output on the connection so we can
> -     * report errors to the remote user.
> -     */
> -#if 0
> -    if (!(newerr = fdopen(infd, "w")))
> -     syslog(LOG_WARNING, "fdopen: %m");
> -    else
> -     *stderr = *newerr;
> -#endif
> -     
> -    while((c = getopt(argc, argv, "d8h:g:c:")) != EOF)
> -    {
> -     switch(c)
> -     {
> -     case 'd':
> -         debug++;
> -         break;
> -         
> -     case 'h':
> -         /* high bit port */
> -         if (getservice(optarg, &porth) < 0)
> -             fault("getservice failed (high port '%s')\n", optarg);
> -         break;
> -         
> -     case 'g':
> -         /* gdb port */
> -         if (getservice(optarg, &portg) < 0)
> -             fault("getservice failed (gdb port '%s')\n", optarg);
> -         break;
> -
> -     case 'c':
> -         /* control port */
> -         if (getservice(optarg, &portc) < 0)
> -             fault("getservice failed (control port '%s')\n", optarg);
> -         break;
> -
> -     case '8':
> -         /* 8-bit clean; no high port */
> -         porth=0;
> -         break;
> -
> -     default:
> -         fault("bad argument list!\n");
> -     }
> -    }
> -    
> -    if (argc != optind + 1)
> -     fault("unparsed arguments (%d!=%d)\n", argc, optind+1);
> -
> -    outname = argv[optind];
> -    if (!(outservice = strchr(outname, ':')))
> -     fault("output arg '%s' doesn't contain ':'\n", outname);
> -    *outservice++ = 0;
> -    if (getservice(outservice, &porto) < 0)
> -     fault("getservice failed (output port '%s')\n", outservice);
> -    
> -    /* Time to start the sockets */
> -
> -    if (porth) {
> -     lish  = startlistening(porth);
> -    } else {
> -     lish  = -1;
> -    }
> -    lisg  = startlistening(portg);
> -    lisc  = startlistening(portc);
> -    
> -    outfd = connect_host(outname, porto);
> -    
> -    doit(infd, outfd, lish, lisg, lisc);
> -
> -    syslog(LOG_INFO, "terminating normally\n");
> -
> -    fclose(stderr);
> -
> -    closelog();
> -    exit(0); 
> -}
> -
> -/* End $Id: nsplitd.c,v 2.6 1998/09/17 14:28:37 sde1000 Exp $ */
> diff --git a/tools/misc/xen-python-path b/tools/misc/xen-python-path
> deleted file mode 100644
> index 073abae..0000000
> --- a/tools/misc/xen-python-path
> +++ /dev/null
> @@ -1,24 +0,0 @@
> -#!/usr/bin/env python
> -#  -*- mode: python; -*-
> -#============================================================================
> -# This library is free software; you can redistribute it and/or
> -# modify it under the terms of version 2.1 of the GNU Lesser General Public
> -# License as published by the Free Software Foundation.
> -#
> -# This library is distributed in the hope that it will be useful,
> -# but WITHOUT ANY WARRANTY; without even the implied warranty of
> -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> -# Lesser General Public License for more details.
> -#
> -# You should have received a copy of the GNU Lesser General Public
> -# License along with this library; if not, write to the Free Software
> -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
> -#============================================================================
> -# Copyright (C) 2007 XenSource Inc.
> -#============================================================================
> -
> -# Nowadays we install xen in the standard python site-packages
> -# directories.  This script is still provided for the benefit of old
> -# out-of-xen-tree callers.  It is deprecated and will be removed.
> -
> -print '/dev/enoent/xen/python-path'
> -- 
> 1.7.10.4
> 

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.