Exemple #1
0
int iwinfo_ifdown(const char *ifname)
{
	struct ifreq ifr;

	strncpy(ifr.ifr_name, ifname, IFNAMSIZ);

	if (iwinfo_ioctl(SIOCGIFFLAGS, &ifr))
		return 0;

	ifr.ifr_flags &= ~(IFF_UP | IFF_RUNNING);

	return !iwinfo_ioctl(SIOCSIFFLAGS, &ifr);
}
Exemple #2
0
int iwinfo_ifmac(const char *ifname)
{
	struct ifreq ifr;

	strncpy(ifr.ifr_name, ifname, IFNAMSIZ);

	if (iwinfo_ioctl(SIOCGIFHWADDR, &ifr))
		return 0;

	ifr.ifr_hwaddr.sa_data[1]++;
	ifr.ifr_hwaddr.sa_data[2]++;

	return !iwinfo_ioctl(SIOCSIFHWADDR, &ifr);
}
static void madwifi_ifdel(const char *ifname)
{
	struct ifreq ifr = { 0 };

	strncpy(ifr.ifr_name, ifname, IFNAMSIZ);
	iwinfo_ioctl(SIOC80211IFDESTROY, &ifr);
}
Exemple #4
0
static inline int wext_ioctl(const char *ifname, int cmd, struct iwreq *wrq)
{
	if( !strncmp(ifname, "mon.", 4) )
		strncpy(wrq->ifr_name, &ifname[4], IFNAMSIZ);
	else
		strncpy(wrq->ifr_name, ifname, IFNAMSIZ);

	return iwinfo_ioctl(cmd, wrq);
}
Exemple #5
0
static int wl_ioctl(const char *name, int cmd, void *buf, int len)
{
    struct ifreq ifr;
    wl_ioctl_t ioc;

    /* do it */
    ioc.cmd = cmd;
    ioc.buf = buf;
    ioc.len = len;

    strncpy(ifr.ifr_name, name, IFNAMSIZ);
    ifr.ifr_data = (caddr_t) &ioc;

    return iwinfo_ioctl(SIOCDEVPRIVATE, &ifr);
}
static char * madwifi_ifadd(const char *ifname)
{
	const char *wifidev = NULL;
	struct ifreq ifr = { 0 };
	struct ieee80211_clone_params cp = { 0 };
	static char nif[IFNAMSIZ] = { 0 };

	if( !(wifidev = madwifi_isvap(ifname, NULL)) && madwifi_iswifi(ifname) )
		wifidev = madwifi_phyname(ifname);

	if( wifidev )
	{
		snprintf(nif, sizeof(nif), "tmp.%s", ifname);

		strncpy(cp.icp_name, nif, IFNAMSIZ);
		cp.icp_opmode = IEEE80211_M_STA;
		cp.icp_flags  = IEEE80211_CLONE_BSSID;

		strncpy(ifr.ifr_name, wifidev, IFNAMSIZ);
		ifr.ifr_data  = (void *)&cp;

		if( !iwinfo_ioctl(SIOC80211IFCREATE, &ifr) )
		{
			return nif;
		}
		else
		{
			cp.icp_opmode = IEEE80211_M_MONITOR;

			if( !iwinfo_ioctl(SIOC80211IFCREATE, &ifr) )
				return nif;
		}
	}

	return NULL;
}
static int madwifi_wrq(struct iwreq *wrq, const char *ifname, int cmd, void *data, size_t len)
{
	strncpy(wrq->ifr_name, ifname, IFNAMSIZ);

	if( data != NULL )
	{
		if( len < IFNAMSIZ )
		{
			memcpy(wrq->u.name, data, len);
		}
		else
		{
			wrq->u.data.pointer = data;
			wrq->u.data.length = len;
		}
	}

	return iwinfo_ioctl(cmd, wrq);
}
Exemple #8
0
static int rt2860v2_ioctl(const char *ifname, int cmd, struct iwreq *wrq)
{
	strncpy(wrq->ifr_name, ifname, IFNAMSIZ);
	return iwinfo_ioctl(cmd, wrq);
}