#!/bin/sh # this is vxrouted_5.1.1-shar.08 (part 8 of a multipart archive) # do not concatenate these parts, unpack them in order with /bin/sh # file vxrouted_5.1.1/BSDrouted/trace.c continued # touch -am 1231235999 $$.touch >/dev/null 2>&1 if test ! -f 1231235999 && test -f $$.touch; then shar_touch=touch else shar_touch=: echo 'WARNING: not restoring timestamps' fi rm -f 1231235999 $$.touch # if test ! -r _sharseq.tmp; then echo 'Please unpack part 1 first!' exit 1 fi shar_sequence=`cat _sharseq.tmp` if test "$shar_sequence" != 8; then echo "Please unpack part $shar_sequence next!" exit 1 fi if test ! -f _sharnew.tmp; then echo 'x - still skipping vxrouted_5.1.1/BSDrouted/trace.c' else echo 'x - continuing file vxrouted_5.1.1/BSDrouted/trace.c' sed 's/^X//' << 'SHAR_EOF' >> 'vxrouted_5.1.1/BSDrouted/trace.c' && X fprintf(fd, "size=%d cp=%x packet=%x\n", size, cp, packet, X ctime((time_t *)&stamp->tv_sec)); X fflush(fd); X return; X } X if (tracepackets && tracecontents == 0) { X fflush(fd); X return; X } X switch (msg->rip_cmd) { X X case RIPCMD_REQUEST: X case RIPCMD_RESPONSE: X size -= 4 * sizeof (char); X n = msg->rip_nets; X for (; size > 0; n++, size -= sizeof (struct netinfo)) { X if (size < sizeof (struct netinfo)) { X fprintf(fd, "(truncated record, len %d)\n", X size); X break; X } X if (sizeof(n->rip_dst.sa_family) > 1) X n->rip_dst.sa_family = ntohs(n->rip_dst.sa_family); X X switch ((int)n->rip_dst.sa_family) { X X case AF_INET: X fprintf(fd, "\tdst %s metric %d\n", #define satosin(sa) ((struct sockaddr_in *)&sa) X inet_ntoa(satosin(n->rip_dst)->sin_addr), X ntohl(n->rip_metric)); X break; X X default: X fprintf(fd, "\taf %d? metric %d\n", X n->rip_dst.sa_family, X ntohl(n->rip_metric)); X break; X } X } X break; X X case RIPCMD_TRACEON: X fprintf(fd, "\tfile=%*s\n", size, msg->rip_tracefile); X break; X X case RIPCMD_TRACEOFF: X break; X } X fflush(fd); X if (ferror(fd)) X traceoff(); } SHAR_EOF echo 'File vxrouted_5.1.1/BSDrouted/trace.c is complete' && $shar_touch -am 0218122889 'vxrouted_5.1.1/BSDrouted/trace.c' && chmod 0444 'vxrouted_5.1.1/BSDrouted/trace.c' || echo 'restore of vxrouted_5.1.1/BSDrouted/trace.c failed' shar_count="`wc -c < 'vxrouted_5.1.1/BSDrouted/trace.c'`" test 9714 -eq "$shar_count" || echo "vxrouted_5.1.1/BSDrouted/trace.c: original size 9714, current size $shar_count" rm -f _sharnew.tmp fi # ============= vxrouted_5.1.1/BSDrouted/trace.h ============== if test -f 'vxrouted_5.1.1/BSDrouted/trace.h' && test X"$1" != X"-c"; then echo 'x - skipping vxrouted_5.1.1/BSDrouted/trace.h (File already exists)' rm -f _sharnew.tmp else > _sharnew.tmp echo 'x - extracting vxrouted_5.1.1/BSDrouted/trace.h (Text)' sed 's/^X//' << 'SHAR_EOF' > 'vxrouted_5.1.1/BSDrouted/trace.h' && /* X * Copyright (c) 1983, 1988 Regents of the University of California. X * All rights reserved. X * X * Redistribution and use in source and binary forms are permitted X * provided that the above copyright notice and this paragraph are X * duplicated in all such forms and that any documentation, X * advertising materials, and other materials related to such X * distribution and use acknowledge that the software was developed X * by the University of California, Berkeley. The name of the X * University may not be used to endorse or promote products derived X * from this software without specific prior written permission. X * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR X * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED X * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. X * X * @(#)trace.h 5.7 (Berkeley) 2/20/89 X */ X /* X * Routing table management daemon. X */ X /* X * Trace record format. X */ struct iftrace { X struct timeval ift_stamp; /* time stamp */ X struct sockaddr ift_who; /* from/to */ X char *ift_packet; /* pointer to packet */ X short ift_size; /* size of packet */ X short ift_metric; /* metric on associated metric */ }; X /* X * Per interface packet tracing buffers. An incoming and X * outgoing circular buffer of packets is maintained, per X * interface, for debugging. Buffers are dumped whenever X * an interface is marked down. X */ struct ifdebug { X struct iftrace *ifd_records; /* array of trace records */ X struct iftrace *ifd_front; /* next empty trace record */ X int ifd_count; /* number of unprinted records */ X struct interface *ifd_if; /* for locating stuff */ }; X /* X * Packet tracing stuff. X */ int tracepackets; /* watch packets as they go by */ int tracecontents; /* watch packet contents as they go by */ int traceactions; /* on/off */ int tracehistory; /* on/off */ FILE *ftrace; /* output trace file */ X #define TRACE_ACTION(action, route) { \ X if (traceactions) \ X traceaction(ftrace, action, route); \ X } #define TRACE_NEWMETRIC(route, newmetric) { \ X if (traceactions) \ X tracenewmetric(ftrace, route, newmetric); \ X } #define TRACE_INPUT(ifp, src, pack, size) { \ X if (tracehistory) { \ X ifp = if_iflookup(src); \ X if (ifp) \ X trace(&ifp->int_input, src, pack, size, \ X ntohl(ifp->int_metric)); \ X } \ X if (tracepackets) \ X dumppacket(ftrace, "from", src, pack, size, &now); \ X } #define TRACE_OUTPUT(ifp, dst, size) { \ X if (tracehistory && ifp) \ X trace(&ifp->int_output, dst, packet, size, ifp->int_metric); \ X if (tracepackets) \ X dumppacket(ftrace, "to", dst, packet, size, &now); \ X } SHAR_EOF $shar_touch -am 0220182189 'vxrouted_5.1.1/BSDrouted/trace.h' && chmod 0444 'vxrouted_5.1.1/BSDrouted/trace.h' || echo 'restore of vxrouted_5.1.1/BSDrouted/trace.h failed' shar_count="`wc -c < 'vxrouted_5.1.1/BSDrouted/trace.h'`" test 2608 -eq "$shar_count" || echo "vxrouted_5.1.1/BSDrouted/trace.h: original size 2608, current size $shar_count" rm -f _sharnew.tmp fi # ============= vxrouted_5.1.1/BSDrouted/tables.c ============== if test -f 'vxrouted_5.1.1/BSDrouted/tables.c' && test X"$1" != X"-c"; then echo 'x - skipping vxrouted_5.1.1/BSDrouted/tables.c (File already exists)' rm -f _sharnew.tmp else > _sharnew.tmp echo 'x - extracting vxrouted_5.1.1/BSDrouted/tables.c (Text)' sed 's/^X//' << 'SHAR_EOF' > 'vxrouted_5.1.1/BSDrouted/tables.c' && /* X * Copyright (c) 1983, 1988 Regents of the University of California. X * All rights reserved. X * X * Redistribution and use in source and binary forms are permitted X * provided that the above copyright notice and this paragraph are X * duplicated in all such forms and that any documentation, X * advertising materials, and other materials related to such X * distribution and use acknowledge that the software was developed X * by the University of California, Berkeley. The name of the X * University may not be used to endorse or promote products derived X * from this software without specific prior written permission. X * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR X * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED X * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. X */ X #ifndef lint static char sccsid[] = "@(#)tables.c 5.15 (Berkeley) 2/18/89"; #endif /* not lint */ X /* X * Routing Table Management Daemon X */ #include "defs.h" #include #include #include X #ifndef DEBUG #define DEBUG 0 #endif X int install = !DEBUG; /* if 1 call kernel */ X /* X * Lookup dst in the tables for an exact match. X */ struct rt_entry * rtlookup(dst) X struct sockaddr *dst; { X register struct rt_entry *rt; X register struct rthash *rh; X register u_int hash; X struct afhash h; X int doinghost = 1; X X if (dst->sa_family >= af_max) X return (0); X (*afswitch[dst->sa_family].af_hash)(dst, &h); X hash = h.afh_hosthash; X rh = &hosthash[hash & ROUTEHASHMASK]; again: X for (rt = rh->rt_forw; rt != (struct rt_entry *)rh; rt = rt->rt_forw) { X if (rt->rt_hash != hash) X continue; X if (equal(&rt->rt_dst, dst)) X return (rt); X } X if (doinghost) { X doinghost = 0; X hash = h.afh_nethash; X rh = &nethash[hash & ROUTEHASHMASK]; X goto again; X } X return (0); } X struct sockaddr wildcard; /* zero valued cookie for wildcard searches */ X /* X * Find a route to dst as the kernel would. X */ struct rt_entry * rtfind(dst) X struct sockaddr *dst; { X register struct rt_entry *rt; X register struct rthash *rh; X register u_int hash; X struct afhash h; X int af = dst->sa_family; X int doinghost = 1, (*match)(); X X if (af >= af_max) X return (0); X (*afswitch[af].af_hash)(dst, &h); X hash = h.afh_hosthash; X rh = &hosthash[hash & ROUTEHASHMASK]; X again: X for (rt = rh->rt_forw; rt != (struct rt_entry *)rh; rt = rt->rt_forw) { X if (rt->rt_hash != hash) X continue; X if (doinghost) { X if (equal(&rt->rt_dst, dst)) X return (rt); X } else { X if (rt->rt_dst.sa_family == af && X (*match)(&rt->rt_dst, dst)) X return (rt); X } X } X if (doinghost) { X doinghost = 0; X hash = h.afh_nethash; X rh = &nethash[hash & ROUTEHASHMASK]; X match = afswitch[af].af_netmatch; X goto again; X } #ifdef notyet X /* X * Check for wildcard gateway, by convention network 0. X */ X if (dst != &wildcard) { X dst = &wildcard, hash = 0; X goto again; X } #endif X return (0); } X rtadd(dst, gate, metric, state) X struct sockaddr *dst, *gate; X int metric, state; { X struct afhash h; X register struct rt_entry *rt; X struct rthash *rh; X int af = dst->sa_family, flags; X u_int hash; X X if (af >= af_max) X return; X (*afswitch[af].af_hash)(dst, &h); X flags = (*afswitch[af].af_rtflags)(dst); X /* X * Subnet flag isn't visible to kernel, move to state. XXX X */ X if (flags & RTF_SUBNET) { X state |= RTS_SUBNET; X flags &= ~RTF_SUBNET; X } X if (flags & RTF_HOST) { X hash = h.afh_hosthash; X rh = &hosthash[hash & ROUTEHASHMASK]; X } else { X hash = h.afh_nethash; X rh = &nethash[hash & ROUTEHASHMASK]; X } X rt = (struct rt_entry *)malloc(sizeof (*rt)); X if (rt == 0) X return; X rt->rt_hash = hash; X rt->rt_dst = *dst; X rt->rt_router = *gate; X rt->rt_timer = 0; X rt->rt_flags = RTF_UP | flags; X rt->rt_state = state | RTS_CHANGED; X rt->rt_ifp = if_ifwithdstaddr(&rt->rt_router); X if (rt->rt_ifp == 0) X rt->rt_ifp = if_ifwithnet(&rt->rt_router); X if ((state & RTS_INTERFACE) == 0) X rt->rt_flags |= RTF_GATEWAY; X rt->rt_metric = metric; X insque(rt, rh); X TRACE_ACTION("ADD", rt); X /* X * If the ioctl fails because the gateway is unreachable X * from this host, discard the entry. This should only X * occur because of an incorrect entry in /etc/gateways. X */ X if (install && (rt->rt_state & (RTS_INTERNAL | RTS_EXTERNAL)) == 0 && X ioctl(s, SIOCADDRT, (char *)&rt->rt_rt) < 0) { X if (errno != EEXIST && gate->sa_family < af_max) X syslog(LOG_ERR, X "adding route to net/host %s through gateway %s: %m\n", X (*afswitch[dst->sa_family].af_format)(dst), X (*afswitch[gate->sa_family].af_format)(gate)); X perror("SIOCADDRT"); X if (errno == ENETUNREACH) { X TRACE_ACTION("DELETE", rt); X remque(rt); X free((char *)rt); X } X } } X rtchange(rt, gate, metric) X struct rt_entry *rt; X struct sockaddr *gate; X short metric; { X int add = 0, delete = 0, newgateway = 0; X struct rtentry oldroute; X X if (!equal(&rt->rt_router, gate)) { X newgateway++; X TRACE_ACTION("CHANGE FROM ", rt); X } else if (metric != rt->rt_metric) X TRACE_NEWMETRIC(rt, metric); X if ((rt->rt_state & RTS_INTERNAL) == 0) { X /* X * If changing to different router, we need to add X * new route and delete old one if in the kernel. X * If the router is the same, we need to delete X * the route if has become unreachable, or re-add X * it if it had been unreachable. X */ X if (newgateway) { X add++; X if (rt->rt_metric != HOPCNT_INFINITY) X delete++; X } else if (metric == HOPCNT_INFINITY) X delete++; X else if (rt->rt_metric == HOPCNT_INFINITY) X add++; X } X if (delete) X oldroute = rt->rt_rt; X if ((rt->rt_state & RTS_INTERFACE) && delete) { X rt->rt_state &= ~RTS_INTERFACE; X rt->rt_flags |= RTF_GATEWAY; X if (metric > rt->rt_metric && delete) X syslog(LOG_ERR, "%s route to interface %s (timed out)", X add? "changing" : "deleting", X rt->rt_ifp->int_name); X } X if (add) { X rt->rt_router = *gate; X rt->rt_ifp = if_ifwithdstaddr(&rt->rt_router); X if (rt->rt_ifp == 0) X rt->rt_ifp = if_ifwithnet(&rt->rt_router); X } X rt->rt_metric = metric; X rt->rt_state |= RTS_CHANGED; X if (newgateway) X TRACE_ACTION("CHANGE TO ", rt); X if (add && install) X if (ioctl(s, SIOCADDRT, (char *)&rt->rt_rt) < 0) X perror("SIOCADDRT"); X if (delete && install) X if (ioctl(s, SIOCDELRT, (char *)&oldroute) < 0) X perror("SIOCDELRT"); } X rtdelete(rt) X struct rt_entry *rt; { X X TRACE_ACTION("DELETE", rt); X if (rt->rt_metric < HOPCNT_INFINITY) { X if ((rt->rt_state & (RTS_INTERFACE|RTS_INTERNAL)) == RTS_INTERFACE) X syslog(LOG_ERR, X "deleting route to interface %s? (timed out?)", X rt->rt_ifp->int_name); X if (install && X (rt->rt_state & (RTS_INTERNAL | RTS_EXTERNAL)) == 0 && X ioctl(s, SIOCDELRT, (char *)&rt->rt_rt)) X perror("SIOCDELRT"); X } X remque(rt); X free((char *)rt); } X rtdeleteall(sig) X int sig; { X register struct rthash *rh; X register struct rt_entry *rt; X struct rthash *base = hosthash; X int doinghost = 1; X again: X for (rh = base; rh < &base[ROUTEHASHSIZ]; rh++) { X rt = rh->rt_forw; X for (; rt != (struct rt_entry *)rh; rt = rt->rt_forw) { X if (rt->rt_state & RTS_INTERFACE || X rt->rt_metric >= HOPCNT_INFINITY) X continue; X TRACE_ACTION("DELETE", rt); X if ((rt->rt_state & (RTS_INTERNAL|RTS_EXTERNAL)) == 0 && X ioctl(s, SIOCDELRT, (char *)&rt->rt_rt)) X perror("SIOCDELRT"); X } X } X if (doinghost) { X doinghost = 0; X base = nethash; X goto again; X } X exit(sig); } X /* X * If we have an interface to the wide, wide world, X * add an entry for an Internet default route (wildcard) to the internal X * tables and advertise it. This route is not added to the kernel routes, X * but this entry prevents us from listening to other people's defaults X * and installing them in the kernel here. X */ rtdefault() { X extern struct sockaddr inet_default; X X rtadd(&inet_default, &inet_default, 1, X RTS_CHANGED | RTS_PASSIVE | RTS_INTERNAL); } X rtinit() { X register struct rthash *rh; X X for (rh = nethash; rh < &nethash[ROUTEHASHSIZ]; rh++) X rh->rt_forw = rh->rt_back = (struct rt_entry *)rh; X for (rh = hosthash; rh < &hosthash[ROUTEHASHSIZ]; rh++) X rh->rt_forw = rh->rt_back = (struct rt_entry *)rh; } SHAR_EOF $shar_touch -am 0218122889 'vxrouted_5.1.1/BSDrouted/tables.c' && chmod 0444 'vxrouted_5.1.1/BSDrouted/tables.c' || echo 'restore of vxrouted_5.1.1/BSDrouted/tables.c failed' shar_count="`wc -c < 'vxrouted_5.1.1/BSDrouted/tables.c'`" test 8088 -eq "$shar_count" || echo "vxrouted_5.1.1/BSDrouted/tables.c: original size 8088, current size $shar_count" rm -f _sharnew.tmp fi # ============= vxrouted_5.1.1/BSDrouted/Makefile ============== if test -f 'vxrouted_5.1.1/BSDrouted/Makefile' && test X"$1" != X"-c"; then echo 'x - skipping vxrouted_5.1.1/BSDrouted/Makefile (File already exists)' rm -f _sharnew.tmp else > _sharnew.tmp echo 'x - extracting vxrouted_5.1.1/BSDrouted/Makefile (Text)' sed 's/^X//' << 'SHAR_EOF' > 'vxrouted_5.1.1/BSDrouted/Makefile' && # # Copyright (c) 1987 Regents of the University of California. # All rights reserved. # # Redistribution and use in source and binary forms are permitted # provided that the above copyright notice and this paragraph are # duplicated in all such forms and that any documentation, # advertising materials, and other materials related to such # distribution and use acknowledge that the software was developed # by the University of California, Berkeley. The name of the # University may not be used to endorse or promote products derived # from this software without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. # # @(#)Makefile 5.7 (Berkeley) 7/9/88 # CFLAGS= -O LIBC= /lib/libc.a C2= /lib/c2 INLINE= /sys/machine/inline/inline SRCS= af.c if.c input.c main.c output.c startup.c tables.c timer.c \ X trace.c inet.c OBJS= af.o if.o input.o main.o output.o startup.o tables.o timer.o \ X trace.o inet.o HDRS= af.h defs.h interface.h table.h trace.h X all: routed X routed: ${OBJS} ${LIBC} X ${CC} -o $@ ${CFLAGS} ${OBJS} X # The following can be deleted where not appropriate to use the kernel's # inline code expansions. X.c.o: X ${CC} -S ${CFLAGS} $*.c X ${C2} $*.s | ${INLINE} | ${AS} -o $*.o X rm -f $*.s X clean: FRC X rm -f ${OBJS} core routed X (cd tools; make ${MFLAGS} clean) X depend: FRC X mkdep ${CFLAGS} ${SRCS} X (cd tools; make ${MFLAGS} depend) X install: FRC X install -s -o bin -g bin -m 755 routed ${DESTDIR}/etc/routed X lint: FRC X lint ${CFLAGS} ${SRCS} X tags: FRC X ctags ${HDRS} ${SRCS} X (cd tools; make ${MFLAGS} tags) X FRC: X # DO NOT DELETE THIS LINE -- mkdep uses it. # DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY. X af.o: af.c defs.h /usr/include/sys/types.h /usr/include/sys/socket.h af.o: /usr/include/net/route.h /usr/include/netinet/in.h af.o: /usr/include/protocols/routed.h /usr/include/stdio.h /usr/include/netdb.h af.o: trace.h interface.h table.h af.h if.o: if.c defs.h /usr/include/sys/types.h /usr/include/sys/socket.h if.o: /usr/include/net/route.h /usr/include/netinet/in.h if.o: /usr/include/protocols/routed.h /usr/include/stdio.h /usr/include/netdb.h if.o: trace.h interface.h table.h af.h input.o: input.c defs.h /usr/include/sys/types.h /usr/include/sys/socket.h input.o: /usr/include/net/route.h /usr/include/netinet/in.h input.o: /usr/include/protocols/routed.h /usr/include/stdio.h input.o: /usr/include/netdb.h trace.h interface.h table.h af.h input.o: /usr/include/sys/syslog.h main.o: main.c defs.h /usr/include/sys/types.h /usr/include/sys/socket.h main.o: /usr/include/net/route.h /usr/include/netinet/in.h main.o: /usr/include/protocols/routed.h /usr/include/stdio.h main.o: /usr/include/netdb.h trace.h interface.h table.h af.h main.o: /usr/include/sys/ioctl.h /usr/include/sys/ttychars.h main.o: /usr/include/sys/ttydev.h /usr/include/sys/time.h /usr/include/time.h main.o: /usr/include/net/if.h /usr/include/net/if_arp.h main.o: /usr/include/sys/errno.h /usr/include/sys/signal.h main.o: /usr/include/machine/trap.h /usr/include/sys/syslog.h output.o: output.c defs.h /usr/include/sys/types.h /usr/include/sys/socket.h output.o: /usr/include/net/route.h /usr/include/netinet/in.h output.o: /usr/include/protocols/routed.h /usr/include/stdio.h output.o: /usr/include/netdb.h trace.h interface.h table.h af.h startup.o: startup.c defs.h /usr/include/sys/types.h /usr/include/sys/socket.h startup.o: /usr/include/net/route.h /usr/include/netinet/in.h startup.o: /usr/include/protocols/routed.h /usr/include/stdio.h startup.o: /usr/include/netdb.h trace.h interface.h table.h af.h startup.o: /usr/include/sys/ioctl.h /usr/include/sys/ttychars.h startup.o: /usr/include/sys/ttydev.h /usr/include/net/if.h startup.o: /usr/include/net/if_arp.h /usr/include/syslog.h tables.o: tables.c defs.h /usr/include/sys/types.h /usr/include/sys/socket.h tables.o: /usr/include/net/route.h /usr/include/netinet/in.h tables.o: /usr/include/protocols/routed.h /usr/include/stdio.h tables.o: /usr/include/netdb.h trace.h interface.h table.h af.h tables.o: /usr/include/sys/ioctl.h /usr/include/sys/ttychars.h tables.o: /usr/include/sys/ttydev.h /usr/include/errno.h tables.o: /usr/include/sys/syslog.h timer.o: timer.c defs.h /usr/include/sys/types.h /usr/include/sys/socket.h timer.o: /usr/include/net/route.h /usr/include/netinet/in.h timer.o: /usr/include/protocols/routed.h /usr/include/stdio.h timer.o: /usr/include/netdb.h trace.h interface.h table.h af.h trace.o: trace.c defs.h /usr/include/sys/types.h /usr/include/sys/socket.h trace.o: /usr/include/net/route.h /usr/include/netinet/in.h trace.o: /usr/include/protocols/routed.h /usr/include/stdio.h trace.o: /usr/include/netdb.h trace.h interface.h table.h af.h trace.o: /usr/include/sys/file.h /usr/include/sys/stat.h trace.o: /usr/include/sys/signal.h /usr/include/machine/trap.h inet.o: inet.c defs.h /usr/include/sys/types.h /usr/include/sys/socket.h inet.o: /usr/include/net/route.h /usr/include/netinet/in.h inet.o: /usr/include/protocols/routed.h /usr/include/stdio.h inet.o: /usr/include/netdb.h trace.h interface.h table.h af.h X # IF YOU PUT ANYTHING HERE IT WILL GO AWAY SHAR_EOF $shar_touch -am 0714191488 'vxrouted_5.1.1/BSDrouted/Makefile' && chmod 0444 'vxrouted_5.1.1/BSDrouted/Makefile' || echo 'restore of vxrouted_5.1.1/BSDrouted/Makefile failed' shar_count="`wc -c < 'vxrouted_5.1.1/BSDrouted/Makefile'`" test 5252 -eq "$shar_count" || echo "vxrouted_5.1.1/BSDrouted/Makefile: original size 5252, current size $shar_count" rm -f _sharnew.tmp fi # ============= vxrouted_5.1.1/in_routed ============== if test -f 'vxrouted_5.1.1/in_routed' && test X"$1" != X"-c"; then echo 'x - skipping vxrouted_5.1.1/in_routed (File already exists)' rm -f _sharnew.tmp else > _sharnew.tmp echo 'x - extracting vxrouted_5.1.1/in_routed (Text)' sed 's/^X//' << 'SHAR_EOF' > 'vxrouted_5.1.1/in_routed' && Xx#X#@HyXLHxHx/$./+HyTK?X (n/N"n iNNN|ܹXX *x/&n"nNPOJgHnNa/ Hy-|-|HnNNa LzXXXXXXXzXXXlXXXXLX XXX"*6CQWmain.od_ifinitifwithaddr SHAR_EOF $shar_touch -am 0712080394 'vxrouted_5.1.1/in_routed' && chmod 0644 'vxrouted_5.1.1/in_routed' || echo 'restore of vxrouted_5.1.1/in_routed failed' shar_count="`wc -c < 'vxrouted_5.1.1/in_routed'`" test 36363 -eq "$shar_count" || echo "vxrouted_5.1.1/in_routed: original size 36363, current size $shar_count" rm -f _sharnew.tmp fi rm -f _sharseq.tmp echo 'You have unpacked the last part' exit 0