亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? tlv.h

?? Vista 核心Rally技術之-LLTD 實現源代碼
?? H
字號:
/*
 * LICENSE NOTICE.
 *
 * Use of the Microsoft Windows Rally Development Kit is covered under
 * the Microsoft Windows Rally Development Kit License Agreement,
 * which is provided within the Microsoft Windows Rally Development
 * Kit or at http://www.microsoft.com/whdc/rally/rallykit.mspx. If you
 * want a license from Microsoft to use the software in the Microsoft
 * Windows Rally Development Kit, you must (1) complete the designated
 * "licensee" information in the Windows Rally Development Kit License
 * Agreement, and (2) sign and return the Agreement AS IS to Microsoft
 * at the address provided in the Agreement.
 */

/*
 * Copyright (c) Microsoft Corporation 2005.  All rights reserved.
 * This software is provided with NO WARRANTY.
 */

#ifndef TLV_H
#define TLV_H

typedef struct {
    etheraddr_t MACaddr;
    uint16_t    MOR;
    uint8_t     PHYtype;
} assn_table_entry_t;

#define SIZEOF_PKT_ASSN_TABLE_ENTRY 10          // bytes, when packed on the wire...

typedef struct {
    assn_table_entry_t    *table;
    uint                   assn_cnt;            // number of entries in the allocated table
    struct timeval         collection_time;     // timestamp when table was generated
} assns_t;

typedef struct {
    size_t       sz_iconfile;
    int          fd_icon;
} icon_file_t;

typedef struct {
    size_t       sz_iconfile;
    int          fd_icon;
} lg_icon_t;

typedef enum {
    Bridge_Component = 0,
    RadioBand_Component,
    Switch_Component
} component_t;

typedef struct {
    uint16_t    MOR;
    uint8_t     PHYtype;
    uint8_t     mode;
    etheraddr_t BSSID;
} radio_t;

typedef struct {
    uint8_t     version;
    uint8_t     bridge_behavior;        // 0xFF => no bridge
    uint32_t    link_speed;             // 0xFFFFFFFF => no switch
    int         radio_cnt;
    radio_t    *radios;
} comptbl_t;


typedef enum {
    Access_invalid,	// placeholders - will never be init'd or written
    Access_unset,	// for TLVs that will become "Access_static" once they are init'd
    Access_static,	// TLVs that only require one initialization, and are const thereafter
    Access_dynamic	// TLVs that require freshly-gathered data each time they are written
} tlv_access_t;

/* Struct contains storage for the actual tlv data (or a pointer to that storage, if data has a
 * variable length) for each tlv.
 * Each TLVDEF in this struct generates a uniquely named data element.
 */
typedef struct _tlv_info {
#define TLVDEF(_Ctype, _name, _repeat, _number, _access, _inHello) \
    _Ctype _name _repeat;
#include "tlvdef.h"
#undef TLVDEF
} tlv_info_t;

/* A "tlv_get_fn" creates an instance of the TLV's data, and puts that data (or a pointer to
 * the data itself, as required by the corresponding companion "tlv_write_fn" described next)
 * into the tlv_info_t structure's data field for this TLV-type. There will always be one unique
 * tlv_get_fn for each TLV, since all such data will be derived from a unique source.
 *
 * This "tlv_get_fn" will be called only by the function "tlv_write_info()". For each TLV marked
 * "Access_unset", tlv_write_info() will call the tlv_get_fn only once (the first time the data
 * value is to be written), and then mark that TLV as "Access_static". Each TLV marked "Access_dynamic"
 * will result in tlv_write_info() calling the tlv_get_fn each time the data is to be written by the
 * corresponding tlv_write_fn. TLVs marked "Access_static" will be written from data pre-loaded when it
 * was marked "Access_unset".
 * Those TLVs marked "Access_invalid" will never have their corresponding tlv_get_fn called (though
 * those tlv_get_fn's must exist, if only as a skeleton, in order to compile successfully);
 * likewise, TLVs marked "Access_invalid" will never have their tlv_write_fn called at all.
 */

#define TLV_GET_FAILED    0
#define TLV_GET_SUCCEEDED 1

typedef int (*tlv_get_fn)(void *data);

