Esempio n. 1
1
/*
 * Show some adapter details.
 * The IP-address, netmask etc. are what Winsock uses. We ignore
 * them and use what WATTCP.CFG specifies.
 */
static void show_link_details (void)
{
#if defined(USE_DEBUG)
  const ADAPTER_INFO *ai;
  int   i, real_media;
  BOOL  is_up;
  DWORD ver, MTU, speed;
  mac_address mac;

  if (!_pkt_inf)
     return;

  ai = (const ADAPTER_INFO*) _pkt_inf->adapter_info;
  if (!ai)
  {
    (*_printf) ("  not available\n");
    return;
  }

  (*_printf) ("  %d network address%s:\n",
              ai->NNetworkAddresses, ai->NNetworkAddresses > 1 ? "es" : "");
  for (i = 0; i < ai->NNetworkAddresses; i++)
  {
    const npf_if_addr        *if_addr = ai->NetworkAddresses + i;
    const struct sockaddr_in *ip_addr = (const struct sockaddr_in*) &if_addr->IPAddress;
    const struct sockaddr_in *netmask = (const struct sockaddr_in*) &if_addr->SubnetMask;
    const struct sockaddr_in *brdcast = (const struct sockaddr_in*) &if_addr->Broadcast;

    (*_printf) ("  IP-addr %s", inet_ntoa(ip_addr->sin_addr));
    (*_printf) (", netmask %s", inet_ntoa(netmask->sin_addr));
    (*_printf) (", broadcast %s\n", inet_ntoa(brdcast->sin_addr));
  }
  if (ai->NNetworkAddresses <= 0)
     (*_printf) ("\n");

  if (get_perm_mac_address(&mac))
     (*_printf) ("  MAC-addr %02X:%02X:%02X:%02X:%02X:%02X, ",
                 mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);

  if (get_interface_mtu(&MTU))
     (*_printf) ("MTU %lu, ", MTU);

  (*_printf) ("link-type %s, ",
              list_lookup(_pktdevclass, logical_media, DIM(logical_media)));

  if (get_real_media(&real_media))
     (*_printf) (" over %s, ", list_lookup(real_media, phys_media, DIM(phys_media)));

  if (get_connected_status(&is_up))
     (*_printf) ("%s, ", is_up ? "UP" : "DOWN");

  if (get_interface_speed(&speed))
     (*_printf) ("%luMb/s, ", speed);

  if (pkt_get_api_ver(&ver))
     (*_printf) ("NDIS %d.%d", hiBYTE(ver), loBYTE(ver));
  (*_printf) ("\n");
#endif
}
Esempio n. 2
0
int pkt_get_mtu (void)
{
  DWORD MTU;

  if (get_interface_mtu(&MTU))
     return (MTU);
  return (0);
}
Esempio n. 3
0
u_int16 get_iface_mtu(const char *iface)
{
    if (iface) {
        ADAPTER *adapter;
        DWORD    mtu = 0;

        adapter = PacketOpenAdapter ((PCHAR)iface);
        if (adapter) {
            BOOL rc = get_interface_mtu (adapter, &mtu);

            DEBUG_MSG("get_interface_mtu(): mtu %lu, %s", mtu, rc ? "okay" : "failed");

            PacketCloseAdapter (adapter);
            if (rc & mtu)
                return (mtu);
        } else
            DEBUG_MSG("get_interface_mtu(): failed to open iface \"%s\"; %s",
                      iface, ec_win_strerror(GetLastError()));
    }

    return (1514);  /* Assume ethernet */
}