mirror of
https://github.com/ilyakooo0/nixpkgs.git
synced 2024-11-14 05:37:40 +03:00
* qemu-kvm updated to 0.13.0. Removed the Unix domain socket patch
because we don't need it anymore. svn path=/nixpkgs/trunk/; revision=24351
This commit is contained in:
parent
158a053a92
commit
adce9ff2d1
@ -3,14 +3,14 @@
|
||||
assert stdenv.isLinux;
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "qemu-kvm-0.12.5";
|
||||
name = "qemu-kvm-0.13.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/kvm/${name}.tar.gz";
|
||||
sha256 = "0gsqmws24s96g1h0z2m8r28pyv08wnzh5jip925ym167rfp8bh14";
|
||||
sha256 = "0lxym4p2bvqcb37h3wbjd81w4jrj4dn5kivdxcpx27iwgq6n1ckd";
|
||||
};
|
||||
|
||||
patches = [ ./unix-domain.patch ./smb-tmpdir.patch ];
|
||||
patches = [ ./smb-tmpdir.patch ];
|
||||
|
||||
buildInputs = [ zlib SDL alsaLib pkgconfig pciutils libuuid ];
|
||||
|
||||
|
@ -1,175 +0,0 @@
|
||||
diff -rc --exclude '*~' qemu-kvm-0.12.1.2-orig/slirp/socket.c qemu-kvm-0.12.1.2/slirp/socket.c
|
||||
*** qemu-kvm-0.12.1.2-orig/slirp/socket.c 2009-12-29 21:46:34.000000000 +0100
|
||||
--- qemu-kvm-0.12.1.2/slirp/socket.c 2010-01-03 20:24:11.000000000 +0100
|
||||
***************
|
||||
*** 588,593 ****
|
||||
--- 588,594 ----
|
||||
u_int lport, int flags)
|
||||
{
|
||||
struct sockaddr_in addr;
|
||||
+ struct sockaddr_un addr_un;
|
||||
struct socket *so;
|
||||
int s, opt = 1;
|
||||
socklen_t addrlen = sizeof(addr);
|
||||
***************
|
||||
*** 622,634 ****
|
||||
so->so_lport = lport; /* Kept in network format */
|
||||
so->so_laddr.s_addr = laddr; /* Ditto */
|
||||
|
||||
! addr.sin_family = AF_INET;
|
||||
! addr.sin_addr.s_addr = haddr;
|
||||
! addr.sin_port = hport;
|
||||
|
||||
! if (((s = qemu_socket(AF_INET,SOCK_STREAM,0)) < 0) ||
|
||||
(setsockopt(s,SOL_SOCKET,SO_REUSEADDR,(char *)&opt,sizeof(int)) < 0) ||
|
||||
! (bind(s,(struct sockaddr *)&addr, sizeof(addr)) < 0) ||
|
||||
(listen(s,1) < 0)) {
|
||||
int tmperrno = errno; /* Don't clobber the real reason we failed */
|
||||
|
||||
--- 623,644 ----
|
||||
so->so_lport = lport; /* Kept in network format */
|
||||
so->so_laddr.s_addr = laddr; /* Ditto */
|
||||
|
||||
! so->so_uds = ntohs(hport) >= 0xff00;
|
||||
!
|
||||
! if (so->so_uds) {
|
||||
! addr_un.sun_family = AF_UNIX;
|
||||
! sprintf(addr_un.sun_path, "./%d.socket", ntohs(hport));
|
||||
! unlink(addr_un.sun_path);
|
||||
! } else {
|
||||
! addr.sin_family = AF_INET;
|
||||
! addr.sin_addr.s_addr = haddr;
|
||||
! addr.sin_port = hport;
|
||||
! }
|
||||
|
||||
! if (((s = qemu_socket(so->so_uds ? PF_UNIX : AF_INET, SOCK_STREAM, 0)) < 0) ||
|
||||
(setsockopt(s,SOL_SOCKET,SO_REUSEADDR,(char *)&opt,sizeof(int)) < 0) ||
|
||||
! (bind(s, so->so_uds ? (struct sockaddr *) &addr_un : (struct sockaddr *) &addr,
|
||||
! so->so_uds ? sizeof(addr_un) : sizeof(addr)) < 0) ||
|
||||
(listen(s,1) < 0)) {
|
||||
int tmperrno = errno; /* Don't clobber the real reason we failed */
|
||||
|
||||
***************
|
||||
*** 644,655 ****
|
||||
}
|
||||
setsockopt(s,SOL_SOCKET,SO_OOBINLINE,(char *)&opt,sizeof(int));
|
||||
|
||||
! getsockname(s,(struct sockaddr *)&addr,&addrlen);
|
||||
! so->so_fport = addr.sin_port;
|
||||
! if (addr.sin_addr.s_addr == 0 || addr.sin_addr.s_addr == loopback_addr.s_addr)
|
||||
! so->so_faddr = slirp->vhost_addr;
|
||||
! else
|
||||
! so->so_faddr = addr.sin_addr;
|
||||
|
||||
so->s = s;
|
||||
return so;
|
||||
--- 654,670 ----
|
||||
}
|
||||
setsockopt(s,SOL_SOCKET,SO_OOBINLINE,(char *)&opt,sizeof(int));
|
||||
|
||||
! if (so->so_uds) {
|
||||
! so->so_fport = hport;
|
||||
! so->so_faddr = slirp->vhost_addr;
|
||||
! } else {
|
||||
! getsockname(s,(struct sockaddr *)&addr,&addrlen);
|
||||
! so->so_fport = addr.sin_port;
|
||||
! if (addr.sin_addr.s_addr == 0 || addr.sin_addr.s_addr == loopback_addr.s_addr)
|
||||
! so->so_faddr = slirp->vhost_addr;
|
||||
! else
|
||||
! so->so_faddr = addr.sin_addr;
|
||||
! }
|
||||
|
||||
so->s = s;
|
||||
return so;
|
||||
diff -rc --exclude '*~' qemu-kvm-0.12.1.2-orig/slirp/socket.h qemu-kvm-0.12.1.2/slirp/socket.h
|
||||
*** qemu-kvm-0.12.1.2-orig/slirp/socket.h 2009-12-29 21:46:34.000000000 +0100
|
||||
--- qemu-kvm-0.12.1.2/slirp/socket.h 2010-01-03 20:20:50.000000000 +0100
|
||||
***************
|
||||
*** 33,39 ****
|
||||
struct in_addr so_laddr; /* local host table entry */
|
||||
u_int16_t so_fport; /* foreign port */
|
||||
u_int16_t so_lport; /* local port */
|
||||
!
|
||||
u_int8_t so_iptos; /* Type of service */
|
||||
u_int8_t so_emu; /* Is the socket emulated? */
|
||||
|
||||
--- 33,40 ----
|
||||
struct in_addr so_laddr; /* local host table entry */
|
||||
u_int16_t so_fport; /* foreign port */
|
||||
u_int16_t so_lport; /* local port */
|
||||
! int so_uds; /* foreign "port" is a unix domain socket */
|
||||
!
|
||||
u_int8_t so_iptos; /* Type of service */
|
||||
u_int8_t so_emu; /* Is the socket emulated? */
|
||||
|
||||
diff -rc --exclude '*~' qemu-kvm-0.12.1.2-orig/slirp/tcp_subr.c qemu-kvm-0.12.1.2/slirp/tcp_subr.c
|
||||
*** qemu-kvm-0.12.1.2-orig/slirp/tcp_subr.c 2009-12-29 21:46:34.000000000 +0100
|
||||
--- qemu-kvm-0.12.1.2/slirp/tcp_subr.c 2010-01-03 20:20:50.000000000 +0100
|
||||
***************
|
||||
*** 383,389 ****
|
||||
Slirp *slirp = inso->slirp;
|
||||
struct socket *so;
|
||||
struct sockaddr_in addr;
|
||||
! socklen_t addrlen = sizeof(struct sockaddr_in);
|
||||
struct tcpcb *tp;
|
||||
int s, opt;
|
||||
|
||||
--- 383,390 ----
|
||||
Slirp *slirp = inso->slirp;
|
||||
struct socket *so;
|
||||
struct sockaddr_in addr;
|
||||
! struct sockaddr_un addr_un;
|
||||
! socklen_t addrlen;
|
||||
struct tcpcb *tp;
|
||||
int s, opt;
|
||||
|
||||
***************
|
||||
*** 413,419 ****
|
||||
|
||||
(void) tcp_mss(sototcpcb(so), 0);
|
||||
|
||||
! if ((s = accept(inso->s,(struct sockaddr *)&addr,&addrlen)) < 0) {
|
||||
tcp_close(sototcpcb(so)); /* This will sofree() as well */
|
||||
return;
|
||||
}
|
||||
--- 414,423 ----
|
||||
|
||||
(void) tcp_mss(sototcpcb(so), 0);
|
||||
|
||||
! addrlen = inso->so_uds ? sizeof(struct sockaddr_un) : sizeof(struct sockaddr_in);
|
||||
!
|
||||
! if ((inso->so_uds && (s = accept(inso->s, (struct sockaddr *) &addr_un, &addrlen)) < 0) ||
|
||||
! (!inso->so_uds && (s = accept(inso->s, (struct sockaddr *) &addr, &addrlen)) < 0)) {
|
||||
tcp_close(sototcpcb(so)); /* This will sofree() as well */
|
||||
return;
|
||||
}
|
||||
***************
|
||||
*** 425,435 ****
|
||||
opt = 1;
|
||||
setsockopt(s,IPPROTO_TCP,TCP_NODELAY,(char *)&opt,sizeof(int));
|
||||
|
||||
! so->so_fport = addr.sin_port;
|
||||
! so->so_faddr = addr.sin_addr;
|
||||
! /* Translate connections from localhost to the real hostname */
|
||||
! if (so->so_faddr.s_addr == 0 || so->so_faddr.s_addr == loopback_addr.s_addr)
|
||||
! so->so_faddr = slirp->vhost_addr;
|
||||
|
||||
/* Close the accept() socket, set right state */
|
||||
if (inso->so_state & SS_FACCEPTONCE) {
|
||||
--- 429,444 ----
|
||||
opt = 1;
|
||||
setsockopt(s,IPPROTO_TCP,TCP_NODELAY,(char *)&opt,sizeof(int));
|
||||
|
||||
! if (inso->so_uds) {
|
||||
! so->so_fport = htons(s); /* use the fd number as the foreign port */
|
||||
! so->so_faddr = slirp->vhost_addr;
|
||||
! } else {
|
||||
! so->so_fport = addr.sin_port;
|
||||
! so->so_faddr = addr.sin_addr;
|
||||
! /* Translate connections from localhost to the real hostname */
|
||||
! if (so->so_faddr.s_addr == 0 || so->so_faddr.s_addr == loopback_addr.s_addr)
|
||||
! so->so_faddr = slirp->vhost_addr;
|
||||
! }
|
||||
|
||||
/* Close the accept() socket, set right state */
|
||||
if (inso->so_state & SS_FACCEPTONCE) {
|
Loading…
Reference in New Issue
Block a user