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

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

cmsg(3) - Linux man page

2019-11-14 11:19:57
字體:
來源:轉載
供稿:網友

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
国产精品91久久久久久| 欧美大片免费观看| 国产精品国产亚洲伊人久久| 91在线精品播放| 午夜欧美不卡精品aaaaa| 日韩av资源在线播放| 欧美精品在线免费| 久久综合久久美利坚合众国| 国产视频在线一区二区| 欧美亚洲成人免费| 亚洲精品videossex少妇| 精品美女永久免费视频| 91成人免费观看网站| 久久精品国亚洲| 91精品视频观看| 97在线免费视频| 亚洲精品成人免费| 在线色欧美三级视频| 成人免费看吃奶视频网站| 深夜福利国产精品| 欧美激情一级精品国产| 国产精品视频久久| 毛片精品免费在线观看| 国产99视频精品免视看7| 国产97在线|日韩| 日韩中文字幕欧美| 欧美日韩免费一区| 久久久中精品2020中文| 92国产精品视频| 精品久久久久久久大神国产| 国产欧美精品久久久| 欧美激情影音先锋| 国产99久久精品一区二区永久免费| 国产精品久久久久久搜索| 欧洲成人性视频| 国产精品一区二区久久精品| 亚洲另类欧美自拍| 国产精品免费一区二区三区都可以| 亚洲黄色av女优在线观看| 国产深夜精品福利| 91精品国产99| 国产精品美乳一区二区免费| 亚洲成avwww人| 日本一区二区三区在线播放| 国产极品jizzhd欧美| 4438全国亚洲精品在线观看视频| 亚洲精品电影在线观看| 精品成人乱色一区二区| 亚洲国内精品视频| 国产精品极品在线| 亚洲第一中文字幕| 精品亚洲永久免费精品| 亚洲美女精品成人在线视频| 国产精品69久久| 一本大道香蕉久在线播放29| 亚洲人成在线观看网站高清| 国产精品自拍视频| 亚洲国产精品久久精品怡红院| 久久久久久久久综合| 欧美大片第1页| 久久国产精品视频| 日韩av毛片网| 91嫩草在线视频| 午夜精品久久久久久久99热| 精品久久久在线观看| 国产欧美va欧美va香蕉在线| 欧美一区二区三区图| 亚洲综合最新在线| 最近中文字幕mv在线一区二区三区四区| 欧美激情一二三| 欧美孕妇性xx| 欧美亚洲另类在线| 国产在线视频不卡| www国产精品com| 这里只有精品视频| 福利二区91精品bt7086| 日本精品一区二区三区在线| 亚州精品天堂中文字幕| 91天堂在线观看| 欧美成人一二三| 欧美国产日韩一区二区在线观看| 国产丝袜高跟一区| 国产欧美日韩中文字幕在线| 亚洲最新在线视频| 日韩在线视频观看正片免费网站| 大胆欧美人体视频| 国产精品尤物福利片在线观看| 在线成人免费网站| 国产免费成人av| 欧美黑人xxxⅹ高潮交| 久久综合五月天| 中文字幕日韩精品在线| 日韩免费黄色av| 国产精品视频自拍| 欧美在线中文字幕| 最近中文字幕日韩精品| xvideos成人免费中文版| 最近2019中文字幕一页二页| 欧美在线亚洲在线| 综合国产在线视频| 91理论片午午论夜理片久久| www.美女亚洲精品| 久久99久久99精品免观看粉嫩| 欧美大片在线影院| 亚洲有声小说3d| 国产成人在线一区二区| 国产精品久久电影观看| 欧美精品成人91久久久久久久| 亚洲色图欧美制服丝袜另类第一页| 日韩在线国产精品| 少妇高潮 亚洲精品| 国产精品久久久久aaaa九色| 国产在线久久久| 久久精品国产亚洲| 成人日韩在线电影| 97**国产露脸精品国产| 欧美亚洲免费电影| 亚洲精品视频久久| 精品久久久久久中文字幕一区奶水| 欧美成人性生活| 亚洲综合中文字幕在线| 欧美性黄网官网| 97碰在线观看| 最近2019中文免费高清视频观看www99| 精品亚洲国产视频| 免费91麻豆精品国产自产在线观看| 久久韩国免费视频| 亚洲理论在线a中文字幕| 97国产精品免费视频| 国产乱人伦真实精品视频| 国产精品美女主播在线观看纯欲| 91久久精品久久国产性色也91| 久久国产加勒比精品无码| 精品香蕉在线观看视频一| 亚洲影视中文字幕| 亚洲人成在线观看| 精品国产依人香蕉在线精品| 国产精品入口夜色视频大尺度| 精品国产一区二区三区久久久狼| 国产精品吹潮在线观看| 久久国产视频网站| 69av视频在线播放| 欧美一级片久久久久久久| 亚洲精品在线观看www| 欧美一级大片在线观看| 欧美激情女人20p| 自拍偷拍亚洲一区| 国产精品视频精品视频| 久久这里有精品视频| 国产精品r级在线| 国模精品视频一区二区三区| 夜夜嗨av一区二区三区四区| 欧美网站在线观看| 亚洲精品日韩在线| 成人精品福利视频| 成人午夜在线视频一区| 国产精品一香蕉国产线看观看| 日韩av毛片网| y97精品国产97久久久久久| 色狠狠av一区二区三区香蕉蜜桃| 日韩免费看的电影电视剧大全| 日本精品一区二区三区在线| 国产精品主播视频| 国产欧美韩国高清|