/* $Id: pppwho.c,v 1.7 2004/03/14 13:15:31 thivillon Exp $ */

#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#include <unistd.h>
#include <sys/types.h> 
#include <sys/stat.h> 
#include <fcntl.h>
#include <string.h>
#include <utmp.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/tcp.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <time.h>

#include "../config.h"

#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
#endif 

#ifdef HAVE_LIBUTIL_H
#include <libutil.h>
#endif

#ifdef HAVE_SYS_FILE_H
#include <sys/file.h>
#endif

#ifdef HAVE_SYS_FILIO_H
#include <sys/filio.h>
#endif

#include "ssltun.h"
#include "session.h"

int main ( int argc, char **argv )
{

  int ch;
  int purgepid = -1;
  char *filename = WTMPFILE;
  struct pppsession *sessions;
  int all = 0;
  int resolve = 1;
  

  while ((ch = getopt(argc, argv, "naf:p:")) != -1) {

      switch (ch) {
        case 'f':
          /* Hostname */
          filename = strdup( optarg );
          break;
        case 'p':
          /* Pid */
          purgepid = atoi( optarg );
          break;
        case 'a':
          /* Show all */
          all = 1;
          break;
         case 'n':
          resolve = 0;
          break;
        default:
          fprintf(stderr,"Usage: pppwho [-f wtmpfile] [-p pid]\n");
          fprintf(stderr,"-p purge file from last pid entry\n");
          fprintf(stderr,"-a show all connections instead of current ones\n");
          fprintf(stderr,"-n does not resolve hosts\n");
          exit(0);
          break;
      } 
  }
   
  if (purgepid != -1) {
     purge_wtmp(filename , purgepid);
     exit (0);
  }
  else {
     sessions = read_sessions ( filename );
     dump_sessions ( all , resolve, sessions );
  }

  return 0;

}



syntax highlighted by Code2HTML, v. 0.9.1