Esempio n. 1
0
File: freebsd.c Progetto: 0x0d/lrc
static int fbsd_get_mac(struct wif *wi, unsigned char *mac)
{
	struct ifaddrs *ifa, *p;
	char *name = wi_get_ifname(wi);
	int rc = -1;
	struct sockaddr_dl* sdp;

	if (getifaddrs(&ifa) == -1)
		return -1;

	p = ifa;
	while (p) {
		if (p->ifa_addr->sa_family == AF_LINK &&
		    strcmp(name, p->ifa_name) == 0) {

		    	sdp = (struct sockaddr_dl*) p->ifa_addr;
			memcpy(mac, sdp->sdl_data + sdp->sdl_nlen, 6);
			rc = 0;
			break;
		}

		p = p->ifa_next;
	}
	freeifaddrs(ifa);

	return rc;
}
Esempio n. 2
0
static int obsd_get_channel(struct wif *wi)
{
	struct priv_obsd *po = wi_priv(wi);
	struct ieee80211chanreq channel;

	memset(&channel, 0, sizeof(channel));
	strlcpy(channel.i_name, wi_get_ifname(wi), sizeof(channel.i_name));

	if(ioctl(po->po_s, SIOCG80211CHANNEL, (caddr_t)&channel) < 0) return -1;

	return channel.i_channel;
}
Esempio n. 3
0
File: freebsd.c Progetto: 0x0d/lrc
static int fbsd_set_mtu(struct wif *wi, int mtu)
{
	struct priv_fbsd *priv = wi_priv(wi);
	struct ifreq *ifr = &priv->pf_ifr;

	memset(ifr, 0, sizeof(struct ifreq));

	strncpy(ifr->ifr_name, wi_get_ifname(wi), sizeof(ifr->ifr_name));
	ifr->ifr_mtu = mtu;

	if(ioctl(priv->pf_s, SIOCSIFMTU, ifr) < 0)
		return -1;

	return 0;
}
Esempio n. 4
0
File: freebsd.c Progetto: 0x0d/lrc
static int fbsd_get_mtu(struct wif *wi)
{
	struct priv_fbsd *priv = wi_priv(wi);
	struct ifreq ifr;

	memset(&ifr, 0, sizeof(struct ifreq));

	ifr.ifr_addr.sa_family = AF_INET;

	strncpy(ifr.ifr_name, wi_get_ifname(wi), sizeof(ifr.ifr_name));

	if(ioctl(priv->pf_s, SIOCGIFMTU, (caddr_t)&ifr) < 0)
		return -1;

	return ifr.ifr_mtu;
}