11 #ifndef __GU_RESOLVER_HPP__
12 #define __GU_RESOLVER_HPP__
14 #include "gu_throw.hpp"
17 #include <sys/socket.h>
18 #include <netinet/in.h>
68 Addrinfo resolve(
const gu::URI& uri);
82 Sockaddr(
const sockaddr* sa, socklen_t sa_len);
111 switch(sa_->sa_family)
114 return reinterpret_cast<const sockaddr_in*
>(sa_)->sin_port;
116 return reinterpret_cast<const sockaddr_in6*
>(sa_)->sin6_port;
132 switch(sa_->sa_family)
135 return &
reinterpret_cast<const sockaddr_in*
>(sa_)->sin_addr;
137 return &
reinterpret_cast<const sockaddr_in6*
>(sa_)->sin6_addr;
139 gu_throw_fatal <<
"invalid address family: " << sa_->sa_family;
143 socklen_t get_addr_len()
const
145 switch(sa_->sa_family)
148 return sizeof(
reinterpret_cast<const sockaddr_in*
>(sa_)->sin_addr);
150 return sizeof(
reinterpret_cast<const sockaddr_in6*
>(sa_)->sin6_addr);
177 bool is_multicast()
const;
178 bool is_broadcast()
const;
179 bool is_anyaddr()
const;
184 switch(ret.sa_->sa_family)
187 reinterpret_cast<sockaddr_in*
>(ret.sa_)->sin_addr.s_addr = 0;
190 memset(&reinterpret_cast<sockaddr_in6*>(ret.sa_)->sin6_addr,
191 0,
sizeof(
struct in6_addr));
194 gu_throw_fatal <<
"invalid address family: " << ret.sa_->sa_family;
201 memcpy(sa_, sa.sa_, sa_len_);
219 const void* get_mreq()
const {
return mreq_; }
220 socklen_t get_mreq_len()
const {
return mreq_len_; }
221 int get_ipproto()
const {
return ipproto_; }
222 int get_add_membership_opt()
const {
return add_membership_opt_; }
223 int get_drop_membership_opt()
const {
return drop_membership_opt_; }
224 int get_multicast_if_opt()
const {
return multicast_if_opt_; }
225 int get_multicast_loop_opt()
const {
return multicast_loop_opt_; }
226 int get_multicast_ttl_opt()
const {
return multicast_ttl_opt_; }
227 const void* get_multicast_if_value()
const;
228 int get_multicast_if_value_size()
const;
233 void operator=(
const MReq&);
238 int add_membership_opt_;
239 int drop_membership_opt_;
240 int multicast_if_opt_;
241 int multicast_loop_opt_;
242 int multicast_ttl_opt_;
312 {
return Sockaddr(ai_.ai_addr, ai_.ai_addrlen); }
int get_protocol() const
Definition: gu_resolver.hpp:296
Utility class to parse URIs.
Definition: gu_uri.hpp:41
Class encapsulating struct sockaddr.
Definition: gu_resolver.hpp:73
int get_socktype() const
Definition: gu_resolver.hpp:289
socklen_t get_sockaddr_len() const
Definition: gu_resolver.hpp:175
const sockaddr & get_sockaddr() const
Definition: gu_resolver.hpp:168
sa_family_t get_family() const
Definition: gu_resolver.hpp:101
sockaddr & get_sockaddr()
Definition: gu_resolver.hpp:161
const void * get_addr() const
Definition: gu_resolver.hpp:130
Sockaddr get_addr() const
Definition: gu_resolver.hpp:311
unsigned short get_port() const
Definition: gu_resolver.hpp:109
std::string to_string() const
Addrinfo(const addrinfo &ai)
socklen_t get_addrlen() const
Definition: gu_resolver.hpp:303
int get_family() const
Definition: gu_resolver.hpp:282
Sockaddr(const sockaddr *sa, socklen_t sa_len)
Class encapsulating struct addrinfo.
Definition: gu_resolver.hpp:246
Definition: gu_resolver.hpp:212