Working on wtp drv ...
FossilOrigin-Name: 5e20f5b02d50b5ddc1e44f6af9e1b3925d324fc3be724550ffe202b02180e166
This commit is contained in:
		@ -9,7 +9,7 @@ USE_CONTRIB_OPENSSL=1
 | 
			
		||||
CONF_LIBRARY=UCI
 | 
			
		||||
USE_CONTRIB_UCI=0
 | 
			
		||||
 | 
			
		||||
#CC=clang
 | 
			
		||||
CC=clang
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#CC=mips-openwrt-linux-uclibc-gcc
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,7 @@
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
CC=clang
 | 
			
		||||
 | 
			
		||||
CFLAGS += -I/usr/include/libnl3
 | 
			
		||||
CFLAGS += -I../contrib/uci
 | 
			
		||||
LDFLAGS += -L../contrib/uci/build
 | 
			
		||||
 | 
			
		||||
@ -1,3 +1,5 @@
 | 
			
		||||
include ../Config.mak
 | 
			
		||||
 | 
			
		||||
ifndef CC
 | 
			
		||||
	CC=gcc
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										112
									
								
								src/wtp/wtpdrv.c
									
									
									
									
									
								
							
							
						
						
									
										112
									
								
								src/wtp/wtpdrv.c
									
									
									
									
									
								
							@ -8,6 +8,7 @@
 | 
			
		||||
 | 
			
		||||
#include "capwap/cw_log.h"
 | 
			
		||||
#include "capwap/radioinfo.h"
 | 
			
		||||
#include "capwap/sock.h"
 | 
			
		||||
 | 
			
		||||
