11 #include <sys/types.h>
12 #include <sys/socket.h>
14 #include <arpa/inet.h>
18 #include "rofl/common/caddress.h"
19 #include "rofl/common/cmemory.h"
20 #include "rofl/common/logging.h"
21 #include "rofl/common/croflexception.h"
43 struct sockaddr* addru_saddr;
44 struct sockaddr_in* addru_s4addr;
45 struct sockaddr_in6* addru_s6addr;
48 #define ca_mem addr_addru.addru_mem
49 #define ca_saddr addr_addru.addru_saddr // generic sockaddr
50 #define ca_s4addr addr_addru.addru_s4addr // sockaddr_in
51 #define ca_s6addr addr_addru.addru_s6addr // sockaddr_in6
61 int family,
const std::string& addr, uint16_t port_no);
80 salen(
sizeof(
struct sockaddr_un)) {
94 const csockaddr& sockaddr) { *
this = sockaddr; };
102 if (
this == &sockaddr)
106 salen = sockaddr.salen;
131 uint8_t* sa,
size_t salen);
138 uint8_t* sa,
size_t salen);
143 operator<<(std::ostream& os,
const csockaddr& sockaddr) {
145 switch (sockaddr.ca_saddr->sa_family) {
147 caddress_in4 addr; addr.set_addr_nbo(sockaddr.ca_s4addr->sin_addr.s_addr);
150 os <<
rofl::indent(0) <<
"<portno: " << (
unsigned int)be16toh(sockaddr.ca_s4addr->sin_port) <<
" >" << std::endl;
156 os <<
rofl::indent(0) <<
"<portno: " << (
unsigned int)be16toh(sockaddr.ca_s6addr->sin6_port) <<
" >" << std::endl;
164 std::stringstream sstr;
165 switch (ca_saddr->sa_family) {
167 caddress_in4 addr; addr.set_addr_nbo(ca_s4addr->sin_addr.s_addr);
168 sstr <<
"inet4:" << addr.str() <<
":" << (
unsigned int)be16toh(ca_s4addr->sin_port);
172 sstr <<
"inet6:" << addr.str() <<
":" << (
unsigned int)be16toh(ca_s6addr->sin6_port);
Definition: caddress.h:589
Definition: csockaddr.h:38
Definition: csockaddr.h:25
uint8_t * somem() const
Returns pointer to start of allocated memory area.
Definition: cmemory.cc:101
virtual void unpack(uint8_t *sa, size_t salen)
Copies content of specified buffer into this cmemory instance .
Definition: csockaddr.cc:103
virtual void unpack(uint8_t *buf, size_t buflen)
Copies content of specified buffer into this cmemory instance .
Definition: caddress.cc:31
Definition: caddress.h:415
C++ abstraction for malloc'ed memory areas.
Definition: cmemory.h:44
cmemory & operator=(cmemory const &m)
Assignment operator.
Definition: cmemory.cc:85
virtual void pack(uint8_t *sa, size_t salen)
Copies content of this cmemory instance to specified buffer.
Definition: csockaddr.cc:88
Definition: csockaddr.h:30
Definition: croflexception.h:27