亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

cmsg(3) - Linux man page

2019-11-14 11:50:42
字體:
來源:轉載
供稿:網友

cmsg(3) - linux man page

Name

CMSG_ALIGN, CMSG_SPACE, CMSG_NXTHDR, CMSG_FIRSTHDR - access ancillary data

Synopsis

#include <sys/socket.h>

struct cmsghdr *CMSG_FIRSTHDR(struct msghdr *msgh);struct cmsghdr *CMSG_NXTHDR(struct msghdr *msgh, struct cmsghdr *cmsg);size_t CMSG_ALIGN(size_t length);size_t CMSG_SPACE(size_t length);size_t CMSG_LEN(size_t length);unsigned char *CMSG_DATA(struct cmsghdr *cmsg);

struct cmsghdr {    socklen_t cmsg_len;    /*數據字節數,包含頭部*/    int       cmsg_level;  /* originating PRotocol */    int       cmsg_type;   /* protocol-specific type */    /* followed by unsigned char cmsg_data[]; */};

Description

這些宏用于創建和訪問控制消息(也被稱為附加數據)--不是socket playload部分。這些控制信息包含接受報文的網絡接口,各種很少用的Header字段,一個擴展的錯誤描敘,文件描敘的集合,或者Unix UNIXcredentials。舉個例子,控制消息可以用來發送附加Header 字段比如IP 選項。通過調用sendmsg或者recvmsg 發送或者接受輔助數據。詳細信息可以參考man。

Ancillary data is a sequence of struct cmsghdr structures with appended data. This sequence should only be accessed using the macros described inthis manual page and never directly. See the specific protocol man pages for the available control message types. The maximum ancillary buffer size allowed persocket can be set using /proc/sys/net/core/optmem_max; see socket(7).

CMSG_FIRSTHDR() returns a pointer to the first cmsghdr in the ancillary data buffer associated with the passedmsghdr.

CMSG_NXTHDR() returns the next valid cmsghdr after the passedcmsghdr. It returns NULL when there isn't enough space left in thebuffer.

CMSG_ALIGN(), given a length, returns it including the required alignment. This is a constant expression.

CMSG_SPACE() returns the number of bytes an ancillary element with payload of the passed data length occupies. This is a constant expression.

CMSG_DATA() returns a pointer to the data portion of a cmsghdr.

CMSG_LEN() returns the value to store in the cmsg_len member of thecmsghdr structure, taking into account any necessary alignment. Ittakes the data length as an argument. This is a constant expression.

To create ancillary data, first initialize the msg_controllen member of themsghdr with the length of the control message buffer. UseCMSG_FIRSTHDR() on themsghdr to get the first control message and CMSG_NXTHDR() to get all subsequent ones. In each control message,initializecmsg_len (with CMSG_LEN()), the other cmsghdr header fields, and the data portion usingCMSG_DATA(). Finally, themsg_controllen field of the msghdr should be set to the sum of the CMSG_SPACE() of the length of all control messages in the buffer. Formore information on themsghdr, see recvmsg(2).

When the control message buffer is too short to store all messages, the MSG_CTRUNC flag is set in the msg_flags member of themsghdr.

Conforming To

This ancillary data model conforms to the POSIX.1g draft, 4.4BSD-Lite, the IPv6 advanced API described in RFC 2292 and the SUSv2.CMSG_ALIGN() is aLinux extension.

Notes

For portability, ancillary data should be accessed only using the macros described here.CMSG_ALIGN() is a Linux extension and should be not used inportable programs.

In Linux, CMSG_LEN(), CMSG_DATA(), and CMSG_ALIGN() are constant expressions (assuming their argument is constant); this could be usedto declare the size of global variables. This may be not portable, however.

Example

This code looks for the IP_TTL option in a received ancillary buffer:

struct msghdr msgh;struct cmsghdr *cmsg;int *ttlptr;int received_ttl;/* Receive auxiliary data in msgh */for (cmsg = CMSG_FIRSTHDR(&msgh); cmsg != NULL;        cmsg = CMSG_NXTHDR(&msgh,cmsg)) {    if (cmsg->cmsg_level == IPPROTO_IP            && cmsg->cmsg_type == IP_TTL) {        ttlptr = (int *) CMSG_DATA(cmsg);        received_ttl = *ttlptr;        break;    }}if (cmsg == NULL) {    /*     * Error: IP_TTL not enabled or small buffer     * or I/O error.     */}The code below passes an array of file descriptors over a UNIX domain socket usingSCM_RIGHTS:
struct msghdr msg = {0};struct cmsghdr *cmsg;int myfds[NUM_FD]; /* Contains the file descriptors to pass. */char buf[CMSG_SPACE(sizeof myfds)];  /* ancillary data buffer */int *fdptr;msg.msg_control = buf;msg.msg_controllen = sizeof buf;cmsg = CMSG_FIRSTHDR(&msg);cmsg->cmsg_level = SOL_SOCKET;cmsg->cmsg_type = SCM_RIGHTS;cmsg->cmsg_len = CMSG_LEN(sizeof(int) * NUM_FD);/* Initialize the payload: */fdptr = (int *) CMSG_DATA(cmsg);memcpy(fdptr, myfds, NUM_FD * sizeof(int));/* Sum of the length of all control messages in the buffer: */msg.msg_controllen = cmsg->cmsg_len;

See Also

recvmsg(2),sendmsg(2)

RFC 2292

Referenced By