/* A "tlv_write_fn" writes a TLV ("Type", "Length", and "Value") for "data" to "buf" and
 * returns how many bytes of buf it consumed.  The TLV "Type" is "number", and the "Length" is
 * known automatically by the (often shared) writer routine for this TLV. The "Value" is found
 * using the "data" pointer in a way unique to each writer. "data" is an offset into the storage
 * defined by the tlv_info_t, which may be used to hold the actual TLV "Value", a pointer to
 * such a "Value", or in any other way that is meaningful to the convention established between
 * an individual tlv_get_fn and its associated tlv_write_fn (writer routine).
 * The flag "isHello" tells the writer what format to write in - Hello-style TLV (if TRUE) or
 * QueryLargeTLV style (if anything but TRUE). The flag "isLarge" is ignored unless isHello
 * is TRUE, when it determines whether to force the small TLV to report as LargeTLV.
 * Finally, the "offset" parameter is used to seek in largeTLVs that need it, in order to
 * return the correct segment of data, when the data extends over a greater span than fits
 * into one packet (the classic use for LargeTLVs). It is otherwise ignored, and may be NULL.
 *
 * The return value carries the number of bytes actually written to the buffer.   */

typedef int (*tlv_write_fn)(int number, void *data, uint8_t *buf, int bytes_free, bool_t isHello, bool_t isLarge, size_t offset);

/* Struct to hold an offset into the tlv_info_t of the tlv's data, as well as access-modes and
 * pointers to get_fn's and write_fn's for each tlv. Because this struct is fixed-length, an array
 * of such structures can be indexed by TLV protocol number to read or write the tlv data. */
typedef struct {
    int	number;		 /* TLV protocol number (aka "Type") */
    int offset; 	 /* offset of (data or ptr) from start of tlv_info_t struct, in bytes */
    tlv_access_t access; /* access-mode indicator (invalid, unset, static, or dynamic */
    bool_t       inHello;/* TRUE if Hello is allowed to return it - QLTLV can ALWAYS return it. */
    tlv_get_fn   get;    /* suitable function to populate the tlv_info struct for the writer */
    tlv_write_fn write;  /* suitable function to write it to network buffer */
} tlv_desc_t;

extern tlv_desc_t  Tlvs[];

/* Serialise "info" into a Hello frame, at position "buf" where "bytes_free"
 * are available.  Returns the number of bytes consumed. */
extern int tlv_write_info(uint8_t *buf, int bytes_free);

/* Serialize a single tlv into either Hello format (isHello=TRUE) or QueryLargeTlvResp format.
 * Returns the number of bytes consumed. */
extern int tlv_write_tlv(tlv_desc_t *tlv, uint8_t *buf, int bytes_free, bool_t isHello, size_t LtlvOffset);

