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

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

cmsg(3) - Linux man page

2019-11-14 12:47:58
字體:
來源:轉載
供稿:網友

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)
上一篇:list容器

下一篇:list容器

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品高清一区二区三区| 尤物精品国产第一福利三区| 伊人久久久久久久久久| 国产主播欧美精品| 亚洲精品久久久一区二区三区| 国产精品嫩草影院一区二区| 国产999在线观看| 日本午夜精品理论片a级appf发布| 欧美激情国产日韩精品一区18| 国产婷婷成人久久av免费高清| 中日韩午夜理伦电影免费| 亚洲精品自拍视频| 亚洲国产欧美精品| 久久精品国产亚洲| 国产一区二区三区网站| 高清亚洲成在人网站天堂| 最新的欧美黄色| 亚洲天堂久久av| 正在播放欧美一区| 日韩成人av一区| 中文字幕最新精品| 精品偷拍一区二区三区在线看| 国产一区二区三区四区福利| 亚洲精品国产综合区久久久久久久| 国产精品毛片a∨一区二区三区|国| www.久久草.com| 亚洲激情第一页| 久久影院模特热| 久久99国产精品久久久久久久久| 91国偷自产一区二区三区的观看方式| 国产一区二区三区直播精品电影| 这里只有精品视频| 欧美黄色性视频| 日本精品久久电影| 欧美激情视频在线免费观看 欧美视频免费一| 97超碰国产精品女人人人爽| 91网在线免费观看| 性色av一区二区三区红粉影视| 精品小视频在线| 亚洲精品欧美日韩| 国产精品久久久久久久久男| 日韩理论片久久| 69视频在线播放| 欧美日韩中文字幕| 亚洲影院色在线观看免费| 91国语精品自产拍在线观看性色| 日韩高清免费观看| 在线播放精品一区二区三区| 91久久久久久国产精品| 亚洲精品一区二区三区不| 欧美大片在线影院| 正在播放亚洲1区| 国产免费久久av| 国产日韩欧美夫妻视频在线观看| 中文字幕精品www乱入免费视频| 亚洲天天在线日亚洲洲精| 国产美女久久精品| 日韩av在线免费观看一区| 日韩在线观看网站| 国产色婷婷国产综合在线理论片a| 亚洲欧洲成视频免费观看| 国产在线视频一区| 久久综合久久八八| 91久久嫩草影院一区二区| 亚洲成人黄色网| 国产精品第100页| 日韩中文字幕欧美| 亚洲视频专区在线| 久久久之久亚州精品露出| 欧美视频在线免费看| 亚洲无线码在线一区观看| 成人午夜两性视频| 国产视频精品免费播放| 欧美日韩裸体免费视频| 97在线观看免费高清| 久久久久国产一区二区三区| 欧美二区在线播放| 精品亚洲一区二区三区四区五区| 日韩av在线免费观看| 综合欧美国产视频二区| 91极品视频在线| 国产精品午夜国产小视频| 中文字幕亚洲欧美日韩在线不卡| 国模精品系列视频| 国产91露脸中文字幕在线| 欧美激情久久久久久| 韩国v欧美v日本v亚洲| 国产日韩欧美中文在线播放| 最近2019年日本中文免费字幕| 亚洲xxxxx| 国产亚洲精品一区二555| 欧美高清在线播放| 欧美国产高跟鞋裸体秀xxxhd| 欧美日韩精品在线观看| 亚洲国产精品99久久| 日韩在线视频播放| 国产精品免费电影| 国产精品视频内| 法国裸体一区二区| 欧美视频一区二区三区…| 久久人人爽人人爽人人片av高清| 97在线精品国自产拍中文| 精品激情国产视频| 在线日韩欧美视频| 97av视频在线| 庆余年2免费日韩剧观看大牛| 久久久国产精品免费| 美女久久久久久久| 亚洲男人天堂九九视频| 日韩精品在线视频美女| 国产激情久久久久| 亚洲天堂第一页| 精品久久久久久久久中文字幕| 日韩高清不卡av| 国产精品视频不卡| 亚洲日本成人女熟在线观看| 国产精品第七十二页| 中文字幕亚洲综合久久筱田步美| 日韩av中文字幕在线免费观看| 97精品视频在线| 久久五月情影视| 亚洲新声在线观看| 国产一区二区三区视频| 日韩精品在线免费播放| 91精品国产综合久久香蕉922| 一本色道久久88综合日韩精品| 国产精品精品久久久久久| 国产欧美一区二区三区视频| 欧美激情在线观看| 国产精品扒开腿做爽爽爽的视频| 91社影院在线观看| 国产一区二区三区视频| 日韩在线视频播放| 亚洲视频在线观看网站| 日韩视频免费大全中文字幕| 亚洲97在线观看| 成人性生交大片免费观看嘿嘿视频| 国产精品热视频| 成人午夜小视频| 日韩精品免费电影| 久久精品亚洲热| 91av视频在线播放| 国产成人亚洲综合青青| 亚洲欧美另类在线观看| 欧洲亚洲免费视频| 黄网站色欧美视频| 亚洲精品中文字幕女同| 97精品在线观看| 国产成人精品视频在线观看| 亚洲国产精品福利| 69av视频在线播放| 亚洲国产福利在线| 97在线观看免费| 亚洲第一免费网站| 91久久夜色精品国产网站| 精品动漫一区二区三区| 黑人巨大精品欧美一区二区免费| 国产啪精品视频网站| 中文字幕亚洲一区二区三区| 亚洲剧情一区二区| 精品久久久久久中文字幕| 久久久久久久久久久人体| 精品久久久久久久久久久久久| 欧美理论电影网|