|
|||||||
|
|
CMSGSection: Linux Programmer's Manual (3)Updated: 2 Oct 1998 Index Return to Main Contents ̾Á°CMSG_ALIGN, CMSG_SPACE, CMSG_NXTHDR, CMSG_FIRSTHDR - Êä½õ¥Ç¡¼¥¿¤Ë¥¢¥¯¥»¥¹¤¹¤ë¡£½ñ¼°#include <sys/socket.h>
struct cmsghdr *CMSG_FIRSTHDR(struct msghdr *msgh);
struct cmsghdr {
socklen_t cmsg_len; /* data byte count, including header */
int cmsg_level; /* originating protocol */
int cmsg_type; /* protocol-specific type */
/* followed by unsigned charcmsg_data[]; */
};
ÀâÌÀ¤³¤ì¤é¤Î¥Þ¥¯¥í¤ÏÀ©¸æ¥á¥Ã¥»¡¼¥¸ (Êä½õ¥Ç¡¼¥¿ (ancillary data) ¤È¤â¸Æ¤Ð¤ì¤ë) ¤òºî¤ê¡¢ ¤½¤ì¤Ë¥¢¥¯¥»¥¹¤¹¤ë¤¿¤á¤Ë»È¤ï¤ì¤ë¡£ À©¸æ¥á¥Ã¥»¡¼¥¸¤Ï¥½¥±¥Ã¥È¤Ë¤Î¤ë¥Ç¡¼¥¿¤Ç¤Ï¤Ê¤¤¡£ ¤³¤ÎÀ©¸æ¾ðÊó¤Ï¡¢ÅþÃ夷¤¿¥Ñ¥±¥Ã¥È¤Ø¤Î¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹¡¢ÍÍ¡¹¤Ê¤¢¤Þ¤ê »È¤ï¤ì¤Ê¤¤¥Ø¥Ã¥À¡¼¥Õ¥£¡¼¥ë¥É¡¢¥¨¥é¡¼µ½Ò¤Î³ÈÄ¥¡¢¥Õ¥¡¥¤¥ë¥Ç¥¹¥¯¥ê ¥×¥¿¤Î½¸¹ç¤ä¡¢unix¤Ë¤ª¤±¤ë¿®Íê¾ðÊó (credential) ¤ò´Þ¤ó¤Ç¤¤¤ë¡£ À©¸æ¥á¥Ã¥»¡¼¥¸¤Ï¡¢Î㤨¤Ð IP ¥ª¥×¥·¥ç¥ó¤Î¤è¤¦¤ÊÄɲåإåÀ¡¼¥Õ¥£¡¼¥ë¥É¤ò Á÷¤ë¤Î¤Ë»È¤¦»ö¤¬¤Ç¤¤ë¡£ Êä½õ¥Ç¡¼¥¿¤Ï¡¢ sendmsg(2) ¤ò¸Æ¤Ó½Ð¤·¤ÆÁ÷¤ê¡¢ recvmsg(2) ¤ò¸Æ¤Ó½Ð¤·¤Æ¼õ¤±¼è¤ë¡£ ¾ÜºÙ¤Ï¤½¤ì¤é¤Î¥Þ¥Ë¥å¥¢¥ë¥Ú¡¼¥¸¤ò»²¾È¡£Êä½õ¥Ç¡¼¥¿¤Ï struct cmsghdr ¹½Â¤ÂΤΥ·¡¼¥±¥ó¥¹¤ËÄɲåǡ¼¥¿¤¬Éղ䵤줿¤â¤Î¤Ç¤¢¤ë¡£ ¤³¤Î¥·¡¼¥±¥ó¥¹¤Ë¤Ï¤³¤Î¥Þ¥Ë¥å¥¢¥ë¥Ú¡¼¥¸¤Ë½ñ¤«¤ì¤Æ¤¤¤ë ¥Þ¥¯¥í¤ò»È¤Ã¤Æ¥¢¥¯¥»¥¹¤¹¤Ù¤¤Ç¡¢Ä¾ÀÜ¥¢¥¯¥»¥¹¤¹¤Ù¤¤Ç¤Ï¤Ê¤¤¡£ »ÈÍѲÄǽ¤ÊÀ©¸æ¥á¥Ã¥»¡¼¥¸¤Î¥¿¥¤¥×¤Ë¤Ä¤¤¤Æ¤Ï¡¢ ¤½¤ì¤¾¤ì¤Î¥×¥í¥È¥³¥ë¤Î¥Þ¥Ë¥å¥¢¥ë¥Ú¡¼¥¸¤ò»²¾È¤Î¤³¤È¡£ ÀܳËè¤ÎºÇÂçÊä½õÍѥХåե¡¥µ¥¤¥º¤Ï net.core.optmem_max sysctl ¤ò»È¤Ã¤ÆÀßÄê¤Ç¤¤ë¡£ socket(7) ¤ò»²¾È¡£ CMSG_FIRSTHDR ¤Ï¡¢ÅϤ·¤¿ msghdr ¤Ë´ØÏ¢¤·¤¿Êä½õ¥Ç¡¼¥¿¥Ð¥Ã¥Õ¥¡Ãæ¤Î¡¢ºÇ½é¤Î cmsghdr ¤Ø¤Î¥Ý¥¤¥ó¥¿¤òÊÖ¤¹¡£ CMSG_NXTHDR ¤Ï¡¢ÅϤ·¤¿ cmsghdr ¤Î¼¡¤Ë¤¯¤ë (͸ú¤Ê) cmsghdr ¤òÊÖ¤¹¡£ ¥Ð¥Ã¥Õ¥¡¤Ë½½Ê¬¤Ê¶õ¤¤¬Ìµ¤¤¾ì¹ç¡¢ NULL ¤òÊÖ¤¹¡£ CMSG_ALIGN ¤ËŤµ¤òÍ¿¤¨¤ë¤È¡¢É¬Íפʥ¢¥é¥¤¥ó¥á¥ó¥È¤ò²ÃÌ£¤·¤¿Ä¹¤µ¤òÊÖ¤·¤Æ¤¯¤ë¡£ ¤³¤ì¤ÏÄê¿ô¼°¤Ç¤¢¤ë¡£ CMSG_SPACE ¤Ï¡¢Í¿¤¨¤¿¥Ç¡¼¥¿Ä¹¤¬Àê¤á¤ë¤Î¤ËɬÍפÊÊä½õÍ×ÁÇ (ancillary element) ¤Î ¥Ð¥¤¥È¿ô¤òÊÖ¤¹¡£¤³¤ì¤ÏÄê¿ô¼°¤Ç¤¢¤ë¡£ CMSG_DATA ¤Ï¡¢ cmsghdr ¤Î¥Ç¡¼¥¿Éôʬ¤Ø¤Î¥Ý¥¤¥ó¥¿¤òÊÖ¤¹¡£ CMSG_LEN ¤Ï¡¢ cmsghdr ¹½Â¤ÂΤΠcmsg_len ¥á¥ó¥Ð¤Ë¥Ç¡¼¥¿¤ò³ÊǼ¤¹¤ëºÝ¤ËɬÍפÊÃͤòÊÖ¤¹¡£¥¢¥é¥¤¥ó¥á¥ó¥È¤â¹Íθ¤ËÆþ¤ì ¤é¤ì¤ë¡£ °ú¿ô¤È¤·¤Æ¥Ç¡¼¥¿Ä¹¤ò¤È¤ë¡£¤³¤ì¤ÏÄê¿ô¼°¤Ç¤¢¤ë¡£ Êä½õ¥Ç¡¼¥¿¤òºî¤ë¤¿¤á¤Ë¤ÏºÇ½é¤Ë msghdr ¤Î¥á¥ó¥Ð¡¼ msg_controllen ¤ò¡¢À©¸æ¥á¥Ã¥»¡¼¥¸¥Ð¥Ã¥Õ¥¡¤ÎŤµ¤Ç½é´ü²½¤¹¤ë¡£ CMSG_FIRSTHDR ¤ò msghdr ¤ËÍѤ¤¤ë¤ÈºÇ½é¤ÎÀ©¸æ¥á¥Ã¥»¡¼¥¸¤¬ÆÀ¤é¤ì¡¢ CMSG_NEXTHDR ¤ò»È¤¦¤È¼¡¤ÎÀ©¸æ¥á¥Ã¥»¡¼¥¸¤¬ÆÀ¤é¤ì¤ë¡£ ¤½¤ì¤¾¤ì¤ÎÀ©¸æ¥á¥Ã¥»¡¼¥¸¤Ç¤Ï¡¢ cmsg_len ¤ò½é´ü²½¤¹¤ë ( CMSG_LEN ¤ò»È¤¦)¡£ ¤½¤Î¾¤Î cmsghdr ¥Ø¥Ã¥À¡¼¥Õ¥£¡¼¥ë¥É¡¢¤½¤·¤Æ¥Ç¡¼¥¿Éôʬ¤ËÂФ·¤Æ¤â CMSG_LEN ¤ò»È¤Ã¤Æ½é´ü²½¤ò¤¹¤ë¡£ ºÇ¸å¤Ë msghdr ¤Î msg_controllen ¥Õ¥£¡¼¥ë¥É¤Ë¡¢¥Ð¥Ã¥Õ¥¡Ãæ¤ÎÀ©¸æ¥á¥Ã¥»¡¼¥¸¤ÎŤµ¤Î CMSG_SPACE ¤Î¹ç·×¤¬¥»¥Ã¥È¤µ¤ì¤ë¡£ msghdr ¤Ë¤Ä¤¤¤Æ¤Î¾ÜºÙ¤Ï recvmsg(2) ¤ò»²¾È¡£ À©¸æ¥á¥Ã¥»¡¼¥¸¥Ð¥Ã¥Õ¥¡¤¬Á´¤Æ¤Î¥á¥Ã¥»¡¼¥¸¤òǼ¤á¤ë¤Î¤Ë¤Ïû¤¹¤®¤ë¾ì¹ç¡¢ msghdr ¤Î msg_flags ¥á¥ó¥Ð¡¼¤Ë MSG_CTRUNC ¥Õ¥é¥°¤¬¥»¥Ã¥È¤µ¤ì¤ë¡£ Î㼡¤Î¥³¡¼¥É¤Ï¡¢¼õ¤±¼è¤Ã¤¿Êä½õ¥Ð¥Ã¥Õ¥¡¤«¤é IP_TTL ¥ª¥×¥·¥ç¥ó¤òõ¤¹¤â¤Î¤Ç¤¢¤ë¡£
°Ê²¼¤Î¥³¡¼¥É¤Ï¡¢ SCM_RIGHTS ¤ò»È¤¤¡¢¥Õ¥¡¥¤¥ë¥Ç¥¹¥¯¥ê¥×¥¿¤ÎÇÛÎó¤ò Unix¥½¥±¥Ã¥È¤òÄ̤·¤ÆÁ÷¤ë¤â¤Î¤Ç¤¢¤ë¡£
Ãí°Õ°Ü¿¢À¤Î¤¿¤á¤Ë¡¢Êä½õ¥Ç¡¼¥¿¤Ø¤Î¥¢¥¯¥»¥¹¤Ë¤Ï¡¢ ¤³¤³¤Ç½Ò¤Ù¤é¤ì¤Æ¤¤¤ë¥Þ¥¯¥í¤ò»È¤¦¤À¤±¤Ë¤¹¤Ù¤¤Ç¤¢¤ë¡£ CMSG_ALIGN ¤Ï Linux ¤Ç¤Î³ÈÄ¥¤Ç¤¢¤ê¡¢°Ü¿¢À¤ò¹Í¤¨¤¿¥×¥í¥°¥é¥à¤Ç¤Ï»È¤¦¤Ù¤¤Ç¤Ï¤Ê¤¤¡£Linux ¤Ç¤Ï CMSG_LEN, CMSG_DATA, CMSG_ALIGN ¤ÏÄê¿ô¼°¤Ç¤¢¤ë (¤½¤ì¤é¤Î°ú¿ô¤¬Äê¿ô¤È¤ß¤Ê¤µ¤ì¤ë)¡£ ¤³¤Î¤³¤È¤Ï¡¢¹°èÊÑ¿ô¤Î¥µ¥¤¥º¤òÀë¸À¤¹¤ë¤Î¤Ë»È¤¨¤ë¡£ ¤·¤«¤·°Ü¿¢À¤Ï¤Ê¤¯¤Ê¤ë¤À¤í¤¦¡£ ½àµò¤³¤ÎÊä½õ¥Ç¡¼¥¿¥â¥Ç¥ë¤Ï¡¢POSIX.1003.1g draft, 4.4BSD-Lite, RFC2292 ¤Ë µ½Ò¤µ¤ì¤Æ¤¤¤ë IPv6 advanced API, ¤½¤·¤Æ Single Unix specification v2 ¤Ë½àµò¤·¤Æ¤¤¤ë¡£ CMSG_ALIGN ¤Ï Linux ¤Î³ÈÄ¥¤Ç¤¢¤ë¡£´ØÏ¢¹àÌÜsendmsg(2), recvmsg(2)RFC 2292
Index | ||||||
|
|
|
Home :: Copyright :: Privacy :: Credits :: Get a free Linuxinfor Email Account Document on this page is part of "Linuxinfor Man Pages in HTML Format: man3". See Index Page for more info about Authorship and Copyright. 1999-2008 Linuxinfor.com. No rights reserved. |