2007-04-23 12:20:05 -07:00
# ifndef __NET_CFG80211_H
# define __NET_CFG80211_H
# include <linux/netlink.h>
# include <linux/skbuff.h>
2007-09-20 13:09:35 -04:00
# include <linux/nl80211.h>
2007-04-23 12:20:05 -07:00
# include <net/genetlink.h>
/*
* 802.11 configuration in - kernel interface
*
2007-09-20 13:09:35 -04:00
* Copyright 2006 , 2007 Johannes Berg < johannes @ sipsolutions . net >
2007-04-23 12:20:05 -07:00
*/
2007-07-10 19:29:38 +02:00
/* Radiotap header iteration
* implemented in net / wireless / radiotap . c
* docs in Documentation / networking / radiotap - headers . txt
*/
/**
* struct ieee80211_radiotap_iterator - tracks walk thru present radiotap args
* @ rtheader : pointer to the radiotap header we are walking through
* @ max_length : length of radiotap header in cpu byte ordering
* @ this_arg_index : IEEE80211_RADIOTAP_ . . . index of current arg
* @ this_arg : pointer to current radiotap arg
* @ arg_index : internal next argument index
* @ arg : internal next argument pointer
* @ next_bitmap : internal pointer to next present u32
* @ bitmap_shifter : internal shifter for curr u32 bitmap , b0 set = = arg present
*/
struct ieee80211_radiotap_iterator {
struct ieee80211_radiotap_header * rtheader ;
int max_length ;
int this_arg_index ;
u8 * this_arg ;
int arg_index ;
u8 * arg ;
__le32 * next_bitmap ;
u32 bitmap_shifter ;
} ;
extern int ieee80211_radiotap_iterator_init (
struct ieee80211_radiotap_iterator * iterator ,
struct ieee80211_radiotap_header * radiotap_header ,
int max_length ) ;
extern int ieee80211_radiotap_iterator_next (
struct ieee80211_radiotap_iterator * iterator ) ;
2007-04-23 12:20:05 -07:00
/* from net/wireless.h */
struct wiphy ;
/**
* struct cfg80211_ops - backend description for wireless configuration
*
* This struct is registered by fullmac card drivers and / or wireless stacks
* in order to handle configuration requests on their interfaces .
*
* All callbacks except where otherwise noted should return 0
* on success or a negative error code .
*
2007-04-24 14:07:27 -07:00
* All operations are currently invoked under rtnl for consistency with the
* wireless extensions but this is subject to reevaluation as soon as this
* code is used more widely and we have a first user without wext .
*
2007-04-23 12:20:05 -07:00
* @ add_virtual_intf : create a new virtual interface with the given name
*
* @ del_virtual_intf : remove the virtual interface determined by ifindex .
2007-09-20 13:09:35 -04:00
*
* @ change_virtual_intf : change type of virtual interface
*
2007-04-23 12:20:05 -07:00
*/
struct cfg80211_ops {
int ( * add_virtual_intf ) ( struct wiphy * wiphy , char * name ,
2007-09-20 13:09:35 -04:00
enum nl80211_iftype type ) ;
2007-04-23 12:20:05 -07:00
int ( * del_virtual_intf ) ( struct wiphy * wiphy , int ifindex ) ;
2007-09-20 13:09:35 -04:00
int ( * change_virtual_intf ) ( struct wiphy * wiphy , int ifindex ,
enum nl80211_iftype type ) ;
2007-04-23 12:20:05 -07:00
} ;
# endif /* __NET_CFG80211_H */