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.2 by pcg, Wed Apr 2 03:25:17 2003 UTC vs.
Revision 1.9 by pcg, Thu Mar 3 16:54:34 2005 UTC

1/* 1/*
2 sockinfo.h -- socket address management 2 sockinfo.h -- socket address management
3 Copyright (C) 2003 Marc Lehmann <gvpe@schmorp.de>
4
5 This file is part of GVPE.
3 6
4 Copyright (C) 2003 Marc Lehmann <pcg@goof.com>
5
6 This program is free software; you can redistribute it and/or modify 7 GVPE is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by 8 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or 9 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version. 10 (at your option) any later version.
10 11
11 This program is distributed in the hope that it will be useful, 12 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details. 15 GNU General Public License for more details.
15 16
16 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
17 along with this program; if not, write to the Free Software 18 along with gvpe; if not, write to the Free Software
18 Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 19 Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19*/ 20*/
20 21
21#ifndef VPE_SOCKINFO_H__ 22#ifndef VPE_SOCKINFO_H__
22#define VPE_SOCKINFO_H__ 23#define VPE_SOCKINFO_H__
23 24
24#include <sys/socket.h> 25#include "netcompat.h"
25#include <netinet/in.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.
33 u32 host; 33 u32 host;
34 u16 port; 34 u16 port;
35 u8 prot; 35 u8 prot;
36 u8 pad1; 36 u8 pad1;
37 37
38 void set (const sockaddr_in *sa, u8 prot_ = PROT_UDPv4); 38 void set (const sockaddr_in *sa, u8 prot_);
39 void set (const conf_node *conf); 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);
40 45
41 operator const char *() const; 46 operator const char *() const;
42 47
43 const sockaddr *sav4 () const; 48 const sockaddr *sav4 () const;
44 const socklen_t salenv4 () const 49 const socklen_t salenv4 () const
45 {
46 return sizeof (sockaddr_in); 50 { return sizeof (sockaddr_in); }
47 }
48 51
49 const char *ntoa () const; 52 const char *ntoa () const;
50 53
51 sockinfo() 54 bool valid () const
52 { 55 { return prot != 0 && host != 0; }
53 prot = 0;
54 }
55 56
57 sockinfo() { prot = 0; }
58
56 sockinfo(const sockaddr_in &sa, u8 prot_ = PROT_UDPv4) 59 sockinfo(const sockaddr_in &sa, u8 prot)
57 {
58 set (&sa, prot_); 60 { set (&sa, prot); }
59 } 61
62 sockinfo(const conf_node *conf, u8 prot)
63 { set (conf, prot); }
60 }; 64 };
61 65
62inline bool
63operator == (const sockinfo &a, const sockinfo &b) 66bool operator == (const sockinfo &a, const sockinfo &b);
64{ 67bool operator < (const sockinfo &a, const sockinfo &b);
65 return a.host == b.host && a.port == b.port && a.prot == b.prot;
66}
67 68
68#endif 69#endif
69 70

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines