ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/gvpe/src/sockinfo.h
(Generate patch)

Comparing gvpe/src/sockinfo.h (file contents):
Revision 1.9 by pcg, Thu Mar 3 16:54:34 2005 UTC vs.
Revision 1.14 by pcg, Sun Dec 2 00:09:36 2007 UTC

14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details. 15 GNU General Public License for more details.
16 16
17 You should have received a copy of the GNU General Public License 17 You should have received a copy of the GNU General Public License
18 along with gvpe; if not, write to the Free Software 18 along with gvpe; if not, write to the Free Software
19 Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 19 Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20*/ 20*/
21 21
22#ifndef VPE_SOCKINFO_H__ 22#ifndef GVPE_SOCKINFO_H__
23#define VPE_SOCKINFO_H__ 23#define GVPE_SOCKINFO_H__
24 24
25#include "netcompat.h" 25#include "netcompat.h"
26 26
27#include "conf.h" 27#include "conf.h"
28 28
29// encapsulate one or more network addresses. this structure 29// encapsulate one or more network addresses. this structure
30// gets transferred over the wire, so be careful with endianness etc. 30// gets transferred over the wire, so be careful with endianness etc.
31struct sockinfo 31struct sockinfo
32{
33 u32 host;
34 u16 port;
35 u8 prot;
36 u8 pad1;
37
38 void set (const sockaddr_in *sa, u8 prot_);
39 void set (const conf_node *conf, u8 prot_);
40 void set (const char *hostname, u16 port_, u8 prot_);
41
42 // return the supported protocols
43 u8 supported_protocols (conf_node *conf = 0);
44 bool upgrade_protocol (u8 prot_, conf_node *conf = 0);
45
46 operator const char *() const;
47
48 const sockaddr *sav4 () const;
49 const socklen_t salenv4 () const
32 { 50 {
33 u32 host; 51 return sizeof (sockaddr_in);
34 u16 port; 52 }
35 u8 prot;
36 u8 pad1;
37 53
38 void set (const sockaddr_in *sa, u8 prot_); 54 const char *ntoa () const;
39 void set (const conf_node *conf, u8 prot_);
40 void set (const char *hostname, u16 port_, u8 prot_);
41 55
42 // return the supported protocols 56 bool valid () const
43 u8 supported_protocols (conf_node *conf = 0); 57 {
44 bool upgrade_protocol (u8 prot_, conf_node *conf = 0); 58 return prot != 0 && host != 0;
59 }
45 60
46 operator const char *() const; 61 sockinfo() { prot = 0; }
47 62
48 const sockaddr *sav4 () const; 63 sockinfo(const char *hostname, u16 port, u8 prot) { set (hostname, port, prot); }
49 const socklen_t salenv4 () const 64 sockinfo(const sockaddr_in &sa, u8 prot) { set (&sa, prot); }
50 { return sizeof (sockaddr_in); } 65 sockinfo(const conf_node *conf, u8 prot) { set (conf, prot); }
51 66};
52 const char *ntoa () const;
53
54 bool valid () const
55 { return prot != 0 && host != 0; }
56
57 sockinfo() { prot = 0; }
58
59 sockinfo(const sockaddr_in &sa, u8 prot)
60 { set (&sa, prot); }
61
62 sockinfo(const conf_node *conf, u8 prot)
63 { set (conf, prot); }
64 };
65 67
66bool operator == (const sockinfo &a, const sockinfo &b); 68bool operator == (const sockinfo &a, const sockinfo &b);
67bool operator < (const sockinfo &a, const sockinfo &b); 69bool operator < (const sockinfo &a, const sockinfo &b);
70
71inline bool operator != (const sockinfo &a, const sockinfo &b)
72{
73 return !(a == b);
74}
68 75
69#endif 76#endif
70 77

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines