root/trunk/dep/include/sockets/Ipv6Address.h @ 223

Revision 2, 2.8 kB (checked in by yumileroy, 17 years ago)

[svn] * Proper SVN structure

Original author: Neo2003
Date: 2008-10-02 16:23:55-05:00

Line 
1/**
2 **     \file Ipv6Address.h
3 **     \date  2006-09-21
4 **     \author grymse@alhem.net
5**/
6/*
7Copyright (C) 2007  Anders Hedstrom
8
9This program is free software; you can redistribute it and/or
10modify it under the terms of the GNU General Public License
11as published by the Free Software Foundation; either version 2
12of the License, or (at your option) any later version.
13
14This program is distributed in the hope that it will be useful,
15but WITHOUT ANY WARRANTY; without even the implied warranty of
16MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17GNU General Public License for more details.
18
19You should have received a copy of the GNU General Public License
20along with this program; if not, write to the Free Software
21Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
22*/
23#ifndef _SOCKETS_Ipv6Address_H
24#define _SOCKETS_Ipv6Address_H
25#include "sockets-config.h"
26#ifdef ENABLE_IPV6
27
28#include "SocketAddress.h"
29#ifdef IPPROTO_IPV6
30#if defined( _WIN32) && !defined(__CYGWIN__)
31typedef unsigned __int32 uint32_t;
32#endif
33
34#ifdef SOCKETS_NAMESPACE
35namespace SOCKETS_NAMESPACE {
36#endif
37
38
39/** Ipv6 address implementation.
40        \ingroup basic */
41class Ipv6Address : public SocketAddress
42{
43public:
44        /** Create empty Ipv6 address structure.
45                \param port Port number */
46        Ipv6Address(port_t port = 0);
47        /** Create Ipv6 address structure.
48                \param a Socket address in network byte order
49                \param port Port number in host byte order */
50        Ipv6Address(struct in6_addr& a,port_t port);
51        /** Create Ipv6 address structure.
52                \param host Hostname to be resolved
53                \param port Port number in host byte order */
54        Ipv6Address(const std::string& host,port_t port);
55        Ipv6Address(struct sockaddr_in6&);
56        ~Ipv6Address();
57
58        // SocketAddress implementation
59
60        operator struct sockaddr *();
61        operator socklen_t();
62        bool operator==(SocketAddress&);
63
64        void SetPort(port_t port);
65        port_t GetPort();
66
67        void SetAddress(struct sockaddr *sa);
68        int GetFamily();
69
70        bool IsValid();
71        std::auto_ptr<SocketAddress> GetCopy();
72
73        /** Convert address struct to text. */
74        std::string Convert(bool include_port = false);
75        std::string Reverse();
76
77        /** Resolve hostname. */
78static  bool Resolve(const std::string& hostname,struct in6_addr& a);
79        /** Reverse resolve (IP to hostname). */
80static  bool Reverse(struct in6_addr& a,std::string& name);
81        /** Convert address struct to text. */
82static  std::string Convert(struct in6_addr& a,bool mixed = false);
83
84        void SetFlowinfo(uint32_t);
85        uint32_t GetFlowinfo();
86#ifndef _WIN32
87        void SetScopeId(uint32_t);
88        uint32_t GetScopeId();
89#endif
90
91private:
92        Ipv6Address(const Ipv6Address& ) {} // copy constructor
93        Ipv6Address& operator=(const Ipv6Address& ) { return *this; } // assignment operator
94        struct sockaddr_in6 m_addr;
95        bool m_valid;
96};
97
98
99
100
101#ifdef SOCKETS_NAMESPACE
102} // namespace SOCKETS_NAMESPACE {
103#endif
104#endif // IPPROTO_IPV6
105#endif // ENABLE_IPV6
106#endif // _SOCKETS_Ipv6Address_H
107
Note: See TracBrowser for help on using the browser.