123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450 |
- #ifndef _IW_HANDLER_H
- #define _IW_HANDLER_H
- #include <linux/wireless.h> /* IOCTL user space API */
- #define IW_HANDLER_VERSION 3
- #define EIWCOMMIT EINPROGRESS
- #define IW_REQUEST_FLAG_NONE 0x0000
- #define IW_HEADER_TYPE_NULL 0
- #define IW_HEADER_TYPE_CHAR 2
- #define IW_HEADER_TYPE_UINT 4
- #define IW_HEADER_TYPE_FREQ 5
- #define IW_HEADER_TYPE_POINT 6
- #define IW_HEADER_TYPE_PARAM 7
- #define IW_HEADER_TYPE_ADDR 8
- #define IW_HEADER_TYPE_QUAL 9
- #define IW_DESCR_FLAG_NONE 0x0000
- #define IW_DESCR_FLAG_DUMP 0x0001
- #define IW_DESCR_FLAG_EVENT 0x0002
- #define IW_DESCR_FLAG_RESTRICT 0x0004
-
- #define IW_DESCR_FLAG_WAIT 0x0100
- struct iw_request_info
- {
- __u16 cmd;
- __u16 flags;
- };
- typedef int (*iw_handler)(struct net_device *dev, struct iw_request_info *info,
- union iwreq_data *wrqu, char *extra);
- struct iw_handler_def
- {
-
- __u16 num_standard;
- __u16 num_private;
-
- __u16 num_private_args;
-
- iw_handler * standard;
-
- iw_handler * private;
-
- struct iw_priv_args * private_args;
-
- };
- struct iw_ioctl_description
- {
- __u8 header_type;
- __u8 token_type;
- __u16 token_size;
- __u16 min_tokens;
- __u16 max_tokens;
- __u32 flags;
- };
- extern int dev_get_wireless_info(char * buffer, char **start, off_t offset,
- int length);
- extern int wireless_process_ioctl(struct ifreq *ifr, unsigned int cmd);
- extern void wireless_send_event(struct net_device * dev,
- unsigned int cmd,
- union iwreq_data * wrqu,
- char * extra);
- static inline char *
- iwe_stream_add_event(char * stream,
- char * ends,
- struct iw_event *iwe,
- int event_len)
- {
-
- if((stream + event_len) < ends) {
- iwe->len = event_len;
- memcpy(stream, (char *) iwe, event_len);
- stream += event_len;
- }
- return stream;
- }
- static inline char *
- iwe_stream_add_point(char * stream,
- char * ends,
- struct iw_event *iwe,
- char * extra)
- {
- int event_len = IW_EV_POINT_LEN + iwe->u.data.length;
-
- if((stream + event_len) < ends) {
- iwe->len = event_len;
- memcpy(stream, (char *) iwe, IW_EV_POINT_LEN);
- memcpy(stream + IW_EV_POINT_LEN, extra, iwe->u.data.length);
- stream += event_len;
- }
- return stream;
- }
- static inline char *
- iwe_stream_add_value(char * event,
- char * value,
- char * ends,
- struct iw_event *iwe,
- int event_len)
- {
-
- event_len -= IW_EV_LCP_LEN;
-
- if((value + event_len) < ends) {
-
- memcpy(value, (char *) iwe + IW_EV_LCP_LEN, event_len);
- value += event_len;
-
- iwe->len = value - event;
- memcpy(event, (char *) iwe, IW_EV_LCP_LEN);
- }
- return value;
- }
- #endif
|