ipv6(7),netlink(3),netlink(7),recv(2),rtnetlink(7),send(2),unix(7)
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩精品高清在线观看| 中文字幕一区二区精品| 欧美裸体xxxx极品少妇| 国产精品久久久久久婷婷天堂| 92国产精品久久久久首页| 精品久久久久久久久久久久| 亚洲欧美另类在线观看| 亚洲精品456在线播放狼人| 久久久久五月天| 国产精品最新在线观看| 久久免费精品日本久久中文字幕| 成人午夜在线视频一区| 欧美久久精品午夜青青大伊人| 欧美激情视频在线观看| 日韩经典中文字幕在线观看| 日韩中文字幕免费| 久久99久国产精品黄毛片入口| 欧美成人剧情片在线观看| 在线播放亚洲激情| 国内精品久久影院| 51午夜精品视频| 欧美专区在线观看| 欧美黑人视频一区| 国产日韩专区在线| 精品久久久久久久久久久久| 少妇高潮 亚洲精品| 亚洲自拍在线观看| 亚洲国产私拍精品国模在线观看| 播播国产欧美激情| 欧美性xxxx极品高清hd直播| 国产欧美日韩专区发布| 久久在线免费视频| 日本久久久久久| 91免费的视频在线播放| 欧美性猛交xxxx黑人猛交| 亚洲精品国产精品国产自| 在线色欧美三级视频| 国产成人在线一区二区| 亚洲电影在线看| 国产一区二区日韩精品欧美精品| 欧美高清视频在线观看| 日韩激情片免费| 一区二区成人av| 国产午夜精品全部视频播放| 国产精品激情av电影在线观看| 综合激情国产一区| 久久躁狠狠躁夜夜爽| 久久香蕉国产线看观看av| 国产亚洲精品久久久久动| 欧美电影免费观看| 欧美最猛性xxxxx(亚洲精品)| 国产成一区二区| 成人免费在线视频网址| 97超级碰碰人国产在线观看| 久久人人爽人人爽爽久久| 国产欧美最新羞羞视频在线观看| 国产一区二区三区欧美| 国产精品欧美一区二区三区奶水| 欧美亚洲一级片| 欧洲成人在线观看| 国产成+人+综合+亚洲欧美丁香花| 4388成人网| 久久精品久久久久| 日韩大片免费观看视频播放| 成人网在线免费看| 操人视频在线观看欧美| 成人www视频在线观看| 欧美激情中文字幕乱码免费| 亚洲国产日韩欧美在线动漫| 久久中文字幕在线视频| 最近2019中文字幕大全第二页| 久久久亚洲网站| 在线观看日韩av| 亚洲第一色中文字幕| 亚洲一区二区三区久久| 久99久在线视频| 亚洲欧美中文在线视频| 91精品国产综合久久久久久久久| 亚洲精品理论电影| 欧美亚洲在线视频| 日韩激情视频在线播放| 国产精品美女网站| 日韩精品极品视频| 91精品国产自产91精品| 亚洲性线免费观看视频成熟| 亚洲电影免费观看高清完整版| 精品久久久久久久久久久久| 91在线视频一区| 亚洲女人天堂视频| 深夜精品寂寞黄网站在线观看| 日本久久久久久| 成人国内精品久久久久一区| 日韩高清电影免费观看完整| 国产日韩在线精品av| 成人乱色短篇合集| 97精品伊人久久久大香线蕉| 国产女精品视频网站免费| 伊人久久久久久久久久久| 亚洲成色777777女色窝| 日韩国产精品视频| 91超碰caoporn97人人| 国产69精品久久久久9999| 日韩中文字幕在线视频| 成人av色在线观看| 国产精品国产三级国产aⅴ浪潮| 亚洲欧美激情视频| 国产精品成av人在线视午夜片| 亚洲美女www午夜| 亚洲无限乱码一二三四麻| 疯狂蹂躏欧美一区二区精品| 国产日韩精品电影| 亚洲欧美在线一区| 日韩精品中文字| 午夜精品久久久久久99热| 日韩在线视频导航| 欧美电影免费观看高清| 亚洲精品国产福利| 欧美久久精品一级黑人c片| 日韩av成人在线观看| 欧美人成在线视频| 亚洲国产精品嫩草影院久久| 在线精品国产成人综合| 欧美中文字幕视频| 日韩三级影视基地| 亚洲va国产va天堂va久久| 亚洲系列中文字幕| 国产玖玖精品视频| 日韩美女在线观看| 亚洲国产精品电影在线观看| 日韩电影中文字幕在线| 精品国产一区二区三区久久狼黑人| 日韩精品中文字幕久久臀| 欧美在线国产精品| 一本色道久久88综合亚洲精品ⅰ| 亚洲成人xxx| 在线看片第一页欧美| 成人激情视频在线观看| 久久理论片午夜琪琪电影网| 精品国产91久久久久久老师| 精品视频在线播放| 亚洲999一在线观看www| 亚洲精品www久久久久久广东| 欧美大胆在线视频| 九九久久久久久久久激情| 欧美裸体xxxx极品少妇软件| 欧美裸体xxxx极品少妇| 亚洲欧美日韩精品久久奇米色影视| 91久久综合亚洲鲁鲁五月天| 97在线观看视频| 91亚洲精品久久久久久久久久久久| 亚洲国产天堂网精品网站| 久久久久久亚洲精品不卡| 秋霞午夜一区二区| 免费99精品国产自在在线| 日韩成人中文字幕| 亚洲美女精品成人在线视频| 亚洲精品中文字幕有码专区| 91亚洲精品视频| 97香蕉久久夜色精品国产| 国产精品黄页免费高清在线观看| 在线观看国产欧美| 亚洲成人在线网| 欧美丝袜第一区| 久久久精品日本|