/**************************************************************************** Broadcast Message Header for rc_mond ----------------------------------------- begin : 2015/06/05 copyright : (C) 2005 Solbox Inc. author : Dev Storage Team email : huibong@solbox.com version : 3.5 CopyRight(C) 2005 Solbox Inc. All Rights reserved. Redistribution and use in source and binary forms, with or with out modification, are not permitted in outside of Solbox Inc. *****************************************************************************/ #ifndef __PROTOCOL_VMASD_H__ #define __PROTOCOL_VMASD_H__ #include #include // º» Header ÆÄÀÏÀº FHS ÀÇ vmasd °¡ Àü¼ÛÇÏ´Â UDP Broadcasting Message Protocol À» Á¤ÀÇÇϱâ À§ÇÑ header ÀÌ´Ù. // FHS vmasd ¿¡ Á¤ÀÇµÈ Protocol Çü½ÄÀÌ ÇâÈÄ º¯°æµÉ ¼ö ÀÖÀ¸¹Ç·Î.. ´ÙÀ½°ú °°ÀÌ Æ¯Á¤ÇÏ¿© ó¸®ÇÑ´Ù. // sizeof( struct vmasd_broadcast_message_header ) => 352 (64Bit OS) struct vmasd_broadcast_message_header { char szTransactionID[52]; // 20130802181203-4ef48917f7-4381644055 ( ¼¼¼Ç ID Á¤º¸ ) uint32_t ulMode; // 256 (MODE Á¤º¸, network byte odrer, 0x0100 ¸¸ »ç¿ë) char szIssuer[128]; // vmasd (ÇÁ·Î¼¼½º¸í) char szServiceID[128]; // ¹Ì»ç¿ë char szRCID[32]; // bd16 (RC ID) uint32_t ulResult; // 4096 (󸮰á°ú, network byte odrer) uint32_t ulBodyLength; // 640 (Body Size , network byte odrer) }; // vmasd °¡ Àü¼ÛÇÑ UDP Broadcast ¸Þ½ÃÁö Áß.... // vmasd_broadcast_message_header ±¸Á¶Ã¼¿¡¼­ ntohl(ulMode) == MSG_MODE_VMA_APACHE_DISKSIZE Á¤º¸¸¸ ó¸®ÇÑ´Ù. #define MSG_MODE_VMA_APACHE_DISKSIZE 0x0100 // rc_vrcd share.h ¿¡ Á¤ÀÇµÈ struct disk_usage ±¸Á¶Ã¼ ¹× vmasd ¼Ò½º Âü°íÇÔ. // ±¸Á¶Ã¼ ¸íÀº º¯°æ ó¸®ÇÔ. // sizeof( struct vmasd_broadcast_message_body ) => 640 (64Bit OS) // °¢ Ç׸ñ¿¡ ´ëÇÑ ¼³¸í ³»¿ªÀº vmasd ¼Ò½º Revision 0551 À» ±âÁØÀ¸·Î ÇÑ ºÐ¼® ³»¿ªÀÓ. struct vmasd_broadcast_message_body { char domain[512]; // vmasd.conf¿¡ ¼³Á¤µÈ SERVER_NAME=sb-01-fhs001.solbox.com Á¤º¸ »ç¿ë // ÇØ´ç Á¤º¸´Â FHS ÆÐŰ¡ ¼³Ä¡½Ã hostname Á¤º¸¸¦ ÃßÃâÇÏ¿© ÀÚµ¿ ¼³Á¤ ó¸®ÇϹǷÎ.. // hostname Á¤º¸¿Í µ¿ÀÏÇÏ´Ù. uint64_t total; // ÀúÀå °æ·Î·Î ÁöÁ¤µÈ Mount ÀÇ ÃÑ Disk Size ( °¢ mount statfs ÀÇ f_blocks * f_bsize ÇÕ»ê °á°ú ) uint64_t free; // ÀúÀå °æ·Î·Î ÁöÁ¤µÈ Mount ÀÇ ÃÑ Disk Free Size ( °¢ mount statfs ÀÇ f_blocks * f_bavail ÇÕ»ê °á°ú ) // º» total, free °ªÀº /stg/node0.disable ¼³Á¤¿¡´Â ¿µÇâ¹ÞÁö ¾ÊÀ½. int manual_disable; // 2 : fsck_ufs ÇÁ·Î¼¼½º°¡ µ¿ÀÛ ÁßÀÎ °æ¿ì.. // 1 : /user/service/vmasd.disable ÆÄÀÏÀÌ Á¸ÀçÇÒ °æ¿ì.. // .disable ¼³Á¤ÀÌ µÇÁö ¾ÊÀº À¯È¿ Mount Áß.. °¡Àå Å« Free Disk ¿ë·®(f_bfree) ÀÌ 0 ÀÎ °æ¿ì... // 0 : ±× ¿Ü.. int upload_level; // º» ±¸Á¶Ã¼ Ç׸ñ Áß (disk_backlog/10) + (connection_established/50) ÀÇ °è»ê °ª... ( vmasd ¼Ò½º Âü°í) int disk_backlog; // ÀúÀå °æ·Î MountÀÇ Disk Queue Æò±Õ ´ë±â transaction ¼ö // ½ÇÁ¦·Î´Â Æò±ÕÀÌ ¾Æ´Ï¶ó.. N°³ mount Áß ¸¶Áö¸· mount ÀÇ ÃßÃâ °ªÀÓ. // ¼¼ºÎ ³»¿ªÀº devstat_compute_statistics ÀÇ DSM_QUEUE_LENGTH Âü°í int disk_percent; // ÀúÀå °æ·Î Mount µéÀÇ Æò±Õ Busy À² ( devstat_compute_statistics ÀÇ DSM_BUSY_PCT Âü°í ) int connection_established; // TCP 80 Port »ç¿ë, ESTABLISH »óÅÂÀÎ ¼¼¼Ç ¼ö.. int connection_total; // TCP 80 Port Àüü ¼¼¼Ç ¼ö. uint32_t traffic_ip; // Æò±Õ inbound packet count uint32_t traffic_ib; // Æò±Õ inbound traffic ( byte/s ) uint32_t traffic_op; // Æò±Õ outbound packet count uint32_t traffic_ob; // Æò±Õ outbound traffic ( byte/s ) char hostname[64]; // Àåºñ hostname (gethostname ÇÔ¼ö·Î ÃßÃâ) // domain[512] ¿Í µ¿ÀÏ data ÀÓ. // ¸¸¾à domain Á¤º¸¿Í hostname Á¤º¸°¡ ´Ù¸¥ °æ¿ì´Â ÆÐŰ¡ ¼³Ä¡ ÈÄ Àåºñ hostname À» ÀÓÀÇ·Î º¯°æÇÑ °æ¿ìÀÓ. uint64_t large_block; // ÀúÀå °æ·Î·Î ÁöÁ¤µÈ Mount Áß.... disable ¼³Á¤(/stg/node0.disable)ÀÌ ¾ÈµÇ°í.. // °¡Àå Å« Free Size ¸¦ °¡Áö´Â Mount ÀÇ Disk Free ¿ë·®ÀÓ. // º» °ªÀº ÇØ´ç FHS ¿¡¼­ ÀúÀå °¡´ÉÇÑ °¡Àå Å« Content Size ¸¦ ÀǹÌÇÑ´Ù. // º» Ç׸ñÀº ¼Û½ÅÃøÀÎ vmasd ¿¡¸¸ Á¤ÀǵǾî ÀÖÀ¸¸ç.. ¼ö½ÅÃøÀÎ rc_vrcd ¿¡´Â Á¤ÀǵǾî ÀÖÁö ¾ÊÀ½. // µû¶ó¼­.. GMS ·Î º» Ç׸ñÀº Àü¼ÛÇÏÁö ¾Ê´Â´Ù. (Àü¼ÛÇÏ¸é ÆÄ½Ì ¿À·ù ¹ß»ý ÇÒ µí ) }; #endif /* __PROTOCOL_VMASD_H__ */