#endif /* TLV_H */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色综合久久中文字幕| 色婷婷久久99综合精品jk白丝 | 麻豆免费看一区二区三区| 视频一区视频二区中文字幕| 国产精品一线二线三线| 成人一级黄色片| 欧美女孩性生活视频| 久久色在线观看| 亚洲国产欧美一区二区三区丁香婷| 欧美一区二区三区四区在线观看| av不卡免费在线观看| 欧美日韩mp4| 中文字幕永久在线不卡| 久久精品国产精品亚洲红杏 | 欧美日韩大陆一区二区| 亚洲精品一区二区三区香蕉| 亚洲美女电影在线| 国内精品伊人久久久久影院对白| 日韩国产在线观看| 91亚洲大成网污www| 欧美tk丨vk视频| 亚洲第一精品在线| 国产精品综合在线视频| 欧美伦理影视网| 亚洲自拍偷拍网站| av成人动漫在线观看| 国产亚洲一二三区| 蜜臂av日日欢夜夜爽一区| 精品视频资源站| 亚洲男同1069视频| 国产成人精品aa毛片| 国产亚洲精品中文字幕| 国产麻豆一精品一av一免费| 久久久久国产精品麻豆| 成人免费高清在线观看| 国产精品国产精品国产专区不蜜 | 一区二区日韩av| 91理论电影在线观看| 亚洲精品美腿丝袜| 欧美亚洲愉拍一区二区| 午夜伊人狠狠久久| 日韩欧美资源站| 国产乱码字幕精品高清av | fc2成人免费人成在线观看播放 | 91丨porny丨首页| 亚洲欧美日韩一区二区| 欧美亚洲图片小说| 日本不卡视频一二三区| 欧美一级久久久| 国产一区在线看| 国产精品国产三级国产专播品爱网| 首页国产欧美日韩丝袜| 精品国产欧美一区二区| 粉嫩aⅴ一区二区三区四区五区| 在线精品视频免费播放| 午夜在线成人av| 久久中文娱乐网| 日本乱码高清不卡字幕| 麻豆成人久久精品二区三区红| 日本久久一区二区三区| 蜜臀精品久久久久久蜜臀| 久久九九全国免费| 欧美天堂亚洲电影院在线播放| 精品国产乱子伦一区| 99re这里只有精品视频首页| 日日夜夜免费精品视频| 欧美国产精品专区| 8x福利精品第一导航| 高清不卡在线观看av| 午夜精品福利一区二区三区av | 国产精品对白交换视频 | 成人动漫精品一区二区| 亚洲一区二区三区自拍| 国产亚洲一二三区| 欧美三电影在线| 成人免费看视频| 视频精品一区二区| 国产精品久久久久久久裸模| 欧美剧情片在线观看| 成人av高清在线| 狠狠色综合日日| 亚洲3atv精品一区二区三区| 欧美激情中文不卡| 欧美一区永久视频免费观看| 色婷婷av一区二区三区大白胸| 亚洲精品国产一区二区三区四区在线 | 日韩成人精品视频| 国产精品人妖ts系列视频| 666欧美在线视频| 色婷婷一区二区三区四区| 成人深夜在线观看| 国内精品嫩模私拍在线| 免费看日韩a级影片| 亚洲综合另类小说| 亚洲丝袜另类动漫二区| 欧美国产日本韩| 国产三级久久久| 精品国产凹凸成av人导航| 717成人午夜免费福利电影| 在线观看视频91| 色老综合老女人久久久| 99久久精品99国产精品| 大胆欧美人体老妇| 国产精品一区二区黑丝| 麻豆91精品91久久久的内涵| 亚洲成人免费观看| 午夜一区二区三区视频| 亚洲成人自拍偷拍| 亚洲成人久久影院| 午夜久久久影院| 丝瓜av网站精品一区二区| 午夜精品久久久久久久久| 午夜精品久久久久久久99水蜜桃| 久久综合丝袜日本网| 欧美电影免费观看高清完整版在 | 成人免费观看av| 成人性生交大片免费看中文 | 成人欧美一区二区三区1314| 久久亚洲捆绑美女| 国产亚洲综合色| 国产精品成人免费精品自在线观看| 欧美日韩一区二区三区在线 | 成人精品免费视频| 国产mv日韩mv欧美| caoporen国产精品视频| 91免费版在线| 欧美日韩在线观看一区二区 | 色综合一个色综合| 日韩欧美电影在线| 欧美一区二区视频免费观看| 日韩欧美美女一区二区三区| 精品国产乱码久久| 国产精品久久三| 一个色综合网站| 麻豆精品一区二区三区| 国产综合成人久久大片91| 成人免费电影视频| 成人激情小说网站| 欧美日韩一级片网站| 欧美一区午夜精品| 久久一留热品黄| 亚洲视频一二三| 日韩精彩视频在线观看| 国产成人99久久亚洲综合精品| 蜜臀久久久久久久| 高清久久久久久| 欧美日韩aaaaa| 国产精品欧美一区喷水| 亚洲一区免费视频| 国产一区二区三区综合| 日本韩国欧美一区| 欧美精品一区二区在线观看| 国产午夜精品美女毛片视频| 亚洲情趣在线观看| 久久99精品国产91久久来源| 91在线看国产| 日韩精品中文字幕一区| 亚洲另类在线视频| 韩日av一区二区| 欧美无人高清视频在线观看| 久久一区二区视频| 亚洲1区2区3区视频| 国产成人av电影在线播放| 欧美精三区欧美精三区| 国产精品久久二区二区| 久久精品99国产精品| 欧美性色aⅴ视频一区日韩精品| 日本精品视频一区二区三区| 日韩三级伦理片妻子的秘密按摩| 欧美一区二区三区性视频| 亚洲精品视频观看| 丁香激情综合五月| 欧美电影免费观看高清完整版在线 | 99国产精品国产精品毛片| 911精品国产一区二区在线| 亚洲人成精品久久久久久| 久久99久久久久久久久久久| 欧美在线免费观看亚洲| 国产精品妹子av| 国产东北露脸精品视频| 精品日韩欧美在线| 男人的天堂亚洲一区| 欧美男人的天堂一二区| 一区二区三区精密机械公司| 成人免费观看视频| 国产午夜精品在线观看| 免费人成网站在线观看欧美高清| 狠狠色丁香婷婷综合久久片| 日韩一区二区影院| 奇米一区二区三区| 欧美三级视频在线观看| 午夜欧美电影在线观看| 欧美日韩黄视频| 天使萌一区二区三区免费观看| 精品一区二区三区在线播放视频| 精品一区二区三区免费视频| 欧美一区二区观看视频| 另类欧美日韩国产在线| 欧美成人激情免费网| 国模一区二区三区白浆|