mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-02 15:23:53 -06:00
slirp: Make Socket structure IPv6 compatible
This patch replaces foreign and local address/port couples in Socket structure by 2 sockaddr_storage which can be casted in sockaddr_in. Direct access to address and port is still possible thanks to some \#define, so retrocompatibility of the existing code is assured. The ss_family field of sockaddr_storage is declared after each socket creation. The whole structure is also saved/restored when a Qemu session is saved/restored. 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>
This commit is contained in:
parent
18137fba35
commit
eae303ff23
7 changed files with 78 additions and 16 deletions
|
@ -190,6 +190,7 @@ udp_input(register struct mbuf *m, int iphlen)
|
|||
/*
|
||||
* Setup fields
|
||||
*/
|
||||
so->so_lfamily = AF_INET;
|
||||
so->so_laddr = ip->ip_src;
|
||||
so->so_lport = uh->uh_sport;
|
||||
|
||||
|
@ -202,6 +203,7 @@ udp_input(register struct mbuf *m, int iphlen)
|
|||
*/
|
||||
}
|
||||
|
||||
so->so_ffamily = AF_INET;
|
||||
so->so_faddr = ip->ip_dst; /* XXX */
|
||||
so->so_fport = uh->uh_dport; /* XXX */
|
||||
|
||||
|
@ -376,6 +378,7 @@ udp_listen(Slirp *slirp, uint32_t haddr, u_int hport, uint32_t laddr,
|
|||
socket_set_fast_reuse(so->s);
|
||||
|
||||
getsockname(so->s,(struct sockaddr *)&addr,&addrlen);
|
||||
so->so_ffamily = AF_INET;
|
||||
so->so_fport = addr.sin_port;
|
||||
if (addr.sin_addr.s_addr == 0 ||
|
||||
addr.sin_addr.s_addr == loopback_addr.s_addr) {
|
||||
|
@ -383,6 +386,7 @@ udp_listen(Slirp *slirp, uint32_t haddr, u_int hport, uint32_t laddr,
|
|||
} else {
|
||||
so->so_faddr = addr.sin_addr;
|
||||
}
|
||||
so->so_lfamily = AF_INET;
|
||||
so->so_lport = lport;
|
||||
so->so_laddr.s_addr = laddr;
|
||||
if (flags != SS_FACCEPTONCE)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue