diff options
author | Guillaume Subiron <maethor@subiron.org> | 2015-12-19 22:25:02 +0100 |
---|---|---|
committer | Jason Wang <jasowang@redhat.com> | 2016-02-04 14:13:11 +0800 |
commit | 9b5a30dc41c7455a17c88ed1a3677ba5f937f31d (patch) | |
tree | 127bdbf9b99215c48fd6f4924cdea777f4a70921 | |
parent | 8a87f121ca82fbb34877ec843dfc50b327baef9d (diff) | |
download | qemu-9b5a30dc41c7455a17c88ed1a3677ba5f937f31d.zip qemu-9b5a30dc41c7455a17c88ed1a3677ba5f937f31d.tar.gz qemu-9b5a30dc41c7455a17c88ed1a3677ba5f937f31d.tar.bz2 |
slirp: Make udp_attach IPv6 compatible
A unsigned short is now passed in argument to udp_attach instead of using a
hardcoded "AF_INET" to call qemu_socket().
This prepares for IPv6 support.
Signed-off-by: Guillaume Subiron <maethor@subiron.org>
Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: Jason Wang <jasowang@redhat.com>
-rw-r--r-- | slirp/ip_icmp.c | 2 | ||||
-rw-r--r-- | slirp/udp.c | 7 | ||||
-rw-r--r-- | slirp/udp.h | 2 |
3 files changed, 6 insertions, 5 deletions
diff --git a/slirp/ip_icmp.c b/slirp/ip_icmp.c index 3a29847..592f33a 100644 --- a/slirp/ip_icmp.c +++ b/slirp/ip_icmp.c @@ -162,7 +162,7 @@ icmp_input(struct mbuf *m, int hlen) if (icmp_send(so, m, hlen) == 0) { return; } - if(udp_attach(so) == -1) { + if (udp_attach(so, AF_INET) == -1) { DEBUG_MISC((dfd,"icmp_input udp_attach errno = %d-%s\n", errno,strerror(errno))); sofree(so); diff --git a/slirp/udp.c b/slirp/udp.c index 63776c0..92c48c4 100644 --- a/slirp/udp.c +++ b/slirp/udp.c @@ -169,7 +169,7 @@ udp_input(register struct mbuf *m, int iphlen) if (!so) { goto bad; } - if(udp_attach(so) == -1) { + if (udp_attach(so, AF_INET) == -1) { DEBUG_MISC((dfd," udp_attach errno = %d-%s\n", errno,strerror(errno))); sofree(so); @@ -277,9 +277,10 @@ int udp_output(struct socket *so, struct mbuf *m, } int -udp_attach(struct socket *so) +udp_attach(struct socket *so, unsigned short af) { - if((so->s = qemu_socket(AF_INET,SOCK_DGRAM,0)) != -1) { + so->s = qemu_socket(af, SOCK_DGRAM, 0); + if (so->s != -1) { so->so_expire = curtime + SO_EXPIRE; insque(so, &so->slirp->udb); } diff --git a/slirp/udp.h b/slirp/udp.h index a04b8ce..2f9de38 100644 --- a/slirp/udp.h +++ b/slirp/udp.h @@ -76,7 +76,7 @@ struct mbuf; void udp_init(Slirp *); void udp_cleanup(Slirp *); void udp_input(register struct mbuf *, int); -int udp_attach(struct socket *); +int udp_attach(struct socket *, unsigned short af); void udp_detach(struct socket *); struct socket * udp_listen(Slirp *, uint32_t, u_int, uint32_t, u_int, int); |