*/
/*
- Copyright (C) 2004 Kern Sibbald and John Walker
+ Copyright (C) 2004-2005 Kern Sibbald
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
*/
-class IPADDR {
+class IPADDR : public SMARTALLOC {
public:
typedef enum { R_SINGLE, R_SINGLE_PORT, R_SINGLE_ADDR, R_MULTIPLE,
R_DEFAULT, R_EMPTY
IPADDR(int af);
IPADDR(const IPADDR & src);
private:
- IPADDR() { /* block this construction */ }
+ IPADDR() { /* block this construction */ }
i_type type;
union {
struct sockaddr dontuse;
#ifdef HAVE_IPV6
struct sockaddr_in6 dontuse6;
#endif
- } buf;
+ } saddrbuf;
struct sockaddr *saddr;
struct sockaddr_in *saddr4;
#ifdef HAVE_IPV6
public:
void set_type(i_type o);
i_type get_type() const;
- unsigned short get_port() const;
- void set_port(unsigned short port);
+ unsigned short get_port_net_order() const;
+ unsigned short get_port_host_order() const
+ {
+ return ntohs(get_port_net_order());
+ }
+ void set_port_net(unsigned short port);
int get_family() const;
struct sockaddr *get_sockaddr();
int get_sockaddr_len();
extern void init_default_addresses(dlist ** addr, int port);
extern const char *get_first_address(dlist * addrs, char *outputbuf, int outlen);
-extern int get_first_port(dlist * addrs);
+extern int get_first_port_net_order(dlist * addrs);
+extern int get_first_port_host_order(dlist * addrs);
extern const char *build_addresses_str(dlist *addrs, char *buf, int blen);
+
+extern int sockaddr_get_port_net_order(const struct sockaddr *sa);
+extern int sockaddr_get_port(const struct sockaddr *sa);
+extern char *sockaddr_to_ascii(const struct sockaddr *sa, char *buf, int len);
+#ifdef WIN32
+#undef HAVE_OLD_SOCKOPT
+#endif
+#ifdef HAVE_OLD_SOCKOPT
+extern int inet_aton(const char *cp, struct in_addr *inp);
+#endif