Exemplo n.º 1
0
LOCAL STATUS ifIoctlGet
    (
    char *interfaceName,        /* name of the network interface, i.e. ei0 */
    int   code,                 /* network interface ioctl function code */
    int  *val                   /* where to return result */
    )
    {
    struct ifreq  ifr;

    strncpy (ifr.ifr_name, interfaceName, sizeof (ifr.ifr_name));

    if (ifIoctlCall (code, &ifr) == ERROR)
	return (ERROR);

    switch ((u_int) code)
	{
	case SIOCGIFFLAGS:
	    *val = ifr.ifr_flags;
	    break;

        case SIOCGIFMETRIC:
	    *val = ifr.ifr_metric;
	    break;

	default:
	    *val = ((struct sockaddr_in *) &ifr.ifr_addr)->sin_addr.s_addr;
	    break;
	}

    return (OK);
    }
Exemplo n.º 2
0
LOCAL STATUS ifIoctlSet
    (
    char *interfaceName,        /* name of the network interface, i.e. ei0 */
    int   code,                 /* network interface ioctl function code */
    int   val                   /* value to be changed */
    )
    {
    struct ifreq ifr;

    strncpy (ifr.ifr_name, interfaceName, sizeof (ifr.ifr_name));

    switch ((u_int) code)
	{
	case SIOCSIFFLAGS:
	    ifr.ifr_flags = (short) val;
	    break;

        case SIOCSIFMETRIC:
	    ifr.ifr_metric = val;
	    break;

        default:
	    bzero ((caddr_t) &ifr.ifr_addr, sizeof (ifr.ifr_addr));
	    ifr.ifr_addr.sa_len = sizeof (struct sockaddr_in);
	    ifr.ifr_addr.sa_family = AF_INET;
	    ((struct sockaddr_in *) &ifr.ifr_addr)->sin_addr.s_addr = val;
	    break;
	}

    return (ifIoctlCall (code, &ifr));
    }
Exemplo n.º 3
0
Arquivo: inetLib.c Projeto: phoboz/vmx
LOCAL STATUS ifIoctlGet(char *ifname, int cmd, int *val)
{
    struct ifreq ifr;

    /* Copy string */
    strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));

    if ( ifIoctlCall(cmd, &ifr) == ERROR)
        return ERROR;

    /* Select command */
    switch (cmd) {

    case SIOCGIFFLAGS:

        *val = ifr.ifr_flags;

        break;

    case SIOCGIFMETRIC:

        *val = ifr.ifr_metric;

        break;

    default:

        /* Get address */
        *val = ((struct sockaddr_in *) &ifr.ifr_addr)->sin_addr.s_addr;

        break;

    } /* End select command */

    return OK;
}
Exemplo n.º 4
0
Arquivo: inetLib.c Projeto: phoboz/vmx
LOCAL STATUS ifIoctlSet(char *ifname, int cmd, int val)
{
    struct ifreq ifr;

    /* Copy string */
    strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));

    /* Select command */
    switch (cmd) {

    case SIOCSIFFLAGS:

        ifr.ifr_flags = (short) val;

        break;

    case SIOCSIFMETRIC:

        ifr.ifr_metric = val;

        break;

    default:

        /* Set address */
        memset(&ifr.ifr_addr, 0, sizeof(ifr.ifr_addr));
        ifr.ifr_addr.sa_family = AF_INET;
        ifr.ifr_addr.sa_len = sizeof(struct sockaddr_in);
        ((struct sockaddr_in *) &ifr.ifr_addr)->sin_addr.s_addr = val;

        break;

    } /* End select command */

    return ifIoctlCall(cmd, &ifr);
}