1: /*
   2:  * Copyright (c) 1983 Regents of the University of California.
   3:  * All rights reserved.  The Berkeley software License Agreement
   4:  * specifies the terms and conditions for redistribution.
   5:  */
   6: 
   7: #ifndef lint
   8: char copyright[] =
   9: "@(#) Copyright (c) 1983 Regents of the University of California.\n\
  10:  All rights reserved.\n";
  11: #endif not lint
  12: 
  13: #ifndef lint
  14: static char sccsid[] = "@(#)trace.c	5.3 (Berkeley) 2/12/86";
  15: #endif not lint
  16: 
  17: #include <sys/param.h>
  18: #include <sys/protosw.h>
  19: #include <sys/socket.h>
  20: #include <netinet/in.h>
  21: #include <errno.h>
  22: #include <stdio.h>
  23: #include <netdb.h>
  24: #include <protocols/routed.h>
  25: 
  26: struct  sockaddr_in myaddr = { AF_INET, IPPORT_RESERVED-1 };
  27: char    packet[MAXPACKETSIZE];
  28: 
  29: main(argc, argv)
  30:     int argc;
  31:     char *argv[];
  32: {
  33:     int size, s;
  34:     struct sockaddr from;
  35:     struct sockaddr_in router;
  36:     register struct rip *msg = (struct rip *)packet;
  37:     struct hostent *hp;
  38:     struct servent *sp;
  39: 
  40:     if (argc < 3) {
  41: usage:
  42:         printf("usage: trace cmd machines,\n");
  43:         printf("cmd either \"on filename\", or \"off\"\n");
  44:         exit(1);
  45:     }
  46:     s = socket(AF_INET, SOCK_DGRAM, 0);
  47:     if (s < 0) {
  48:         perror("socket");
  49:         exit(2);
  50:     }
  51: #ifdef vax || pdp11
  52:     myaddr.sin_port = htons(myaddr.sin_port);
  53: #endif
  54:     if (bind(s, &myaddr, sizeof(myaddr)) < 0) {
  55:         perror("bind");
  56:         exit(2);
  57:     }
  58: 
  59:     argv++, argc--;
  60:     msg->rip_cmd = strcmp(*argv, "on") == 0 ?
  61:         RIPCMD_TRACEON : RIPCMD_TRACEOFF;
  62:     msg->rip_vers = RIPVERSION;
  63:     argv++, argc--;
  64:     size = sizeof (int);
  65:     if (msg->rip_cmd == RIPCMD_TRACEON) {
  66:         strcpy(msg->rip_tracefile, *argv);
  67:         size += strlen(*argv);
  68:         argv++, argc--;
  69:     }
  70:     if (argc == 0)
  71:         goto usage;
  72:     bzero((char *)&router, sizeof (router));
  73:     router.sin_family = AF_INET;
  74:     sp = getservbyname("router", "udp");
  75:     if (sp == 0) {
  76:         printf("udp/router: service unknown\n");
  77:         exit(1);
  78:     }
  79:     router.sin_port = sp->s_port;
  80:     while (argc > 0) {
  81:         router.sin_family = AF_INET;
  82:         router.sin_addr.s_addr = inet_addr(*argv);
  83:         if (router.sin_addr.s_addr == -1) {
  84:             hp = gethostbyname(*argv);
  85:             if (hp == 0) {
  86:                 printf("%s: unknown\n", *argv);
  87:                 exit(1);
  88:             }
  89:             bcopy(hp->h_addr, &router.sin_addr, hp->h_length);
  90:         }
  91:         if (sendto(s, packet, size, 0, &router, sizeof(router)) < 0)
  92:             perror(*argv);
  93:         argv++, argc--;
  94:     }
  95: }

Defined functions

main defined in line 29; never used

Defined variables

copyright defined in line 8; never used
myaddr defined in line 26; used 4 times
packet defined in line 27; used 2 times
sccsid defined in line 14; never used
Last modified: 1986-02-13
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 1167
Valid CSS Valid XHTML 1.0 Strict