OSDN Git Service

Fixed chkconfig option
[ultramonkey-l7/ultramonkey-l7-v2.git] / include / l7vs_dest.h
1 /*!
2  * @file l7vs_dest.h
3  * @brief RealServer component.
4  * @brief 
5  *
6  *
7  */
8
9 #ifndef L7VS_DEST_H
10 #define L7VS_DEST_H
11
12 #include <sys/types.h>
13 #include <sys/socket.h>
14 #include <netinet/in.h>
15 #include <arpa/inet.h>
16 #include "logger_wrapper.h"
17
18 //
19 // ! real-server datatype
20 //
21 //
22 struct  l7vs_dest{
23         struct sockaddr_in      addr;           //! sockaddr
24         int                     weight;         //! schedule weight use
25         int                     nactive;        //! nactive
26         int                     ninact;         //! ninactive
27 };
28
29 //
30 // ! real-server datatype, external representation
31 //
32 //
33 struct  l7vs_dest_arg{
34         struct sockaddr_in      addr;
35         int                     weight;
36         int                     nactive;
37         int                     ninact;
38 };
39
40 //
41 // functions.
42 //
43 extern  struct l7vs_dest*       l7vs_dest_create( struct sockaddr_in*, int );
44 extern  void                    l7vs_dest_destroy( struct l7vs_dest* );
45 extern  void                    l7vs_dest_to_arg( struct l7vs_dest*, struct l7vs_dest_arg* );
46
47 /*!
48  * serialize struct sockaddr_in
49  * @param[out]  ret     serialized string
50  * @param[in]   dest    source sockaddr_in
51  * @return      void
52  */
53 inline  void    l7vs_dest_sockaddr_in_c_str(char* ret, const struct sockaddr_in* addr)
54 {
55         if (!addr) {
56                 snprintf(ret, DEBUG_STR_LEN, "(nil)");
57                 return;
58         }
59
60         snprintf(ret, DEBUG_STR_LEN,
61                 "sockaddr_in="
62                 "{sin_addr=%s: "
63                 "sin_port=%d}"
64                 , inet_ntoa(addr->sin_addr)
65                 , ntohs(addr->sin_port));
66 }
67
68
69 /*!
70  * serialize struct l7vs_dest
71  * @param[out]  ret     serialized string
72  * @param[in]   dest    source l7vs_dest
73  * @return      void
74  */
75 inline  void    l7vs_dest_c_str(char *ret,const struct l7vs_dest *dest)
76 {
77         char addr_str[DEBUG_STR_LEN];
78
79         if(!dest){
80                 snprintf(ret, DEBUG_STR_LEN, "(nil)");
81                 return;
82         }
83
84         l7vs_dest_sockaddr_in_c_str(addr_str,&(dest->addr));
85         snprintf(ret, DEBUG_STR_LEN,
86                 "dest = %p: "
87                 "addr = %s: "
88                 "weight= %d: "
89                 "nactive= %d: "
90                 "ninact= %d: ",
91                 dest,
92                 addr_str,
93                 dest->weight,
94                 dest->nactive,
95                 dest->ninact);
96 }
97
98 /*!
99  * serialize struct l7vs_darg
100  * @param[out]  ret     serialized string
101  * @param[in]   dest    source l7vs_dest_arg
102  * @return      void
103  */
104 inline  void    l7vs_darg_c_str(char *ret,const struct l7vs_dest_arg *darg)
105 {
106         char addr_str[DEBUG_STR_LEN];
107
108         if(!darg){
109                 snprintf(ret, DEBUG_STR_LEN, "(nil)");
110                 return;
111         }
112
113         l7vs_dest_sockaddr_in_c_str(addr_str,&(darg->addr));
114         snprintf(ret, DEBUG_STR_LEN,
115                 "addr = %s: "
116                 "weight= %d: "
117                 "nactive= %d: "
118                 "ninact= %d: ",
119                 addr_str,
120                 darg->weight,
121                 darg->nactive,
122                 darg->ninact);
123 }
124
125 #endif  //L7VS_DEST_H