Exemplo n.º 1
0
/*! print tcp tables */
static void
print_tcp_table(void)
{
  static SOCU_TCPTableEntry tcp_entries[32];
  socklen_t                 optlen;
  size_t                    i;
  int                       rc;

  consoleSelect(&tcp_console);
  console_print("\x1b[0;0H\x1b[K\n");
  optlen = sizeof(tcp_entries);
  rc = SOCU_GetNetworkOpt(SOL_CONFIG, NETOPT_TCP_TABLE, tcp_entries, &optlen);
  if(rc != 0 && errno != ENODEV)
    console_print(RED "tcp table: %d %s\n\x1b[J\n" RESET, errno, strerror(errno));
  else if(rc == 0)
  {
    for(i = 0; i < optlen / sizeof(SOCU_TCPTableEntry); ++i)
    {
      SOCU_TCPTableEntry *entry  = &tcp_entries[i];
      struct sockaddr_in *local  = (struct sockaddr_in*)&entry->local;
      struct sockaddr_in *remote = (struct sockaddr_in*)&entry->remote;

      console_print(GREEN "tcp[%zu]: ", i);
      switch(entry->state)
      {
        case TCP_STATE_CLOSED:
          console_print("CLOSED\x1b[K\n"); break;
        case TCP_STATE_LISTEN:
          console_print("LISTEN\x1b[K\n"); break;
        case TCP_STATE_ESTABLISHED:
          console_print("ESTABLISHED\x1b[K\n"); break;
        case TCP_STATE_FINWAIT1:
          console_print("FINWAIT1\x1b[K\n"); break;
        case TCP_STATE_FINWAIT2:
          console_print("FINWAIT2\x1b[K\n"); break;
        case TCP_STATE_CLOSE_WAIT:
          console_print("CLOSE_WAIT\x1b[K\n"); break;
        case TCP_STATE_LAST_ACK:
          console_print("LAST_ACK\x1b[K\n"); break;
        case TCP_STATE_TIME_WAIT:
          console_print("TIME_WAIT\x1b[K\n"); break;
        default:
          console_print("State %lu\x1b[K\n", entry->state); break;
      }

      console_print(" Local %s:%u\x1b[K\n", inet_ntoa(local->sin_addr),
                               ntohs(local->sin_port));
      console_print(" Peer  %s:%u\x1b[K\n", inet_ntoa(remote->sin_addr),
                                ntohs(remote->sin_port));
    }
    console_print(RESET "\x1b[J");
  }
  else
    console_print("\x1b[2J");

  consoleSelect(&main_console);
}
Exemplo n.º 2
0
int SOCU_GetIPInfo(struct in_addr *ip, struct in_addr *netmask, struct in_addr *broadcast)
{
	SOCU_IPInfo info;
	socklen_t infolen = sizeof info;
	int ret = SOCU_GetNetworkOpt(SOL_CONFIG,NETOPT_IP_INFO,&info,&infolen);
	if(ret != 0) return ret;

	if(ip != NULL)
		*ip = info.ip;
	if(netmask != NULL)
		*netmask = info.netmask;
	if(broadcast != NULL)
		*broadcast = info.broadcast;

	return 0;
}