Improved the management of soap request/response.
The director has the opportunity to change the configuration of AC in join connection. The virtual interfaces which encapsulate the wifi stations is managed dynamically by the Director. The AC must request authorization from Director for associate a station.
This commit is contained in:
@ -26,6 +26,8 @@ static void sc_iface_netdev_uninit(struct net_device* dev) {
|
||||
int hash = CAPWAP_IFACE_HASH(dev->ifindex);
|
||||
struct sc_netdev_priv* priv = (struct sc_netdev_priv*)netdev_priv(dev);
|
||||
|
||||
TRACEKMOD("### sc_iface_netdev_uninit\n");
|
||||
|
||||
/* Remove interface from hash */
|
||||
spin_lock_irqsave(&sc_iface_lock, flags);
|
||||
|
||||
@ -66,24 +68,32 @@ static void sc_iface_netdev_uninit(struct net_device* dev) {
|
||||
|
||||
/* */
|
||||
static int sc_iface_netdev_open(struct net_device* dev) {
|
||||
TRACEKMOD("### sc_iface_netdev_open\n");
|
||||
|
||||
netif_start_queue(dev);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* */
|
||||
static int sc_iface_netdev_stop(struct net_device* dev) {
|
||||
TRACEKMOD("### sc_iface_netdev_stop\n");
|
||||
|
||||
netif_stop_queue(dev);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* */
|
||||
static int sc_iface_netdev_tx(struct sk_buff* skb, struct net_device* dev) {
|
||||
TRACEKMOD("### sc_iface_netdev_tx\n");
|
||||
|
||||
/* TODO */
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* */
|
||||
static int sc_iface_netdev_change_mtu(struct net_device* dev, int new_mtu) {
|
||||
TRACEKMOD("### sc_iface_netdev_change_mtu\n");
|
||||
|
||||
/* TODO */
|
||||
return 0;
|
||||
}
|
||||
@ -92,6 +102,8 @@ static int sc_iface_netdev_change_mtu(struct net_device* dev, int new_mtu) {
|
||||
static void sc_iface_netdev_setup(struct net_device* dev) {
|
||||
struct sc_netdev_priv* priv = (struct sc_netdev_priv*)netdev_priv(dev);
|
||||
|
||||
TRACEKMOD("### sc_iface_netdev_setup\n");
|
||||
|
||||
/* */
|
||||
memset(priv, 0, sizeof(struct sc_netdev_priv));
|
||||
priv->dev = dev;
|
||||
@ -114,6 +126,8 @@ int sc_iface_create(const char* ifname, uint16_t mtu) {
|
||||
struct net_device* dev;
|
||||
struct sc_netdev_priv* priv;
|
||||
|
||||
TRACEKMOD("### sc_iface_create\n");
|
||||
|
||||
/* Create interface */
|
||||
dev = alloc_netdev(sizeof(struct sc_netdev_priv), ifname, sc_iface_netdev_setup);
|
||||
if (!dev) {
|
||||
@ -164,6 +178,8 @@ int sc_iface_delete(uint32_t ifindex) {
|
||||
unsigned long flags;
|
||||
struct sc_netdev_priv* priv;
|
||||
|
||||
TRACEKMOD("### sc_iface_delete\n");
|
||||
|
||||
/* */
|
||||
spin_lock_irqsave(&sc_iface_lock, flags);
|
||||
|
||||
@ -195,6 +211,8 @@ void sc_iface_closeall(void) {
|
||||
int i;
|
||||
unsigned long flags;
|
||||
|
||||
TRACEKMOD("### sc_iface_closeall\n");
|
||||
|
||||
while (sc_iface_count) {
|
||||
struct net_device* dev = NULL;
|
||||
|
||||
|
@ -291,7 +291,11 @@ static int sc_netlink_delete_iface(struct sk_buff* skb, struct genl_info* info)
|
||||
}
|
||||
|
||||
/* */
|
||||
return 0;
|
||||
if (!info->attrs[NLSMARTCAPWAP_ATTR_IFPHY_INDEX]) {
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
return sc_iface_delete(nla_get_u32(info->attrs[NLSMARTCAPWAP_ATTR_IFPHY_INDEX]));
|
||||
}
|
||||
|
||||
/* */
|
||||
|
Reference in New Issue
Block a user