int wpa_printf()
 | 
			
		||||
{
 | 
			
		||||
@ -43,6 +44,8 @@ typedef __le16 le16
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <sys/ioctl.h>
 | 
			
		||||
#include <net/if_arp.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include "dot11.h"
 | 
			
		||||
//#include "ieee802_11_defs.h"
 | 
			
		||||
@ -61,6 +64,15 @@ struct rd {
 | 
			
		||||
static struct rd rd;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
struct wiphydata {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static struct wiphydata * wiphydata[31];
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
int interface_up(const char * ifname)
 | 
			
		||||
{
 | 
			
		||||
@ -68,7 +80,6 @@ int interface_up(const char * ifname)
 | 
			
		||||
	struct ifreq ifr;
 | 
			
		||||
 | 
			
		||||
	sockfd = socket(AF_INET, SOCK_DGRAM, 0);
 | 
			
		||||
 | 
			
		||||
	if (sockfd < 0)
 | 
			
		||||
		return 0;
 | 
			
		||||
 | 
			
		||||
@ -81,6 +92,31 @@ int interface_up(const char * ifname)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
int get_ifhwaddr(const char *ifname, uint8_t *addr)
 | 
			
		||||
{
 | 
			
		||||
        struct ifreq ifr;
 | 
			
		||||
 | 
			
		||||
	int sockfd = socket(AF_INET, SOCK_DGRAM, 0);
 | 
			
		||||
	if (sockfd < 0)
 | 
			
		||||
		return 0;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        memset(&ifr, 0, sizeof(ifr));
 | 
			
		||||
        strcpy(ifr.ifr_name, ifname); //, IFNAMSIZ);
 | 
			
		||||
        if (ioctl(sockfd, SIOCGIFHWADDR, &ifr)) {
 | 
			
		||||
                return -1;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (ifr.ifr_hwaddr.sa_family != ARPHRD_ETHER) {
 | 
			
		||||
                return -1;
 | 
			
		||||
        }
 | 
			
		||||
        memcpy(addr, ifr.ifr_hwaddr.sa_data, ETH_ALEN);
 | 
			
		||||
        return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
struct hostapd_freq_params {
 | 
			
		||||
        int mode;
 | 
			
		||||
        int freq;
 | 
			
		||||
@ -234,10 +270,17 @@ static int add_interface_data(struct nlattr* msgattribs[NL80211_ATTR_MAX+1])
 | 
			
		||||
 | 
			
		||||
		uint8_t * d = nla_data( msgattribs[NL80211_ATTR_MAC] );
 | 
			
		||||
		memcpy (rd.mac,d,6);
 | 
			
		||||
 | 
			
		||||
		printf("Mac is: %s\n", sock_hwaddr2str(rd.mac,6));
 | 
			
		||||
		
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	if (msgattribs[NL80211_ATTR_IFNAME]){
 | 
			
		||||
		printf("IFNAME = %s\n",(uint8_t*)nla_data(msgattribs[NL80211_ATTR_IFNAME]));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	return 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -470,7 +513,7 @@ static int xnlCallback(struct nl_msg *msg, void *arg)
 | 
			
		||||
 | 
			
		||||
int make_if()
 | 
			
		||||
{
 | 
			
		||||
	const char * ifname = "www";
 | 
			
		||||
	const char * ifname = "wtpdrv7";
 | 
			
		||||
	
 | 
			
		||||
	/* allocate a message */
 | 
			
		||||
	struct nl_msg *msg = nlmsg_alloc();
 | 
			
		||||
@ -492,7 +535,10 @@ int make_if()
 | 
			
		||||
	int nlr = nl_recvmsgs_default(sk);
 | 
			
		||||
	printf("Make IF NLR = %d\n", nlr);
 | 
			
		||||
 | 
			
		||||
	interface_up(ifname);
 | 
			
		||||
	cw_log(LOG_ERR,"Fatal: Make if %d - %s",nlr,nl_geterror(nlr));
 | 
			
		||||
	
 | 
			
		||||
 | 
			
		||||
//	interface_up(ifname);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
      nla_put_failure:
 | 
			
		||||
@ -501,12 +547,20 @@ int make_if()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void start_ap(struct nl_sock *sk)
 | 
			
		||||
int start_ap(struct nl_sock *sk)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	/* allocate a message */
 | 
			
		||||
	struct nl_msg *msg = nlmsg_alloc();
 | 
			
		||||
	if (!msg)
 | 
			
		||||
		return;
 | 
			
		||||
		return 0;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -545,13 +599,23 @@ void start_ap(struct nl_sock *sk)
 | 
			
		||||
 | 
			
		||||
	NLA_PUT(msg, NL80211_ATTR_BEACON_HEAD, hs, head);
 | 
			
		||||
 | 
			
		||||
	tail = head+hs;
 | 
			
		||||
printf("Put message 1\n");
 | 
			
		||||
 | 
			
		||||
	tail = (uint8_t*)(head)+hs;
 | 
			
		||||
	uint8_t * pos = tail;
 | 
			
		||||
printf("Put message 1 posss\n");
 | 
			
		||||
 | 
			
		||||
	const char *ssid = "HelloWorld";
 | 
			
		||||
	*pos++ = WLAN_EID_SSID;
 | 
			
		||||
	*pos++ = strlen(ssid);
 | 
			
		||||
	*pos = WLAN_EID_SSID;
 | 
			
		||||
	pos++;
 | 
			
		||||
 | 
			
		||||
	*pos = strlen(ssid);
 | 
			
		||||
	pos++;
 | 
			
		||||
 | 
			
		||||
printf ("Memcpy %d %d %d\n",(void*)pos,(void*)head,(void*)pos-(void*)head);
 | 
			
		||||
	memcpy(pos,ssid,strlen(ssid));
 | 
			
		||||
printf ("Memcoy done\n");
 | 
			
		||||
 | 
			
		||||
	pos+=strlen(ssid);
 | 
			
		||||
 | 
			
		||||
	int tl = pos-tail;
 | 
			
		||||
@ -656,6 +720,8 @@ int init()
 | 
			
		||||
 | 
			
		||||
int init_radios()
 | 
			
		||||
{
 | 
			
		||||
	memset (wiphydata,0,sizeof(wiphydata));
 | 
			
		||||
 | 
			
		||||
	struct nl_msg *msg = nlmsg_alloc();
 | 
			
		||||
	if (!msg){
 | 
			
		||||
		cw_log(LOG_ERR,"Fatal: No memory while initializing radios");
 | 
			
		||||
@ -674,21 +740,35 @@ int init_radios()
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	struct nl_cb bl_cb;	
 | 
			
		||||
//	struct nl_cb bl_cb;	
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	rc = nl_recvmsgs_default(sk);
 | 
			
		||||
	printf("IR RC: %d %s\n",rc,nl_geterror(rc));
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void gr()
 | 
			
		||||
int gr()
 | 
			
		||||
{
 | 
			
		||||
	init_radios();
 | 
			
		||||
	return 0;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	uint8_t buf[64];
 | 
			
		||||
 | 
			
		||||
	get_ifhwaddr("tabbe",buf);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	printf ("HWADDR: %s\n",sock_hwaddr2str(buf,6));
 | 
			
		||||
	return 0;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	if (!init())
 | 
			
		||||
		return;
 | 
			
		||||
		return 0;
 | 
			
		||||
 
 | 
			
		||||
	init_radios();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -696,10 +776,10 @@ void gr()
 | 
			
		||||
	start_ap(sk);
 | 
			
		||||
	sleep(1000);
 | 
			
		||||
 | 
			
		||||
return;
 | 
			
		||||
return 0;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	return;
 | 
			
		||||
	return 0 ;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -714,7 +794,7 @@ return;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	return;
 | 
			
		||||
	return 0 ;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	int ret;
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user