pxudp.c revision 5f53595a0c2e10e26dfc3e39c2d3f25b90d996f7
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/* -*- indent-tabs-mode: nil; -*- */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * Our poll manager handler.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * lwIP ("internal") side of the proxied connection.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * Host ("external") side of the proxied connection.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * For some protocols (notably: DNS) we know we are getting just
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * one reply, so we don't want the pcb and the socket to sit there
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * waiting to be g/c'ed by timeout. This field counts request and
int count;
static void pxudp_pcb_delete_pxudp(void *);
static void pxudp_pcb_write_inbound(void *);
pxudp_init(void)
static ssize_t
static ssize_t
static struct pxudp *
return pxudp;
struct pxudp *
return pxudp;
int status;
if (status < 0) {
return POLLIN;
return POLLIN;
return POLLIN;
static struct pxudp *
pxudp_allocate(void)
return NULL;
return NULL;
return NULL;
return pxudp;
void *ptr;
pbuf_free(p);
static struct udp_pcb *
return NULL;
return pcb;
int mapping;
int sdom;
pbuf_free(p);
pbuf_free(p);
if (p != NULL) {
pbuf_free(p);
struct pbuf *p;
int status;
if (status < 0) {
return POLLIN;
return POLLIN;
if (p == NULL) {
return POLLIN;
pbuf_free(p);
return POLLIN;
pbuf_free(p);
return POLLIN;
return POLLIN;
struct pbuf *p;
pbuf_free(p);