summaryrefslogtreecommitdiff
path: root/src/htsnet.h
diff options
context:
space:
mode:
authorXavier Roche <xroche@users.noreply.github.com>2014-05-18 13:11:40 +0000
committerXavier Roche <xroche@users.noreply.github.com>2014-05-18 13:11:40 +0000
commitfe7ea8b140aebdff88d171ca57650917905c6639 (patch)
tree2f1f5aef63cda72f9cc81a77109bf462bf8bd058 /src/htsnet.h
parent1fd27d74afe877424122f510c6e1b81264992883 (diff)
Big cleanup in network address and dns functions:
* removed t_fullhostent insanity * removed (struct sockaddr*) casts * use SOCaddr everywhere rather than raw struct hostent*
Diffstat (limited to 'src/htsnet.h')
-rw-r--r--src/htsnet.h49
1 files changed, 23 insertions, 26 deletions
diff --git a/src/htsnet.h b/src/htsnet.h
index 0cd6da3..fa143a4 100644
--- a/src/htsnet.h
+++ b/src/htsnet.h
@@ -135,10 +135,20 @@ static HTS_INLINE HTS_UNUSED socklen_t SOCaddr_size_(const SOCaddr*const addr,
}
}
+static HTS_INLINE HTS_UNUSED void SOCaddr_clear_(SOCaddr*const addr,
+ const char *file, const int line) {
+ assertf_(addr != NULL, file, line);
+ addr->m_addr.sa.sa_family = AF_UNSPEC;
+}
+
/* Ipv4/6 structure members */
#define SOCaddr_sinfamily(server) ((server).m_addr.sa.sa_family)
#define SOCaddr_sinport(server) (*SOCaddr_sinport_(&(server), __FILE__, __LINE__))
-#define SOCaddr_size(server) (*SOCaddr_size_(&(server, __FILE__, __LINE__)))
+#define SOCaddr_size(server) (SOCaddr_size_(&(server), __FILE__, __LINE__))
+#define SOCaddr_is_valid(server) (SOCaddr_size_(&(server), __FILE__, __LINE__) != 0 )
+#define SOCaddr_clear(server) SOCaddr_clear_(&(server), __FILE__, __LINE__)
+#define SOCaddr_sockaddr(server) ((server).m_addr.sa)
+#define SOCaddr_capacity(server) sizeof((server).m_addr)
/* AF_xx */
#if HTS_INET6 != 0
@@ -160,8 +170,8 @@ static HTS_INLINE HTS_UNUSED socklen_t SOCaddr_initany_(SOCaddr*const addr,
return SOCaddr_size_(addr, file, line);
}
-#define SOCaddr_initany(server, server_len) do { \
- server_len = (int) SOCaddr_initany_(&(server), __FILE__, __LINE__); \
+#define SOCaddr_initany(server) do { \
+ SOCaddr_initany_(&(server), __FILE__, __LINE__); \
} while(0)
/*
@@ -203,6 +213,14 @@ static HTS_UNUSED socklen_t SOCaddr_copyaddr_(SOCaddr*const server,
server_len = (int) SOCaddr_copyaddr_(&(server), hpaddr, hpsize, __FILE__, __LINE__); \
} while(0)
+#define SOCaddr_copyaddr2(server, hpaddr, hpsize) do { \
+ (void) SOCaddr_copyaddr_(&(server), hpaddr, hpsize, __FILE__, __LINE__); \
+} while(0)
+
+#define SOCaddr_copy_SOCaddr(dest, src) do { \
+ SOCaddr_copyaddr_(&(dest), &(src).m_addr.sa, SOCaddr_size(src), __FILE__, __LINE__); \
+} while(0)
+
/* Get dotted address */
static HTS_UNUSED void SOCaddr_inetntoa_(char *namebuf, size_t namebuflen,
@@ -225,34 +243,13 @@ static HTS_UNUSED void SOCaddr_inetntoa_(char *namebuf, size_t namebuflen,
}
}
-#define SOCaddr_inetntoa(namebuf, namebuflen, ss, sslen) \
+#define SOCaddr_inetntoa(namebuf, namebuflen, ss) \
SOCaddr_inetntoa_(namebuf, namebuflen, &(ss), __FILE__, __LINE__)
/* Get protocol ID */
-#define SOCaddr_getproto(ss, sslen) ( (sslen) == sizeof(struct sockaddr_in) ? '1' : '2')
+#define SOCaddr_getproto(ss) ( SOCaddr_size(ss) == sizeof(struct sockaddr_in) ? '1' : '2')
/* Socket length type */
typedef socklen_t SOClen;
-/* Buffer structure to copy various hostent structures */
-#ifndef HTS_DEF_FWSTRUCT_t_fullhostent
-#define HTS_DEF_FWSTRUCT_t_fullhostent
-typedef struct t_fullhostent t_fullhostent;
-#endif
-struct t_fullhostent {
- t_hostent hp;
- char *list[2];
- char addr[HTS_MAXADDRLEN]; /* various struct sockaddr structures */
- unsigned int addr_maxlen;
-};
-
-/* Initialize a t_fullhostent structure */
-#define fullhostent_init(h) do { \
-memset((h), 0, sizeof(t_fullhostent)); \
-(h)->hp.h_addr_list = (char **) & ((h)->list); \
-(h)->list[0] = (char *) & ((h)->addr); \
-(h)->list[1] = NULL; \
-(h)->addr_maxlen = HTS_MAXADDRLEN; \
-} while(0)
-
#endif