Public Member Functions
IpRouteWatch Class Reference

Brief description of class still missing. More...

#include <IpRouteWatch.h>

Inheritance diagram for IpRouteWatch:
GpCoreTools::Timer

List of all members.

Public Member Functions

virtual bool exec ()
 IpRouteWatch (NetServer *server)
 ~IpRouteWatch ()

Detailed Description

Brief description of class still missing.

Full description of class still missing


Constructor & Destructor Documentation

Description of constructor still missing

References GpCoreTools::Timer::setInterval(), and TRACE.

{
  TRACE;
  _server=server;
  setInterval(5000);
  loadHostNames();
}

Description of destructor still missing

References TRACE.

{
  TRACE;
}

Member Function Documentation

bool IpRouteWatch::exec ( ) [virtual]

Performs action after timeout. If it returns true the timer is not single shot, i.e. deleted right after exec().

Implements GpCoreTools::Timer.

References TRACE.

{
  TRACE;
  FILE * f=popen("/sbin/ip route list table 66", "r");
  if(!f) {
    Log::write(0, "cannot execute /sbin/ip\n");
    return true;
  }
  char * buf=new char[64];
  int bufLen=64;
  char * ptr;
  std::map<std::string, std::string>::iterator it;
  std::string directHosts[_hostNames.size()];
  int directHostCount=0;
  while(!feof(f)) {
    File::readLine(buf, bufLen, f, true);
    if(buf[0]!='\0') {
      ptr=strtok(buf, " \t");
      if(ptr) {
        std::string ip=ptr;
        it=_hostNames.find(ip);
        if(it==_hostNames.end()) {
          Log::write(0, "host name not found for ip: %s\n", ip.data());
        } else {
          ptr=strtok(0, " \t");
          if(ptr) {
            if(strcmp(ptr, "dev")==0) { // Direct access, else this is 'via'
              directHosts[directHostCount]=it->second;
              directHostCount++;
            }
          } else {
            return parsingError(f, buf);
          }
        }
      } else {
        return parsingError(f, buf);
      }
    }
  }
  delete [] buf;
  fclose(f);
  showLeds(directHostCount);
  showLCD(directHostCount, directHosts);
  send(directHostCount, directHosts);
  return true;
}

The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines