Ticket #203: imr-kickmac-patch-r2.diff

File imr-kickmac-patch-r2.diff, 2.4 kB (added by imr1@waikato.ac.nz, 6 years ago)

Attached the wrong file, this one returns the error code.

  • net80211/ieee80211_ioctl.h

    old new  
    521521#define IEEE80211_IOCTL_DELMAC          (SIOCIWFIRSTPRIV+24) 
    522522#define IEEE80211_IOCTL_WDSADDMAC       (SIOCIWFIRSTPRIV+26) 
    523523#define IEEE80211_IOCTL_WDSDELMAC       (SIOCIWFIRSTPRIV+28) 
     524#define IEEE80211_IOCTL_KICKMAC         (SIOCIWFIRSTPRIV+30) 
    524525enum { 
    525526        IEEE80211_WMMPARAMS_CWMIN       = 1, 
    526527        IEEE80211_WMMPARAMS_CWMAX       = 2, 
  • net80211/ieee80211_wireless.c

    old new  
    28762876        return -1; 
    28772877} 
    28782878 
     2879/* ioctl to kick the associated station with the given mac address. 
     2880 * Invoked via iwpriv <interface> kickmac <MAC to kick> 
     2881 */ 
    28792882static int 
     2883ieee80211_ioctl_kickmac(struct net_device *dev, struct iw_request_info *info, 
     2884                          void *w, char *extra) 
     2885{ 
     2886        struct sockaddr *sa = (struct sockaddr *)extra; 
     2887        struct ieee80211req_mlme mlme; 
     2888         
     2889        if(sa->sa_family != ARPHRD_ETHER) return -EINVAL; 
     2890 
     2891        /* Setup a mlme request to disassociate with the given MAC */ 
     2892        mlme.im_op = IEEE80211_MLME_DISASSOC; 
     2893        mlme.im_reason = IEEE80211_REASON_UNSPECIFIED; 
     2894        IEEE80211_ADDR_COPY(&(mlme.im_macaddr), sa->sa_data); 
     2895 
     2896        /* Send off the mlme request and return the result. */ 
     2897        return ieee80211_ioctl_setmlme(dev, info, w,(char *)&mlme); 
     2898} 
     2899 
     2900static int 
    28802901ieee80211_ioctl_addmac(struct net_device *dev, struct iw_request_info *info, 
    28812902                         void *w, char *extra) 
    28822903{ 
     
    35043525          IW_PRIV_TYPE_ADDR | IW_PRIV_SIZE_FIXED | 1, 0,"addmac" }, 
    35053526        { IEEE80211_IOCTL_DELMAC, 
    35063527          IW_PRIV_TYPE_ADDR | IW_PRIV_SIZE_FIXED | 1, 0,"delmac" }, 
     3528        { IEEE80211_IOCTL_KICKMAC, 
     3529          IW_PRIV_TYPE_ADDR | IW_PRIV_SIZE_FIXED | 1, 0, "kickmac"}, 
    35073530        { IEEE80211_IOCTL_WDSADDMAC, 
    35083531          IW_PRIV_TYPE_ADDR | IW_PRIV_SIZE_FIXED | 1, 0,"wds_add" }, 
    35093532        { IEEE80211_IOCTL_WDSDELMAC, 
     
    38953918        (iw_handler) NULL,                              /* SIOCIWFIRSTPRIV+27 */ 
    38963919        (iw_handler) ieee80211_ioctl_wdsdelmac,         /* SIOCIWFIRSTPRIV+28 */ 
    38973920        (iw_handler) NULL,                              /* SIOCIWFIRSTPRIV+29 */ 
     3921        (iw_handler) ieee80211_ioctl_kickmac,           /* SIOCIWFIRSTPRIV+30 */ 
     3922        (iw_handler) NULL,                              /* SIOCIWFIRSTPRIV+31 */ 
    38983923}; 
    38993924static struct iw_handler_def ieee80211_iw_handler_def = { 
    39003925#define N(a)    (sizeof (a) / sizeof (a[0]))