示例#1
0
static int interface_driver_is(const char* intf_name, const char* driver_name)
{
  /* Return true if the net driver that underlies this device is the one
   * named.  i.e. If the interface is an IP alias or VLAN interface, then
   * we look at the underlying interface.
   */
  char intf_base_name[IF_NAMESIZE];
  interface_get_basename(intf_name, intf_base_name);
  return interface_is(intf_base_name, driver_name);
}
示例#2
0
static int interface_to_ifindex(const char* intf_name)
{
  struct ifreq ifr;
  int rc, sock;
  interface_get_basename(intf_name, ifr.ifr_name);
  CI_TRY(sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP));
  rc = ioctl(sock, SIOCGIFINDEX, &ifr);
  close(sock);
  if( rc == 0 )
    return ifr.ifr_ifindex;
  else
    return rc;
}
示例#3
0
static int interface_to_ifindex(const char* intf_name)
{
  struct ifreq ifr;
  int rc, sock;
  interface_get_basename(intf_name, ifr.ifr_name);
  if( (sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP)) < 0 ) {
    E(fprintf(stderr, LPF "%s: ERROR: socket() failed (%d, %s)\n",
              __FUNCTION__, errno, strerror(errno)));
    return sock;
  }
  rc = ioctl(sock, SIOCGIFINDEX, &ifr);
  close(sock);
  if( rc == 0 ) {
    return ifr.ifr_ifindex;
  }
  else {
    E(fprintf(stderr, LPF "%s: ERROR: ioctl(SIOCGIFINDEX) failed (%d, %s)\n",
              __FUNCTION__, errno, strerror(errno)));
    return rc;
  }
}