'p2req_join' from Clay Jones.

Superceded by the "real" scan/join/etc commands in the hbmac tree, so
this will only go into the -ng tree.
origin
solomon 2002-08-30 13:37:22 +00:00
parent 742257ef7e
commit 045b5d72f5
7 changed files with 589 additions and 2 deletions

View File

@ -41,6 +41,8 @@
* Intersil Corporation as part of PRISM(R) chipset product development.
*
* --------------------------------------------------------------------
- 'p2req_join' command, see doc/wlanctl-ng.p2req_join.txt
This lets you join a specific SSID. Thanks to Clay Jones.
- A couple more pcmcia/cf card idents
- More deletions/fixes in wlan_compat.h
-pre5

1
THANKS
View File

@ -91,6 +91,7 @@ James Goodwin <jamesg@Filanet.com>
Derek Atkins <warlord@mit.edu>
Michael Beattie <mjb@debian.org>
Joey Hess <joey@kitenet.net>
Clay Jones <cjones1@email.com>
[Many, many more. If I've overlooked you and you want to be listed here,
send me e-mail and I'll fix it. I _know_ a bunch of linux-wlan contributors

View File

@ -389,6 +389,224 @@ int prism2mgmt_join(wlandevice_t *wlandev, void *msgp)
}
/*----------------------------------------------------------------
* prism2mgmt_p2_join
*
* Join a specific BSS
*
* Arguments:
* wlandev wlan device structure
* msgp ptr to msg buffer
*
* Returns:
* 0 success and done
* <0 success, but we're waiting for something to finish.
* >0 an error occurred while handling the message.
* Side effects:
*
* Call context:
* process thread (usually)
* interrupt
----------------------------------------------------------------*/
int prism2mgmt_p2_join(wlandevice_t *wlandev, void *msgp)
{
int result = 0;
prism2sta_priv_t *priv = (prism2sta_priv_t*)wlandev->priv;
hfa384x_t *hw = priv->hw;
p80211msg_p2req_join_t *msg = msgp;
UINT16 reg;
UINT16 port_type;
p80211pstrd_t *pstr;
UINT8 bytebuf[256];
hfa384x_bytestr_t *p2bytestr = (hfa384x_bytestr_t*)bytebuf;
hfa384x_JoinRequest_data_t joinreq;
DBFENTER;
if (!priv->ap) {
/*** STATION ***/
/* Set the PortType */
msg->resultcode.status = P80211ENUM_msgitem_status_data_ok;
msg->resultcode.data = P80211ENUM_resultcode_success;
port_type = 1; /* ess port */
result = hfa384x_drvr_setconfig16(hw, HFA384x_RID_CNFPORTTYPE, &port_type);
if ( result ) {
WLAN_LOG_ERROR0("Failed to set Port Type\n");
goto failed;
}
/* Set the auth type */
if ( msg->authtype.data == P80211ENUM_authalg_sharedkey ) {
reg = HFA384x_CNFAUTHENTICATION_SHAREDKEY;
} else {
reg = HFA384x_CNFAUTHENTICATION_OPENSYSTEM;
}
result = hfa384x_drvr_setconfig16(hw, HFA384x_RID_CNFAUTHENTICATION, &reg);
if ( result ) {
WLAN_LOG_ERROR0("Failed to set Authentication\n");
goto failed;
}
/* Turn off all roaming */
reg = 3;
hfa384x_drvr_setconfig16(hw, HFA384x_RID_CNFROAMINGMODE, &reg);
if ( result ) {
WLAN_LOG_ERROR0("Failed to Turn off Roaming\n");
goto failed;
}
/* Basic rates */
reg = 0;
if ( msg->basicrate1.status == P80211ENUM_msgitem_status_data_ok ) {
reg = p80211rate_to_p2bit(msg->basicrate1.data);
}
if ( msg->basicrate2.status == P80211ENUM_msgitem_status_data_ok ) {
reg |= p80211rate_to_p2bit(msg->basicrate2.data);
}
if ( msg->basicrate3.status == P80211ENUM_msgitem_status_data_ok ) {
reg |= p80211rate_to_p2bit(msg->basicrate3.data);
}
if ( msg->basicrate4.status == P80211ENUM_msgitem_status_data_ok ) {
reg |= p80211rate_to_p2bit(msg->basicrate4.data);
}
if ( msg->basicrate5.status == P80211ENUM_msgitem_status_data_ok ) {
reg |= p80211rate_to_p2bit(msg->basicrate5.data);
}
if ( msg->basicrate6.status == P80211ENUM_msgitem_status_data_ok ) {
reg |= p80211rate_to_p2bit(msg->basicrate6.data);
}
if ( msg->basicrate7.status == P80211ENUM_msgitem_status_data_ok ) {
reg |= p80211rate_to_p2bit(msg->basicrate7.data);
}
if ( msg->basicrate8.status == P80211ENUM_msgitem_status_data_ok ) {
reg |= p80211rate_to_p2bit(msg->basicrate8.data);
}
if( reg == 0)
reg = 0x03;
result = hfa384x_drvr_setconfig16(hw, HFA384x_RID_CNFBASICRATES, &reg);
if ( result ) {
WLAN_LOG_ERROR1("Failed to set basicrates=%d.\n", reg);
goto failed;
}
/* Operational rates (supprates and txratecontrol) */
reg = 0;
if ( msg->operationalrate1.status == P80211ENUM_msgitem_status_data_ok ) {
reg = p80211rate_to_p2bit(msg->operationalrate1.data);
}
if ( msg->operationalrate2.status == P80211ENUM_msgitem_status_data_ok ) {
reg |= p80211rate_to_p2bit(msg->operationalrate2.data);
}
if ( msg->operationalrate3.status == P80211ENUM_msgitem_status_data_ok ) {
reg |= p80211rate_to_p2bit(msg->operationalrate3.data);
}
if ( msg->operationalrate4.status == P80211ENUM_msgitem_status_data_ok ) {
reg |= p80211rate_to_p2bit(msg->operationalrate4.data);
}
if ( msg->operationalrate5.status == P80211ENUM_msgitem_status_data_ok ) {
reg |= p80211rate_to_p2bit(msg->operationalrate5.data);
}
if ( msg->operationalrate6.status == P80211ENUM_msgitem_status_data_ok ) {
reg |= p80211rate_to_p2bit(msg->operationalrate6.data);
}
if ( msg->operationalrate7.status == P80211ENUM_msgitem_status_data_ok ) {
reg |= p80211rate_to_p2bit(msg->operationalrate7.data);
}
if ( msg->operationalrate8.status == P80211ENUM_msgitem_status_data_ok ) {
reg |= p80211rate_to_p2bit(msg->operationalrate8.data);
}
if( reg == 0)
reg = 0x0f;
result = hfa384x_drvr_setconfig16(hw, HFA384x_RID_CNFSUPPRATES, &reg);
if ( result ) {
WLAN_LOG_ERROR1("Failed to set supprates=%d.\n", reg);
goto failed;
}
result = hfa384x_drvr_setconfig16(hw, HFA384x_RID_TXRATECNTL, &reg);
if ( result ) {
WLAN_LOG_ERROR1("Failed to set txrates=%d.\n", reg);
goto failed;
}
/* Set the ssid */
memset(bytebuf, 0, 256);
pstr = (p80211pstrd_t*)&(msg->ssid.data);
prism2mgmt_pstr2bytestr(p2bytestr, pstr);
result = hfa384x_drvr_setconfig(
hw, HFA384x_RID_CNFDESIREDSSID,
bytebuf, HFA384x_RID_CNFDESIREDSSID_LEN);
if ( result ) {
WLAN_LOG_ERROR0("Failed to set SSID\n");
goto failed;
}
#if (WLAN_HOSTIF != WLAN_USB)
/* Enable the interrupts */
reg = HFA384x_INTEN_INFDROP_SET(1) |
HFA384x_INTEN_INFO_SET(1) |
HFA384x_INTEN_ALLOC_SET(1) |
HFA384x_INTEN_TXEXC_SET(1) |
HFA384x_INTEN_TX_SET(1) |
HFA384x_INTEN_RX_SET(1);
hfa384x_setreg(hw, 0xffff, HFA384x_EVSTAT);
hfa384x_setreg(hw, reg, HFA384x_INTEN);
#endif
/* Enable the Port */
result = hfa384x_cmd_enable(hw, 0);
if ( result ) {
WLAN_LOG_ERROR1("Enable macport failed, result=%d.\n", result);
goto failed;
}
/* Fill in the join request */
joinreq.channel = msg->channel.data;
memcpy( joinreq.bssid, ((unsigned char *) &msg->bssid.data) + 1, WLAN_BSSID_LEN);
hw->joinreq = joinreq;
hw->join_ap = 1;
/* Send the join request */
result = hfa384x_drvr_setconfig( hw,
HFA384x_RID_JOINREQUEST,
&joinreq, HFA384x_RID_JOINREQUEST_LEN);
if(result != 0) {
WLAN_LOG_ERROR1("Join request failed, result=%d.\n", result);
goto failed;
}
if (priv->log) {
printk(KERN_INFO "p2_join: Join request issued channel=%d bssid=%02X:%02X:%02X:%02X:%02X:%02X ssid=%s.\n",
joinreq.channel,
joinreq.bssid[0],
joinreq.bssid[1],
joinreq.bssid[2],
joinreq.bssid[3],
joinreq.bssid[4],
joinreq.bssid[5],
bytebuf+2);
}
} else {
/*** ACCESS POINT ***/
/* Never supported by APs */
msg->resultcode.status = P80211ENUM_msgitem_status_data_ok;
msg->resultcode.data = P80211ENUM_resultcode_not_supported;
}
goto done;
failed:
WLAN_LOG_DEBUG1(1, "Failed to set a config option, result=%d\n", result);
msg->resultcode.data = P80211ENUM_resultcode_invalid_parameters;
done:
result = 0;
DBFEXIT;
return result;
}
/*----------------------------------------------------------------
* prism2mgmt_authenticate
*

View File

@ -974,6 +974,10 @@ int prism2sta_mlmerequest(wlandevice_t *wlandev, p80211msg_t *msg)
/*
* Prism2 specific messages
*/
case DIDmsg_p2req_join :
WLAN_LOG_DEBUG0(2,"Received p2 join request\n");
result = prism2mgmt_p2_join(wlandev, msg);
break;
case DIDmsg_p2req_readpda :
WLAN_LOG_DEBUG0(2,"Received mlme readpda request\n");
result = prism2mgmt_readpda(wlandev, msg);
@ -1207,6 +1211,8 @@ UINT32 prism2sta_ifstate(wlandevice_t *wlandev, UINT32 ifstate)
break;
}
wlandev->msdstate = WLAN_MSD_RUNNING;
hw->join_ap = 0;
hw->join_retries = 60;
result = P80211ENUM_resultcode_success;
break;
case WLAN_MSD_RUNNING:
@ -1842,6 +1848,12 @@ void prism2sta_inf_linkstatus(wlandevice_t *wlandev, hfa384x_InfFrame_t *inf)
* Indicate authentication and/or association
* Enable Transmits, Receives and pass up data frames
*/
/* If we are joining a specific AP, set our state and reset retries */
if(hw->join_ap == 1)
hw->join_ap = 2;
hw->join_retries = 60;
WLAN_LOG_DEBUG0(1,"linkstatus=CONNECTED\n");
#if (WLAN_HOSTIF == WLAN_USB)
/* For USB devices, all the [get|set]config calls that
@ -1902,7 +1914,21 @@ void prism2sta_inf_linkstatus(wlandevice_t *wlandev, hfa384x_InfFrame_t *inf)
* Indicate Deauthentication
* Block Transmits, Ignore receives of data frames
*/
WLAN_LOG_DEBUG0(1,"linkstatus=DISCONNECTED (unhandled)\n");
if(hw->join_ap == 2)
{
hfa384x_JoinRequest_data_t joinreq;
joinreq = hw->joinreq;
/* Send the join request */
hfa384x_drvr_setconfig( hw,
HFA384x_RID_JOINREQUEST,
&joinreq, HFA384x_RID_JOINREQUEST_LEN);
WLAN_LOG_DEBUG0(1,"linkstatus=DISCONNECTED (re-submitting join)\n");
}
else
{
WLAN_LOG_DEBUG0(1,"linkstatus=DISCONNECTED (unhandled)\n");
}
break;
case HFA384x_LINK_AP_CHANGE:
@ -1957,7 +1983,20 @@ void prism2sta_inf_linkstatus(wlandevice_t *wlandev, hfa384x_InfFrame_t *inf)
* Response:
* Disable Transmits, Ignore receives of data frames
*/
WLAN_LOG_DEBUG0(1,"linkstatus=ASSOCFAIL (unhandled)\n");
if(hw->join_ap && --hw->join_retries > 0)
{
hfa384x_JoinRequest_data_t joinreq;
joinreq = hw->joinreq;
/* Send the join request */
hfa384x_drvr_setconfig( hw,
HFA384x_RID_JOINREQUEST,
&joinreq, HFA384x_RID_JOINREQUEST_LEN);
WLAN_LOG_DEBUG0(1,"linkstatus=ASSOCFAIL (re-submitting join)\n");
}
else
{
WLAN_LOG_DEBUG0(1,"linkstatus=ASSOCFAIL (unhandled)\n");
}
break;
default:

