[BACK]Return to mrinfo.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / usr.sbin / mrinfo

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/usr.sbin/mrinfo/mrinfo.c between version 1.12 and 1.12.2.2

version 1.12, 2001/09/24 13:22:37 version 1.12.2.2, 2002/08/09 22:50:14
Line 155  log(severity, syserr, format, va_alist)
Line 155  log(severity, syserr, format, va_alist)
 #endif  #endif
 {  {
         va_list ap;          va_list ap;
         char    fmt[100];  
   
         switch (debug) {          switch (debug) {
         case 0:          case 0:
Line 168  log(severity, syserr, format, va_alist)
Line 167  log(severity, syserr, format, va_alist)
                 if (severity > LOG_INFO)                  if (severity > LOG_INFO)
                         return;                          return;
         default:          default:
                 fmt[0] = '\0';  
                 if (severity == LOG_WARNING)                  if (severity == LOG_WARNING)
                         strcat(fmt, "warning - ");                          fprintf(stderr, "warning - ");
                 strncat(fmt, format, 80);  
                 format = fmt;  
 #ifdef __STDC__  #ifdef __STDC__
                 va_start(ap, format);                  va_start(ap, format);
 #else  #else
Line 351  main(argc, argv)
Line 347  main(argc, argv)
         char *host;          char *host;
         int curaddr;          int curaddr;
   
         setlinebuf(stderr);  
   
         if (geteuid() != 0) {          if (geteuid() != 0) {
                 fprintf(stderr, "mrinfo: must be root\n");                  fprintf(stderr, "mrinfo: must be root\n");
                 exit(1);                  exit(1);
         }          }
           init_igmp();
           if (setuid(getuid()) == -1)
                   log(LOG_ERR, errno, "setuid");
   
           setlinebuf(stderr);
   
         argv++, argc--;          argv++, argc--;
         while (argc > 0 && argv[0][0] == '-') {          while (argc > 0 && argv[0][0] == '-') {
                 switch (argv[0][1]) {                  switch (argv[0][1]) {
Line 391  main(argc, argv)
Line 391  main(argc, argv)
                 hp = &bogus;                  hp = &bogus;
                 hp->h_length = sizeof(target_addr);                  hp->h_length = sizeof(target_addr);
                 hp->h_addr_list = (char **)malloc(2 * sizeof(char *));                  hp->h_addr_list = (char **)malloc(2 * sizeof(char *));
                   if (hp->h_addr_list == NULL)
                           log(LOG_ERR, errno, "malloc");
                 hp->h_addr_list[0] = malloc(hp->h_length);                  hp->h_addr_list[0] = malloc(hp->h_length);
                   if (hp->h_addr_list[0] == NULL)
                           log(LOG_ERR, errno, "malloc");
                 memcpy(hp->h_addr_list[0], &target_addr, sizeof(hp->h_addr_list[0]));                  memcpy(hp->h_addr_list[0], &target_addr, sizeof(hp->h_addr_list[0]));
                 hp->h_addr_list[1] = 0;                  hp->h_addr_list[1] = NULL;
         } else          } else
                 hp = gethostbyname(host);                  hp = gethostbyname(host);
   
         if (hp == NULL) {          if (hp == NULL || hp->h_length != sizeof(target_addr)) {
                 fprintf(stderr, "mrinfo: %s: no such host\n", argv[0]);                  fprintf(stderr, "mrinfo: %s: no such host\n", argv[0]);
                 exit(1);                  exit(1);
         }          }
         if (debug)          if (debug)
                 fprintf(stderr, "Debug level %u\n", debug);                  fprintf(stderr, "Debug level %u\n", debug);
   
         init_igmp();  
   
         /* Check all addresses; mrouters often have unreachable interfaces */          /* Check all addresses; mrouters often have unreachable interfaces */
         for (curaddr = 0; hp->h_addr_list[curaddr] != NULL; curaddr++) {          for (curaddr = 0; hp->h_addr_list[curaddr] != NULL; curaddr++) {
             memcpy(&target_addr, hp->h_addr_list[curaddr], sizeof(target_addr));              memcpy(&target_addr, hp->h_addr_list[curaddr], sizeof(target_addr));
Line 414  main(argc, argv)
Line 416  main(argc, argv)
                 struct sockaddr_in addr;                  struct sockaddr_in addr;
                 int     addrlen = sizeof(addr);                  int     addrlen = sizeof(addr);
   
                   memset(&addr, 0, sizeof(addr));
                 addr.sin_family = AF_INET;                  addr.sin_family = AF_INET;
 #if (defined(BSD) && (BSD >= 199103))  #if (defined(BSD) && (BSD >= 199103))
                 addr.sin_len = sizeof addr;                  addr.sin_len = sizeof addr;
Line 454  main(argc, argv)
Line 457  main(argc, argv)
                 int     ipdatalen, iphdrlen, igmpdatalen;                  int     ipdatalen, iphdrlen, igmpdatalen;
   
                 FD_ZERO(&fds);                  FD_ZERO(&fds);
                   if (igmp_socket >= FD_SETSIZE)
                           log(LOG_ERR, 0, "descriptor too big");
                 FD_SET(igmp_socket, &fds);                  FD_SET(igmp_socket, &fds);
   
                 gettimeofday(&now, 0);                  gettimeofday(&now, 0);

Legend:
Removed from v.1.12  
changed lines
  Added in v.1.12.2.2

CVSweb <webmaster@jp.NetBSD.org>