📄 iwlib.h
字号:
typedef struct stream_descr{ char * end; /* End of the stream */ char * current; /* Current event in stream of events */ char * value; /* Current value in event */} stream_descr;/* Prototype for handling display of each single interface on the * system - see iw_enum_devices() */typedef int (*iw_enum_handler)(int skfd, char * ifname, char * args[], int count);/**************************** PROTOTYPES ****************************//* * All the functions in iwcommon.c *//* ---------------------- SOCKET SUBROUTINES -----------------------*/int iw_sockets_open(void);void iw_enum_devices(int skfd, iw_enum_handler fn, char * args[], int count);/* --------------------- WIRELESS SUBROUTINES ----------------------*/int iw_get_kernel_we_version(void);int iw_print_version_info(const char * toolname);int iw_get_range_info(int skfd, const char * ifname, iwrange * range);int iw_get_priv_info(int skfd, const char * ifname, iwprivargs ** ppriv);int iw_get_basic_config(int skfd, const char * ifname, wireless_config * info);int iw_set_basic_config(int skfd, const char * ifname, wireless_config * info);/* --------------------- PROTOCOL SUBROUTINES --------------------- */int iw_protocol_compare(const char * protocol1, const char * protocol2);/* -------------------- FREQUENCY SUBROUTINES --------------------- */void iw_float2freq(double in, iwfreq * out);double iw_freq2float(const iwfreq * in);void iw_print_freq_value(char * buffer, int buflen, double freq);void iw_print_freq(char * buffer, int buflen, double freq, int channel, int freq_flags);int iw_freq_to_channel(double freq, const struct iw_range * range);int iw_channel_to_freq(int channel, double * pfreq, const struct iw_range * range);void iw_print_bitrate(char * buffer, int buflen, int bitrate);/* ---------------------- POWER SUBROUTINES ----------------------- */int iw_dbm2mwatt(int in);int iw_mwatt2dbm(int in);void iw_print_txpower(char * buffer, int buflen, struct iw_param * txpower);/* -------------------- STATISTICS SUBROUTINES -------------------- */int iw_get_stats(int skfd, const char * ifname, iwstats * stats, const iwrange * range, int has_range);void iw_print_stats(char * buffer, int buflen, const iwqual * qual, const iwrange * range, int has_range);/* --------------------- ENCODING SUBROUTINES --------------------- */void iw_print_key(char * buffer, int buflen, const unsigned char * key, int key_size, int key_flags);int iw_in_key(const char * input, unsigned char * key);int iw_in_key_full(int skfd, const char * ifname, const char * input, unsigned char * key, __u16 * flags);/* ----------------- POWER MANAGEMENT SUBROUTINES ----------------- */void iw_print_pm_value(char * buffer, int buflen, int value, int flags);void iw_print_pm_mode(char * buffer, int buflen, int flags);/* --------------- RETRY LIMIT/LIFETIME SUBROUTINES --------------- */void iw_print_retry_value(char * buffer, int buflen, int value, int flags);/* ----------------------- TIME SUBROUTINES ----------------------- */void iw_print_timeval(char * buffer, int buflen, const struct timeval * time);/* --------------------- ADDRESS SUBROUTINES ---------------------- */int iw_check_mac_addr_type(int skfd, char * ifname);int iw_check_if_addr_type(int skfd, char * ifname);#if 0int iw_check_addr_type(int skfd, char * ifname);#endifint iw_get_mac_addr(int skfd, const char * name, struct ether_addr * eth, unsigned short * ptype);void iw_ether_ntop(const struct ether_addr* eth, char* buf);char* iw_ether_ntoa(const struct ether_addr* eth);int iw_ether_aton(const char* bufp, struct ether_addr* eth);int iw_in_inet(char *bufp, struct sockaddr *sap);int iw_in_addr(int skfd, char * ifname, char * bufp, struct sockaddr * sap);/* ----------------------- MISC SUBROUTINES ------------------------ */int iw_get_priv_size(int args);/* ---------------------- EVENT SUBROUTINES ---------------------- */void iw_init_event_stream(struct stream_descr * stream, char * data, int len);int iw_extract_event_stream(struct stream_descr * stream, struct iw_event * iwe, int we_version);/* --------------------- SCANNING SUBROUTINES --------------------- */int iw_process_scan(int skfd, char * ifname, int we_version, wireless_scan_head * context);int iw_scan(int skfd, char * ifname, int we_version, wireless_scan_head * context);/**************************** VARIABLES ****************************//* Modes as human readable strings */extern const char * const iw_operation_mode[];#define IW_NUM_OPER_MODE 7/************************* INLINE FUNTIONS *************************//* * Functions that are so simple that it's more efficient inlining them *//* * Note : I've defined wrapper for the ioctl request so that * it will be easier to migrate to other kernel API if needed *//*------------------------------------------------------------------*//* * Wrapper to push some Wireless Parameter in the driver */static inline intiw_set_ext(int skfd, /* Socket to the kernel */ const char * ifname, /* Device name */ int request, /* WE ID */ struct iwreq * pwrq) /* Fixed part of the request */{ /* Set device name */ strncpy(pwrq->ifr_name, ifname, IFNAMSIZ); /* Do the request */ return(ioctl(skfd, request, pwrq));}/*------------------------------------------------------------------*//* * Wrapper to extract some Wireless Parameter out of the driver */static inline intiw_get_ext(int skfd, /* Socket to the kernel */ const char * ifname, /* Device name */ int request, /* WE ID */ struct iwreq * pwrq) /* Fixed part of the request */{ /* Set device name */ strncpy(pwrq->ifr_name, ifname, IFNAMSIZ); /* Do the request */ return(ioctl(skfd, request, pwrq));}/*------------------------------------------------------------------*//* * Close the socket used for ioctl. */static inline voidiw_sockets_close(int skfd){ close(skfd);}/*------------------------------------------------------------------*//* Backwards compatability * Actually, those form are much easier to use when dealing with * struct sockaddr... */static inline char*iw_pr_ether(char* bufp, const unsigned char* addr){ iw_ether_ntop((const struct ether_addr *) addr, bufp); return bufp;}/* Backwards compatability */static inline intiw_in_ether(const char *bufp, struct sockaddr *sap){ sap->sa_family = ARPHRD_ETHER; return iw_ether_aton(bufp, (struct ether_addr *) sap->sa_data) ? 0 : -1;}/*------------------------------------------------------------------*//* * Create an Ethernet broadcast address */static inline voidiw_broad_ether(struct sockaddr *sap){ sap->sa_family = ARPHRD_ETHER; memset((char *) sap->sa_data, 0xFF, ETH_ALEN);}/*------------------------------------------------------------------*//* * Create an Ethernet NULL address */static inline voidiw_null_ether(struct sockaddr *sap){ sap->sa_family = ARPHRD_ETHER; memset((char *) sap->sa_data, 0x00, ETH_ALEN);}#ifdef __cplusplus}#endif#endif /* IWLIB_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -