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.1 by pcg, Fri Mar 28 04:05:10 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) 1998-2002 Ivo Timmermans <ivo@o2w.nl> 3 Copyright (C) 2003 Marc Lehmann <gvpe@schmorp.de>
4 2000-2002 Guus Sliepen <guus@sliepen.eu.org>
5 2003 Marc Lehmannn <pcg@goof.com>
6 4
5 This file is part of GVPE.
6
7 This program is free software; you can redistribute it and/or modify 7 GVPE is free software; you can redistribute it and/or modify
8 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
9 the Free Software Foundation; either version 2 of the License, or 9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version. 10 (at your option) any later version.
11 11
12 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,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 but WITHOUT ANY WARRANTY; without even the implied warranty of
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 this program; 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. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20*/ 20*/
21 21
22#ifndef SOCKINFO_H__ 22#ifndef VPE_SOCKINFO_H__
23#define SOCKINFO_H__ 23#define VPE_SOCKINFO_H__
24 24
25#include <sys/socket.h> 25#include "netcompat.h"
26#include <netinet/in.h>
27 26
28#include "conf.h" 27#include "conf.h"
29 28
30// encapsulate one or more network addresses. this structure 29// encapsulate one or more network addresses. this structure
31// gets transferred over the wire, so be careful with endianness etc. 30// gets transferred over the wire, so be careful with endianness etc.
34 u32 host; 33 u32 host;
35 u16 port; 34 u16 port;
36 u8 prot; 35 u8 prot;
37 u8 pad1; 36 u8 pad1;
38 37
39 void set (const sockaddr_in *sa, u8 prot_ = PROT_UDPv4); 38 void set (const sockaddr_in *sa, u8 prot_);
40 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);
41 45
42 operator const char *() const; 46 operator const char *() const;
43 47
44 const sockaddr *sav4 () const; 48 const sockaddr *sav4 () const;
45 const socklen_t salenv4 () const 49 const socklen_t salenv4 () const
46 {
47 return sizeof (sockaddr_in); 50 { return sizeof (sockaddr_in); }
48 }
49 51
50 const char *ntoa () const; 52 const char *ntoa () const;
51 53
52 sockinfo() 54 bool valid () const
53 { 55 { return prot != 0 && host != 0; }
54 prot = 0;
55 }
56 56
57 sockinfo() { prot = 0; }
58
57 sockinfo(const sockaddr_in &sa, u8 prot_ = PROT_UDPv4) 59 sockinfo(const sockaddr_in &sa, u8 prot)
58 {
59 set (&sa, prot_); 60 { set (&sa, prot); }
60 } 61
62 sockinfo(const conf_node *conf, u8 prot)
63 { set (conf, prot); }
61 }; 64 };
62 65
63inline bool
64operator == (const sockinfo &a, const sockinfo &b) 66bool operator == (const sockinfo &a, const sockinfo &b);
65{ 67bool operator < (const sockinfo &a, const sockinfo &b);
66 return a.host == b.host && a.port == b.port && a.prot == b.prot;
67}
68 68
69#endif 69#endif
70 70

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines