• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/ap/gpl/openvpn-2.3.1/src/openvpn/

Lines Matching refs:sock

696 create_socket (struct link_socket *sock)
699 if (sock->info.proto == PROTO_UDPv4)
701 sock->sd = create_socket_udp (sock->sockflags);
702 sock->sockflags |= SF_GETADDRINFO_DGRAM;
705 if (sock->socks_proxy)
706 sock->ctrl_sd = create_socket_tcp (AF_INET);
709 else if (sock->info.proto == PROTO_TCPv4_SERVER
710 || sock->info.proto == PROTO_TCPv4_CLIENT)
712 sock->sd = create_socket_tcp (AF_INET);
714 else if (sock->info.proto == PROTO_TCPv6_SERVER
715 || sock->info.proto == PROTO_TCPv6_CLIENT)
717 sock->sd = create_socket_tcp (AF_INET6);
719 else if (sock->info.proto == PROTO_UDPv6)
721 sock->sd = create_socket_udp6 (sock->sockflags);
722 sock->sockflags |= SF_GETADDRINFO_DGRAM;
1086 socket_frame_init (const struct frame *frame, struct link_socket *sock)
1089 overlapped_io_init (&sock->reads, frame, FALSE, false);
1090 overlapped_io_init (&sock->writes, frame, TRUE, false);
1091 sock->rw_handle.read = sock->reads.overlapped.hEvent;
1092 sock->rw_handle.write = sock->writes.overlapped.hEvent;
1095 if (link_socket_connection_oriented (sock))
1098 stream_buf_init (&sock->stream_buf,
1099 &sock->reads.buf_init,
1100 sock->sockflags,
1101 sock->info.proto);
1103 alloc_buf_sock_tun (&sock->stream_buf_data,
1108 stream_buf_init (&sock->stream_buf,
1109 &sock->stream_buf_data,
1110 sock->sockflags,
1111 sock->info.proto);
1127 resolve_bind_local (struct link_socket *sock)
1132 if (!addr_defined (&sock->info.lsa->local))
1135 switch(addr_guess_family(sock->info.proto, sock->local_host))
1138 sock->info.lsa->local.addr.in4.sin_family = AF_INET;
1139 sock->info.lsa->local.addr.in4.sin_addr.s_addr =
1140 (sock->local_host ? getaddr (GETADDR_RESOLVE | GETADDR_WARN_ON_SIGNAL | GETADDR_FATAL,
1141 sock->local_host,
1146 sock->info.lsa->local.addr.in4.sin_port = htons (sock->local_port);
1152 CLEAR(sock->info.lsa->local.addr.in6);
1153 if (sock->local_host)
1158 sock->local_host, 0, NULL, AF_INET6, &ai);
1160 sock->info.lsa->local.addr.in6 = *((struct sockaddr_in6*)(ai->ai_addr));
1166 sock->info.lsa->local.addr.in6.sin6_family = AF_INET6;
1167 sock->info.lsa->local.addr.in6.sin6_addr = in6addr_any;
1173 sock->local_host,
1176 sock->info.lsa->local.addr.in6.sin6_port = htons (sock->local_port);
1183 if (sock->bind_local)
1186 if (sock->socks_proxy && sock->info.proto == PROTO_UDPv4)
1187 socket_bind (sock->ctrl_sd, &sock->info.lsa->local, "SOCKS");
1190 socket_bind (sock->sd, &sock->info.lsa->local, "TCP/UDP");
1196 resolve_remote (struct link_socket *sock,
1204 if (!sock->did_resolve_remote)
1207 if (!addr_defined (&sock->info.lsa->remote))
1209 af = addr_guess_family(sock->info.proto, sock->remote_host);
1213 sock->info.lsa->remote.addr.in4.sin_family = AF_INET;
1214 sock->info.lsa->remote.addr.in4.sin_addr.s_addr = 0;
1217 CLEAR(sock->info.lsa->remote.addr.in6);
1218 sock->info.lsa->remote.addr.in6.sin6_family = AF_INET6;
1219 sock->info.lsa->remote.addr.in6.sin6_addr = in6addr_any;
1223 if (sock->remote_host)
1225 unsigned int flags = sf2gaf(GETADDR_RESOLVE|GETADDR_UPDATE_MANAGEMENT_STATE, sock->sockflags);
1229 if (sock->connection_profiles_defined && sock->resolve_retry_seconds == RESOLV_RETRY_INFINITE)
1237 if (sock->resolve_retry_seconds)
1249 if (sock->resolve_retry_seconds)
1252 retry = sock->resolve_retry_seconds;
1266 status = openvpn_getaddrinfo(flags, sock->remote_host, retry,
1269 sock->info.lsa->remote.addr.in6 = *((struct sockaddr_in6*)(ai->ai_addr));
1294 sock->info.lsa->remote.addr.in4.sin_port = htons (sock->remote_port);
1297 sock->info.lsa->remote.addr.in6.sin6_port = htons (sock->remote_port);
1303 if (link_socket_actual_defined (&sock->info.lsa->actual))
1306 print_link_socket_actual (&sock->info.lsa->actual, &gc));
1312 CLEAR (sock->info.lsa->actual);
1313 sock->info.lsa->actual.dest = sock->info.lsa->remote;
1317 sock->did_resolve_remote = true;
1327 struct link_socket *sock;
1329 ALLOC_OBJ_CLEAR (sock, struct link_socket);
1330 sock->sd = SOCKET_UNDEFINED;
1332 sock->ctrl_sd = SOCKET_UNDEFINED;
1334 return sock;
1339 link_socket_init_phase1 (struct link_socket *sock,
1373 ASSERT (sock);
1375 sock->connection_profiles_defined = connection_profiles_defined;
1377 sock->local_host = local_host;
1378 sock->local_port = local_port;
1379 sock->remote_host = remote_host;
1380 sock->remote_port = remote_port;
1383 sock->http_proxy = http_proxy;
1387 sock->socks_proxy = socks_proxy;
1390 sock->bind_local = bind_local;
1391 sock->inetd = inetd;
1392 sock->resolve_retry_seconds = resolve_retry_seconds;
1393 sock->connect_retry_seconds = connect_retry_seconds;
1394 sock->connect_timeout = connect_timeout;
1395 sock->connect_retry_max = connect_retry_max;
1396 sock->mtu_discover_type = mtu_discover_type;
1399 sock->gremlin = gremlin;
1402 sock->socket_buffer_sizes.rcvbuf = rcvbuf;
1403 sock->socket_buffer_sizes.sndbuf = sndbuf;
1405 sock->sockflags = sockflags;
1407 sock->info.proto = proto;
1408 sock->info.remote_float = remote_float;
1409 sock->info.lsa = lsa;
1410 sock->info.ipchange_command = ipchange_command;
1411 sock->info.plugins = plugins;
1413 sock->mode = mode;
1417 ASSERT (sock->info.proto == PROTO_TCPv4_SERVER
1418 || sock->info.proto == PROTO_TCPv6_SERVER
1420 ASSERT (!sock->inetd);
1421 sock->sd = accept_from->sd;
1428 else if (sock->http_proxy)
1430 ASSERT (sock->info.proto == PROTO_TCPv4_CLIENT);
1431 ASSERT (!sock->inetd);
1434 sock->remote_host = http_proxy->options.server;
1435 sock->remote_port = http_proxy->options.port;
1438 sock->proxy_dest_host = remote_host;
1439 sock->proxy_dest_port = remote_port;
1444 else if (sock->socks_proxy)
1446 ASSERT (sock->info.proto == PROTO_TCPv4_CLIENT || sock->info.proto == PROTO_UDPv4);
1447 ASSERT (!sock->inetd);
1450 sock->remote_host = socks_proxy->server;
1451 sock->remote_port = socks_proxy->port;
1454 sock->proxy_dest_host = remote_host;
1455 sock->proxy_dest_port = remote_port;
1460 sock->remote_host = remote_host;
1461 sock->remote_port = remote_port;
1465 if (sock->info.proto == PROTO_TCPv4_SERVER)
1467 if (sock->mode == LS_MODE_TCP_ACCEPT_FROM)
1468 sock->bind_local = false;
1470 sock->bind_local = true;
1474 if (sock->inetd)
1476 ASSERT (sock->info.proto != PROTO_TCPv4_CLIENT
1477 && sock->info.proto != PROTO_TCPv6_CLIENT);
1479 sock->sd = inetd_socket_descriptor;
1483 create_socket (sock);
1486 socket_set_buffers (sock->sd, &sock->socket_buffer_sizes);
1489 socket_set_mark (sock->sd, mark);
1491 resolve_bind_local (sock);
1492 resolve_remote (sock, 1, NULL, NULL);
1498 link_socket_init_phase2 (struct link_socket *sock,
1507 ASSERT (sock);
1516 socket_frame_init (frame, sock);
1523 if (sock->resolve_retry_seconds)
1524 remote_dynamic = sock->remote_host;
1527 if (sock->inetd)
1529 if (sock->info.proto == PROTO_TCPv4_SERVER
1530 || sock->info.proto == PROTO_TCPv6_SERVER) {
1532 sock->info.lsa->actual.dest.addr.sa.sa_family = AF_INET;
1538 if (getsockname (sock->sd, (struct sockaddr *)&local_addr, &addrlen) == 0) {
1539 sock->info.lsa->actual.dest.addr.sa.sa_family = local_addr.addr.sa.sa_family;
1541 proto2ascii(sock->info.proto, false), local_addr.addr.sa.sa_family,
1542 sock->sd);
1545 proto2ascii(sock->info.proto, false), sock->sd);
1550 proto2ascii(sock->info.proto, false));
1552 sock->sd =
1553 socket_listen_accept (sock->sd,
1554 &sock->info.lsa->actual,
1557 &sock->info.lsa->local,
1559 sock->inetd == INETD_NOWAIT,
1568 resolve_remote (sock, 2, &remote_dynamic, signal_received);
1574 if (sock->info.proto == PROTO_TCPv4_SERVER
1575 ||sock->info.proto == PROTO_TCPv6_SERVER)
1577 switch (sock->mode)
1580 sock->sd = socket_listen_accept (sock->sd,
1581 &sock->info.lsa->actual,
1584 &sock->info.lsa->local,
1590 socket_do_listen (sock->sd,
1591 &sock->info.lsa->local,
1596 sock->sd = socket_do_accept (sock->sd,
1597 &sock->info.lsa->actual,
1599 if (!socket_defined (sock->sd))
1604 tcp_connection_established (&sock->info.lsa->actual);
1610 else if (sock->info.proto == PROTO_TCPv4_CLIENT
1611 ||sock->info.proto == PROTO_TCPv6_CLIENT)
1620 socket_connect (&sock->sd,
1621 &sock->info.lsa->local,
1622 sock->bind_local,
1623 &sock->info.lsa->actual.dest,
1624 sock->connection_profiles_defined,
1627 sock->connect_retry_seconds,
1628 sock->connect_timeout,
1629 sock->connect_retry_max,
1630 sock->sockflags,
1639 else if (sock->http_proxy)
1641 proxy_retry = establish_http_proxy_passthru (sock->http_proxy,
1642 sock->sd,
1643 sock->proxy_dest_host,
1644 sock->proxy_dest_port,
1645 &sock->stream_buf.residual,
1650 else if (sock->socks_proxy)
1652 establish_socks_proxy_passthru (sock->socks_proxy,
1653 sock->sd,
1654 sock->proxy_dest_host,
1655 sock->proxy_dest_port,
1661 openvpn_close_socket (sock->sd);
1662 sock->sd = create_socket_tcp (AF_INET);
1667 else if (sock->info.proto == PROTO_UDPv4 && sock->socks_proxy)
1669 socket_connect (&sock->ctrl_sd,
1670 &sock->info.lsa->local,
1671 sock->bind_local,
1672 &sock->info.lsa->actual.dest,
1673 sock->connection_profiles_defined,
1676 sock->connect_retry_seconds,
1677 sock->connect_timeout,
1678 sock->connect_retry_max,
1679 sock->sockflags,
1685 establish_socks_proxy_udpassoc (sock->socks_proxy,
1686 sock->ctrl_sd,
1687 sock->sd,
1688 &sock->socks_relay.dest,
1694 sock->remote_host = sock->proxy_dest_host;
1695 sock->remote_port = sock->proxy_dest_port;
1696 sock->did_resolve_remote = false;
1698 addr_zero_host(&sock->info.lsa->actual.dest);
1699 addr_zero_host(&sock->info.lsa->remote);
1701 resolve_remote (sock, 1, NULL, signal_received);
1714 addr_copy_host(&sock->info.lsa->remote, &sock->info.lsa->actual.dest);
1719 socket_set_flags (sock->sd, sock->sockflags);
1722 set_nonblock (sock->sd);
1726 set_cloexec (sock->sd);
1729 if (socket_defined (sock->ctrl_sd))
1730 set_cloexec (sock->ctrl_sd);
1734 set_mtu_discover_type (sock->sd, sock->mtu_discover_type);
1738 set_sock_extended_error_passing (sock->sd);
1743 const int msglevel = (sock->mode == LS_MODE_TCP_ACCEPT_FROM) ? D_INIT_MEDIUM : M_INFO;
1745 if (sock->inetd)
1746 msg (msglevel, "%s link local: [inetd]", proto2ascii (sock->info.proto, true));
1749 proto2ascii (sock->info.proto, true),
1750 (sock->bind_local ? " (bound)" : ""),
1751 print_sockaddr_ex (&sock->info.lsa->local, ":", sock->bind_local ? PS_SHOW_PORT : 0, &gc));
1755 proto2ascii (sock->info.proto, true),
1756 print_link_socket_actual_ex (&sock->info.lsa->actual,
1772 link_socket_close (struct link_socket *sock)
1774 if (sock)
1777 const int gremlin = GREMLIN_CONNECTION_FLOOD_LEVEL (sock->gremlin);
1782 if (socket_defined (sock->sd))
1785 close_net_event_win32 (&sock->listen_handle, sock->sd, 0);
1790 if (openvpn_close_socket (sock->sd))
1793 sock->sd = SOCKET_UNDEFINED;
1797 overlapped_io_close (&sock->reads);
1798 overlapped_io_close (&sock->writes);
1804 if (socket_defined (sock->ctrl_sd))
1806 if (openvpn_close_socket (sock->ctrl_sd))
1808 sock->ctrl_sd = SOCKET_UNDEFINED;
1812 stream_buf_close (&sock->stream_buf);
1813 free_buf (&sock->stream_buf_data);
1815 free (sock);
2054 stream_buf_read_setup_dowork (struct link_socket* sock)
2056 if (sock->stream_buf.residual.len && !sock->stream_buf.residual_fully_formed)
2058 ASSERT (buf_copy (&sock->stream_buf.buf, &sock->stream_buf.residual));
2059 ASSERT (buf_init (&sock->stream_buf.residual, 0));
2060 sock->stream_buf.residual_fully_formed = stream_buf_added (&sock->stream_buf, 0);
2062 sock->stream_buf.residual_fully_formed ? "YES" : "NO",
2063 sock->stream_buf.residual.len);
2066 if (!sock->stream_buf.residual_fully_formed)
2067 stream_buf_set_next (&sock->stream_buf);
2068 return !sock->stream_buf.residual_fully_formed;
2612 link_socket_read_tcp (struct link_socket *sock,
2617 if (!sock->stream_buf.residual_fully_formed)
2620 len = socket_finalize (sock->sd, &sock->reads, buf, NULL);
2623 stream_buf_get_next (&sock->stream_buf, &frag);
2624 len = recv (sock->sd, BPTR (&frag), BLEN (&frag), MSG_NOSIGNAL);
2628 sock->stream_reset = true;
2633 if (sock->stream_buf.residual_fully_formed
2634 || stream_buf_added (&sock->stream_buf, len)) /* packet complete? */
2636 stream_buf_get_final (&sock->stream_buf, buf);
2637 stream_buf_reset (&sock->stream_buf);
2671 link_socket_read_udp_posix_recvmsg (struct link_socket *sock,
2689 buf->len = recvmsg (sock->sd, &mesg, 0);
2734 link_socket_read_udp_posix (struct link_socket *sock,
2740 socklen_t expectedlen = af_addr_size(proto_sa_family(sock->info.proto));
2745 if (proto_is_udp(sock->info.proto) && sock->sockflags & SF_USE_IP_PKTINFO)
2746 fromlen = link_socket_read_udp_posix_recvmsg (sock, buf, maxsize, from);
2749 buf->len = recvfrom (sock->sd, BPTR (buf), maxsize, 0,
2763 link_socket_write_tcp (struct link_socket *sock,
2769 ASSERT (len <= sock->stream_buf.maxlen);
2773 return link_socket_write_win32 (sock, buf, to);
2775 return link_socket_write_tcp_posix (sock, buf, to);
2782 link_socket_write_udp_posix_sendmsg (struct link_socket *sock,
2794 switch (sock->info.lsa->remote.addr.sa.sa_family)
2845 return sendmsg (sock->sd, &mesg, 0);
2857 socket_recv_queue (struct link_socket *sock, int maxsize)
2859 if (sock->reads.iostate == IOSTATE_INITIAL)
2865 if (proto_is_udp(sock->info.proto))
2867 sock->reads.buf = sock->reads.buf_init;
2869 else if (proto_is_tcp(sock->info.proto))
2871 stream_buf_get_next (&sock->stream_buf, &sock->reads.buf);
2879 wsabuf[0].buf = BPTR (&sock->reads.buf);
2880 wsabuf[0].len = maxsize ? maxsize : BLEN (&sock->reads.buf);
2883 ASSERT (wsabuf[0].len <= BLEN (&sock->reads.buf));
2886 ASSERT (ResetEvent (sock->reads.overlapped.hEvent));
2887 sock->reads.flags = 0;
2889 if (proto_is_udp(sock->info.proto))
2891 sock->reads.addr_defined = true;
2892 if (sock->info.proto == PROTO_UDPv6)
2893 sock->reads.addrlen = sizeof (sock->reads.addr6);
2895 sock->reads.addrlen = sizeof (sock->reads.addr);
2897 sock->sd,
2900 &sock->reads.size,
2901 &sock->reads.flags,
2902 (struct sockaddr *) &sock->reads.addr,
2903 &sock->reads.addrlen,
2904 &sock->reads.overlapped,
2907 else if (proto_is_tcp(sock->info.proto))
2909 sock->reads.addr_defined = false;
2911 sock->sd,
2914 &sock->reads.size,
2915 &sock->reads.flags,
2916 &sock->reads.overlapped,
2927 int addrlen = af_addr_size(sock->info.lsa->local.addr.sa.sa_family);
2928 if (sock->reads.addr_defined && sock->reads.addrlen != addrlen)
2929 bad_address_length (sock->reads.addrlen, addrlen);
2930 sock->reads.iostate = IOSTATE_IMMEDIATE_RETURN;
2933 ASSERT (SetEvent (sock->reads.overlapped.hEvent));
2934 sock->reads.status = 0;
2938 (int) sock->reads.size);
2945 sock->reads.iostate = IOSTATE_QUEUED;
2946 sock->reads.status = status;
2953 ASSERT (SetEvent (sock->reads.overlapped.hEvent));
2954 sock->reads.iostate = IOSTATE_IMMEDIATE_RETURN;
2955 sock->reads.status = status;
2963 return sock->reads.iostate;
2967 socket_send_queue (struct link_socket *sock, struct buffer *buf, const struct link_socket_actual *to)
2969 if (sock->writes.iostate == IOSTATE_INITIAL)
2975 sock->writes.buf = sock->writes.buf_init;
2976 sock->writes.buf.len = 0;
2977 ASSERT (buf_copy (&sock->writes.buf, buf));
2980 wsabuf[0].buf = BPTR (&sock->writes.buf);
2981 wsabuf[0].len = BLEN (&sock->writes.buf);
2984 ASSERT (ResetEvent (sock->writes.overlapped.hEvent));
2985 sock->writes.flags = 0;
2987 if (proto_is_udp(sock->info.proto))
2990 sock->writes.addr_defined = true;
2991 if (sock->info.proto == PROTO_UDPv6)
2993 sock->writes.addr6 = to->dest.addr.in6;
2994 sock->writes.addrlen = sizeof (sock->writes.addr6);
2998 sock->writes.addr = to->dest.addr.in4;
2999 sock->writes.addrlen = sizeof (sock->writes.addr);
3003 sock->sd,
3006 &sock->writes.size,
3007 sock->writes.flags,
3008 (struct sockaddr *) &sock->writes.addr,
3009 sock->writes.addrlen,
3010 &sock->writes.overlapped,
3013 else if (proto_is_tcp(sock->info.proto))
3016 sock->writes.addr_defined = false;
3019 sock->sd,
3022 &sock->writes.size,
3023 sock->writes.flags,
3024 &sock->writes.overlapped,
3035 sock->writes.iostate = IOSTATE_IMMEDIATE_RETURN;
3038 ASSERT (SetEvent (sock->writes.overlapped.hEvent));
3040 sock->writes.status = 0;
3044 (int) sock->writes.size);
3051 sock->writes.iostate = IOSTATE_QUEUED;
3052 sock->writes.status = status;
3059 ASSERT (SetEvent (sock->writes.overlapped.hEvent));
3060 sock->writes.iostate = IOSTATE_IMMEDIATE_RETURN;
3061 sock->writes.status = status;
3071 return sock->writes.iostate;