View File

@ -2393,6 +2393,9 @@ typedef struct hfa384x
UINT16 infofid;
struct semaphore infofid_sem;
#endif /* !USB */
int join_ap; /* are we joined to a specific ap */
int join_retries; /* number of join retries till we fail */
hfa384x_JoinRequest_data_t joinreq; /* join request saved data */
} hfa384x_t;
/*=============================================================*/

View File

@ -224,6 +224,7 @@ int prism2mgmt_powermgmt(wlandevice_t *wlandev, void *msgp);
int prism2mgmt_scan(wlandevice_t *wlandev, void *msgp);
int prism2mgmt_scan_results(wlandevice_t *wlandev, void *msgp);
int prism2mgmt_join(wlandevice_t *wlandev, void *msgp);
int prism2mgmt_p2_join(wlandevice_t *wlandev, void *msgp);
int prism2mgmt_authenticate(wlandevice_t *wlandev, void *msgp);
int prism2mgmt_deauthenticate(wlandevice_t *wlandev, void *msgp);
int prism2mgmt_associate(wlandevice_t *wlandev, void *msgp);

View File

@ -2842,6 +2842,325 @@ p80211meta_t MKINDMETANAME(lnxind_wlansniffrm)[] = {
UINT32 MKINDMETASIZE(lnxind_wlansniffrm) =
sizeof(MKINDMETANAME(lnxind_wlansniffrm))/sizeof(p80211meta_t);
/*--------------------------------------------------------------------*/
/* metadata for the p2req_join request message arguments */
extern UINT32 MKREQMETASIZE(p2req_join);
p80211meta_t MKREQMETANAME(p2req_join)[] = {
{
/* name */ (char *)&(MKREQMETASIZE(p2req_join)),
/* did */ 0,
/* flags */ 0,
/* min */ 0,
/* max */ 0,
/* maxlen */ 0,
/* minlen */ 0,
/* enumptr */ NULL,
/* collptr */ NULL,
/* totextptr */ NULL,
/* fromtextptr */ NULL,
/* validfunptr */ NULL
},
{
/* name */ MKITEMNAME("bssid"),
/* did */ 0,
/* flags */ P80211ITEM_SETFLAGS(ISREQUIRED, ISREQUEST, 0UL),
/* min */ 0,
/* max */ 0,
/* maxlen */ MAXLEN_PSTR6,
/* minlen */ MAXLEN_PSTR6,
/* enumptr */ NULL,
/* collptr */ NULL,
/* totextptr */ p80211_totext_octetstr,
/* fromtextptr */ p80211_fromtext_octetstr,
/* validfunptr */ p80211_isvalid_octetstr
},
{
/* name */ MKITEMNAME("basicrate1"),
/* did */ 0,
/* flags */ P80211ITEM_SETFLAGS(0UL, ISREQUEST, 0UL),
/* min */ 2,
/* max */ 127,
/* maxlen */ 0,
/* minlen */ 0,
/* enumptr */ NULL,
/* collptr */ NULL,
/* totextptr */ p80211_totext_boundedint,
/* fromtextptr */ p80211_fromtext_boundedint,
/* validfunptr */ p80211_isvalid_boundedint
},
{
/* name */ MKITEMNAME("basicrate2"),
/* did */ 0,
/* flags */ P80211ITEM_SETFLAGS(0UL, ISREQUEST, 0UL),
/* min */ 2,
/* max */ 127,
/* maxlen */ 0,
/* minlen */ 0,
/* enumptr */ NULL,
/* collptr */ NULL,
/* totextptr */ p80211_totext_boundedint,
/* fromtextptr */ p80211_fromtext_boundedint,
/* validfunptr */ p80211_isvalid_boundedint
},
{
/* name */ MKITEMNAME("basicrate3"),
/* did */ 0,
/* flags */ P80211ITEM_SETFLAGS(0UL, ISREQUEST, 0UL),
/* min */ 2,
/* max */ 127,
/* maxlen */ 0,
/* minlen */ 0,
/* enumptr */ NULL,
/* collptr */ NULL,
/* totextptr */ p80211_totext_boundedint,
/* fromtextptr */ p80211_fromtext_boundedint,
/* validfunptr */ p80211_isvalid_boundedint
},
{
/* name */ MKITEMNAME("basicrate4"),
/* did */ 0,
/* flags */ P80211ITEM_SETFLAGS(0UL, ISREQUEST, 0UL),
/* min */ 2,
/* max */ 127,
/* maxlen */ 0,
/* minlen */ 0,
/* enumptr */ NULL,
/* collptr */ NULL,
/* totextptr */ p80211_totext_boundedint,
/* fromtextptr */ p80211_fromtext_boundedint,
/* validfunptr */ p80211_isvalid_boundedint
},
{
/* name */ MKITEMNAME("basicrate5"),
/* did */ 0,
/* flags */ P80211ITEM_SETFLAGS(0UL, ISREQUEST, 0UL),
/* min */ 2,
/* max */ 127,
/* maxlen */ 0,
/* minlen */ 0,
/* enumptr */ NULL,
/* collptr */ NULL,
/* totextptr */ p80211_totext_boundedint,
/* fromtextptr */ p80211_fromtext_boundedint,
/* validfunptr */ p80211_isvalid_boundedint
},
{
/* name */ MKITEMNAME("basicrate6"),
/* did */ 0,
/* flags */ P80211ITEM_SETFLAGS(0UL, ISREQUEST, 0UL),
/* min */ 2,
/* max */ 127,
/* maxlen */ 0,
/* minlen */ 0,
/* enumptr */ NULL,
/* collptr */ NULL,
/* totextptr */ p80211_totext_boundedint,
/* fromtextptr */ p80211_fromtext_boundedint,
/* validfunptr */ p80211_isvalid_boundedint
},
{
/* name */ MKITEMNAME("basicrate7"),
/* did */ 0,
/* flags */ P80211ITEM_SETFLAGS(0UL, ISREQUEST, 0UL),
/* min */ 2,
/* max */ 127,
/* maxlen */ 0,
/* minlen */ 0,
/* enumptr */ NULL,
/* collptr */ NULL,
/* totextptr */ p80211_totext_boundedint,
/* fromtextptr */ p80211_fromtext_boundedint,
/* validfunptr */ p80211_isvalid_boundedint
},
{
/* name */ MKITEMNAME("basicrate8"),
/* did */ 0,
/* flags */ P80211ITEM_SETFLAGS(0UL, ISREQUEST, 0UL),
/* min */ 2,
/* max */ 127,
/* maxlen */ 0,
/* minlen */ 0,
/* enumptr */ NULL,
/* collptr */ NULL,
/* totextptr */ p80211_totext_boundedint,
/* fromtextptr */ p80211_fromtext_boundedint,
/* validfunptr */ p80211_isvalid_boundedint
},
{
/* name */ MKITEMNAME("operationalrate1"),
/* did */ 0,
/* flags */ P80211ITEM_SETFLAGS(0UL, ISREQUEST, 0UL),
/* min */ 2,
/* max */ 127,
/* maxlen */ 0,
/* minlen */ 0,
/* enumptr */ NULL,
/* collptr */ NULL,
/* totextptr */ p80211_totext_boundedint,
/* fromtextptr */ p80211_fromtext_boundedint,
/* validfunptr */ p80211_isvalid_boundedint
},
{
/* name */ MKITEMNAME("operationalrate2"),
/* did */ 0,
/* flags */ P80211ITEM_SETFLAGS(0UL, ISREQUEST, 0UL),
/* min */ 2,
/* max */ 127,
/* maxlen */ 0,
/* minlen */ 0,
/* enumptr */ NULL,
/* collptr */ NULL,
/* totextptr */ p80211_totext_boundedint,
/* fromtextptr */ p80211_fromtext_boundedint,
/* validfunptr */ p80211_isvalid_boundedint
},
{
/* name */ MKITEMNAME("operationalrate3"),
/* did */ 0,
/* flags */ P80211ITEM_SETFLAGS(0UL, ISREQUEST, 0UL),
/* min */ 2,
/* max */ 127,
/* maxlen */ 0,
/* minlen */ 0,
/* enumptr */ NULL,
/* collptr */ NULL,
/* totextptr */ p80211_totext_boundedint,
/* fromtextptr */ p80211_fromtext_boundedint,
/* validfunptr */ p80211_isvalid_boundedint
},
{
/* name */ MKITEMNAME("operationalrate4"),
/* did */ 0,
/* flags */ P80211ITEM_SETFLAGS(0UL, ISREQUEST, 0UL),
/* min */ 2,
/* max */ 127,
/* maxlen */ 0,
/* minlen */ 0,
/* enumptr */ NULL,
/* collptr */ NULL,
/* totextptr */ p80211_totext_boundedint,
/* fromtextptr */ p80211_fromtext_boundedint,
/* validfunptr */ p80211_isvalid_boundedint
},
{
/* name */ MKITEMNAME("operationalrate5"),
/* did */ 0,
/* flags */ P80211ITEM_SETFLAGS(0UL, ISREQUEST, 0UL),
/* min */ 2,
/* max */ 127,
/* maxlen */ 0,
/* minlen */ 0,
/* enumptr */ NULL,
/* collptr */ NULL,
/* totextptr */ p80211_totext_boundedint,
/* fromtextptr */ p80211_fromtext_boundedint,
/* validfunptr */ p80211_isvalid_boundedint
},
{
/* name */ MKITEMNAME("operationalrate6"),
/* did */ 0,
/* flags */ P80211ITEM_SETFLAGS(0UL, ISREQUEST, 0UL),
/* min */ 2,
/* max */ 127,
/* maxlen */ 0,
/* minlen */ 0,
/* enumptr */ NULL,
/* collptr */ NULL,
/* totextptr */ p80211_totext_boundedint,
/* fromtextptr */ p80211_fromtext_boundedint,
/* validfunptr */ p80211_isvalid_boundedint
},
{
/* name */ MKITEMNAME("operationalrate7"),
/* did */ 0,
/* flags */ P80211ITEM_SETFLAGS(0UL, ISREQUEST, 0UL),
/* min */ 2,
/* max */ 127,
/* maxlen */ 0,
/* minlen */ 0,
/* enumptr */ NULL,
/* collptr */ NULL,
/* totextptr */ p80211_totext_boundedint,
/* fromtextptr */ p80211_fromtext_boundedint,
/* validfunptr */ p80211_isvalid_boundedint
},
{
/* name */ MKITEMNAME("operationalrate8"),
/* did */ 0,
/* flags */ P80211ITEM_SETFLAGS(0UL, ISREQUEST, 0UL),
/* min */ 2,
/* max */ 127,
/* maxlen */ 0,
/* minlen */ 0,
/* enumptr */ NULL,
/* collptr */ NULL,
/* totextptr */ p80211_totext_boundedint,
/* fromtextptr */ p80211_fromtext_boundedint,
/* validfunptr */ p80211_isvalid_boundedint
},
{
/* name */ MKITEMNAME("ssid"),
/* did */ 0,
/* flags */ P80211ITEM_SETFLAGS(ISREQUIRED, ISREQUEST, 0UL),
/* min */ 0,
/* max */ 0,
/* maxlen */ MAXLEN_PSTR32,
/* minlen */ 0,
/* enumptr */ NULL,
/* collptr */ NULL,
/* totextptr */ p80211_totext_displaystr,
/* fromtextptr */ p80211_fromtext_displaystr,
/* validfunptr */ p80211_isvalid_displaystr
},
{
/* name */ MKITEMNAME("channel"),
/* did */ 0,
/* flags */ P80211ITEM_SETFLAGS(0UL, ISREQUEST, 0UL),
/* min */ 1,
/* max */ 14,
/* maxlen */ 0,
/* minlen */ 0,
/* enumptr */ NULL,
/* collptr */ NULL,
/* totextptr */ p80211_totext_boundedint,
/* fromtextptr */ p80211_fromtext_boundedint,
/* validfunptr */ p80211_isvalid_boundedint
},
{
/* name */ MKITEMNAME("authtype"),
/* did */ 0,
/* flags */ P80211ITEM_SETFLAGS(ISREQUIRED, ISREQUEST, ISCONFIRM),
/* min */ 0,
/* max */ 0,
/* maxlen */ 0,
/* minlen */ 0,
/* enumptr */ &MKENUMNAME(authalg),
/* collptr */ NULL,
/* totextptr */ p80211_totext_enumint,
/* fromtextptr */ p80211_fromtext_enumint,
/* validfunptr */ p80211_isvalid_enumint
},
{
/* name */ MKITEMNAME("resultcode"),
/* did */ 0,
/* flags */ P80211ITEM_SETFLAGS(ISREQUIRED, 0UL, ISCONFIRM),
/* min */ 0,
/* max */ 0,
/* maxlen */ 0,
/* minlen */ 0,
/* enumptr */ &MKENUMNAME(resultcode),
/* collptr */ NULL,
/* totextptr */ p80211_totext_enumint,
/* fromtextptr */ p80211_fromtext_enumint,
/* validfunptr */ p80211_isvalid_enumint
}
}; /* end of p2req_join request message metadata list */
UINT32 MKREQMETASIZE(p2req_join) =
sizeof(MKREQMETANAME(p2req_join))/sizeof(p80211meta_t);
/*--------------------------------------------------------------------*/
/* metadata for the p2req_readpda request message arguments */
@ -4336,6 +4655,10 @@ grplistitem_t MKGRPMETANAME(p2req)[] = {
(char *)&MKGRPMETASIZE(p2req),
NULL
},
{
"p2req_join",
MKREQMETANAME(p2req_join)
},
{
"p2req_readpda",
MKREQMETANAME(p2req_readpda)