VirtualBox

Changeset 58548 in vbox for trunk/src/VBox/NetworkServices


Ignore:
Timestamp:
Nov 3, 2015 2:06:48 AM (9 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
103880
Message:

NAT/Net: pxtcp_pcb_heard - factor most of the code out into
pxtcp_pcb_accept_outbound and call it with address/port from the new
pcb. No functional change intended. This is in preparation to
provide proxy-like early accept for normal listening pcbs.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/NetworkServices/NAT/pxtcp.c

    r58542 r58548  
    276276static void pxtcp_pcb_err(void *, err_t);
    277277
     278static err_t pxtcp_pcb_accept_outbound(struct tcp_pcb *, struct pbuf *, int, ipX_addr_t *, u16_t);
     279
    278280static err_t pxtcp_pcb_forward_outbound(struct pxtcp *, struct pbuf *);
    279281static void pxtcp_pcb_forward_outbound_close(struct pxtcp *);
     
    10041006{
    10051007    struct pbuf *p = (struct pbuf *)arg;
     1008
     1009    LWIP_UNUSED_ARG(error);     /* always ERR_OK */
     1010
     1011    return pxtcp_pcb_accept_outbound(newpcb, p,
     1012               PCB_ISIPV6(newpcb), &newpcb->local_ip, newpcb->local_port);
     1013}
     1014
     1015
     1016static err_t
     1017pxtcp_pcb_accept_outbound(struct tcp_pcb *newpcb, struct pbuf *p,
     1018                          int is_ipv6, ipX_addr_t *dst_addr, u16_t dst_port)
     1019{
    10061020    struct pxtcp *pxtcp;
    1007     ipX_addr_t dst_addr;
     1021    ipX_addr_t mapped_dst_addr;
    10081022    int sdom;
    10091023    SOCKET sock;
    10101024    ssize_t nsent;
    10111025    int sockerr = 0;
    1012 
    1013     LWIP_UNUSED_ARG(error);     /* always ERR_OK */
    10141026
    10151027    /*
     
    10261038    tcp_setprio(newpcb, TCP_PRIO_MAX);
    10271039
    1028     pxremap_outbound_ipX(PCB_ISIPV6(newpcb), &dst_addr, &newpcb->local_ip);
    1029 
    1030     sdom = PCB_ISIPV6(newpcb) ? PF_INET6 : PF_INET;
     1040    pxremap_outbound_ipX(is_ipv6, &mapped_dst_addr, dst_addr);
     1041
     1042    sdom = is_ipv6 ? PF_INET6 : PF_INET;
    10311043    sock = proxy_connected_socket(sdom, SOCK_STREAM,
    1032                                   &dst_addr, newpcb->local_port);
     1044                                  &mapped_dst_addr, dst_port);
    10331045    if (sock == INVALID_SOCKET) {
    10341046        sockerr = SOCKERRNO();
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette