static bool
proxy_entry_new(struct proxy_connection **list,
struct event_set *es,
- const struct sockaddr_in server_addr,
+ const struct openvpn_sockaddr server_addr,
const socket_descriptor_t sd_client,
struct buffer *initial_data,
const char *journal_dir)
struct proxy_connection *cp;
/* connect to port share server */
- if ((sd_server = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0)
+ if ((sd_server = socket(server_addr.addr.sa.sa_family, SOCK_STREAM, IPPROTO_TCP)) < 0)
{
msg(M_WARN|M_ERRNO, "PORT SHARE PROXY: cannot create socket");
return false;
}
- status = openvpn_connect(sd_server, (const struct sockaddr *) &server_addr, 5, NULL);
+ status = openvpn_connect(sd_server, &server_addr.addr.sa, 5, NULL);
if (status)
{
msg(M_WARN, "PORT SHARE PROXY: connect to port-share server failed");
control_message_from_parent(const socket_descriptor_t sd_control,
struct proxy_connection **list,
struct event_set *es,
- const struct sockaddr_in server_addr,
+ const struct openvpn_sockaddr server_addr,
const int max_initial_buf,
const char *journal_dir)
{
* This is the main function for the port share proxy background process.
*/
static void
-port_share_proxy(const struct sockaddr_in hostaddr,
+port_share_proxy(const struct openvpn_sockaddr hostaddr,
const socket_descriptor_t sd_control,
const int max_initial_buf,
const char *journal_dir)
{
pid_t pid;
socket_descriptor_t fd[2];
- struct sockaddr_in hostaddr;
+ struct openvpn_sockaddr hostaddr;
struct port_share *ps;
int status;
struct addrinfo *ai;
*/
status = openvpn_getaddrinfo(GETADDR_RESOLVE|GETADDR_FATAL,
- host, port, 0, NULL, AF_INET, &ai);
+ host, port, 0, NULL, AF_UNSPEC, &ai);
ASSERT(status==0);
- hostaddr = *((struct sockaddr_in *) ai->ai_addr);
+ ASSERT(sizeof(hostaddr.addr) >= ai->ai_addrlen);
+ memcpy(&hostaddr.addr.sa, ai->ai_addr, ai->ai_addrlen);
freeaddrinfo(ai);
+ if (msg_test(D_PS_PROXY_DEBUG))
+ {
+ struct gc_arena gc = gc_new();
+ dmsg(D_PS_PROXY_DEBUG, "PORT SHARE PROXY: receiver will be %s",
+ print_openvpn_sockaddr(&hostaddr, &gc));
+ gc_free(&gc);
+ }
+
/*
* Make a socket for foreground and background processes
* to communicate.