~serge-hallyn/ubuntu/raring/libvirt/libvirt-hugepages

« back to all changes in this revision

Viewing changes to gnulib/tests/sockets.c

  • Committer: James Westby
  • Author(s): Jamie Strandboge
  • Date: 2009-12-02 14:22:21 UTC
  • mfrom: (1.2.3 upstream) (3.4.9 squeeze)
  • Revision ID: james.westby@canonical.com-20091202142221-ltkr0to6h52mla1y
Tags: 0.7.2-4ubuntu1
* Merge from debian testing. Remaining changes:
  - debian/control:
    + Don't build-depend on QEmu
    + Bump bridge-utils, dnsmasq-base, netcat-openbsd, and iptables
      to Depends of libvirt-bin
    + Recommends qemu-kvm (>= 0.11.0-0ubuntu6)
    + Add versioned Conflicts/Replaces to libvirt0 for libvirt0-dbg,
      since we used to ship them as such
    + We call libxen-dev libxen3-dev, so change all references
    + Build-Depends on libxml2-utils
    + Build-Depends on open-iscsi-utils instead of open-iscsi due to
      LP: #414986
  - debian/postinst:
    + rename the libvirt group to libvirtd
    + add each admin user to the libvirtd group
  - debian/libvirt-bin.postrm: rename the libvirt group to libvirtd
  - debian/rules: add DEB_MAKE_CHECK_TARGET := check
  - debian/patches/900[0-7]: updated/refreshed for new paths in 0.7.2
  - debian/patches/series: don't apply 0002-qemu-disable-network.diff.patch
  - AppArmor integration:
    + debian/control: Build-Depends on libapparmor-dev and Suggests
      apparmor (>= 2.3+1289-0ubuntu14)
    + debian/libvirt-bin.dirs: add /etc/apparmor.d/abstractions,
      /etc/apparmor.d/force-complain, /etc/apparmor.d/libvirt,
      /etc/cron.daily and /usr/share/apport/package-hooks
    + add debian/libvirt-bin.cron.daily (LP: #438165)
    + add debian/libvirt-bin.apport
    + debian/libvirt-bin.install: install apparmor profiles, abstractions
      and apport hook
    + debian/postinst: reload apparmor profiles
    + debian/libvirt-bin.postrm: remove apparmor symlinks on purge
    + debian/libvirt-bin.preinst: added to force complain on certain
      upgrades
    + debian/README.Debian: add AppArmor section based on the upstream
      documentation
    + debian/rules: use --with-apparmor and copy apparmor and apport hook to
      debian/tmp
  - Dropped the following patches now included upstream:
    + 0005-Close-logfile-fd-after-spawning-qemu.patch
    + 9090-reenable-nonfile-labels.patch
    + 9091-apparmor.patch
    + 9092-apparmor-autoreconf.patch
* AppArmor integration updates:
  - debian/apparmor/usr.sbin.libvirtd: allow libvirtd access to
    /usr/lib/libvirt/* (LP: #480478)
  - debian/apparmor/libvirt-qemu: allow guests access to
    /etc/pki/libvirt-vnc/** (LP: #484562)
  - debian/libvirt-bin.postinst: 0.7.2 moved /usr/bin/virt-aa-helper to
    /usr/lib/libvirt, so the profile changed from usr.bin.virt-aa-helper
    to usr.lib.libvirt.virt-aa-helper and needs to be migrated. If the user
    made no changes to the old profile, remove it, otherwise, update the
    paths, preserving the shipped usr.lib.libvirt.virt-aa-helper
  - update to 0.7.4 version of the sVirt AppArmor driver (can be dropped in
    0.7.4):
    + debian/patches/9008-apparmor-caps-mockup.patch
    + debian/patches/9009-apparmor-lp453335.patch
    + debian/patches/9010-apparmor-lp460271.patch
    + debian/patches/9011-apparmor-code-cleanups.patch
  - add virt-aa-helper-test and examples/apparmor that were omitted from the
    upstream tarball (can be dropped in 0.7.5):
    + debian/patches/9012-apparmor-add-virt-aa-helper-test.patch
    + debian/patches/9013-apparmor-examples.patch
    + debian/rules: add post-patches target to make virt-aa-helper-test
      executable
* debian/patches/0005-Fix-SELinux-linking-issues.patch: updated to work
  when both apparmor and selinux are available. This patch should be
  dropped in 0.7.4.
* debian/patches/9007-default-config-test-case.patch: updated to not fail
  if building in a deep directory
* debian/patches/9014-event-fuzz.patch: add a little fuzz to not be quite
  so precise with expected expiry time. Fixes FTBFS with HZ=100 kernels.
  Can be dropped in 0.7.5.
* debian/patches/9015-hal-startup-failure-is-nonfatal.patch: disable hal
  driver if hald is not running instead of dying. Can be dropped in
  0.7.4.
* debian/control: temporarily remove Build-Depends on libcap-ng-dev, which
  isn't available in Ubuntu main yet
* revert change to new source format 3.0 (quilt) since Launchpad can't
  handle it yet (see LP: #293106)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* sockets.c --- wrappers for Windows socket functions
2
 
 
3
 
   Copyright (C) 2008-2009 Free Software Foundation, Inc.
4
 
 
5
 
   This program is free software: you can redistribute it and/or modify
6
 
   it under the terms of the GNU General Public License as published by
7
 
   the Free Software Foundation; either version 3 of the License, or
8
 
   (at your option) any later version.
9
 
 
10
 
   This program is distributed in the hope that it will be useful,
11
 
   but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 
   GNU General Public License for more details.
14
 
 
15
 
   You should have received a copy of the GNU General Public License
16
 
   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
17
 
 
18
 
/* Written by Simon Josefsson */
19
 
 
20
 
#include <config.h>
21
 
 
22
 
/* Specification.  */
23
 
#include "sockets.h"
24
 
 
25
 
#if WINDOWS_SOCKETS
26
 
 
27
 
/* This includes winsock2.h on MinGW. */
28
 
#include <sys/socket.h>
29
 
 
30
 
#include "close-hook.h"
31
 
 
32
 
/* Get set_winsock_errno, FD_TO_SOCKET etc. */
33
 
#include "w32sock.h"
34
 
 
35
 
static int
36
 
close_fd_maybe_socket (int fd, const struct close_hook *remaining_list)
37
 
{
38
 
  SOCKET sock;
39
 
  WSANETWORKEVENTS ev;
40
 
 
41
 
  /* Test whether fd refers to a socket.  */
42
 
  sock = FD_TO_SOCKET (fd);
43
 
  ev.lNetworkEvents = 0xDEADBEEF;
44
 
  WSAEnumNetworkEvents (sock, NULL, &ev);
45
 
  if (ev.lNetworkEvents != 0xDEADBEEF)
46
 
    {
47
 
      /* fd refers to a socket.  */
48
 
      /* FIXME: other applications, like squid, use an undocumented
49
 
         _free_osfhnd free function.  But this is not enough: The 'osfile'
50
 
         flags for fd also needs to be cleared, but it is hard to access it.
51
 
         Instead, here we just close twice the file descriptor.  */
52
 
      if (closesocket (sock))
53
 
        {
54
 
          set_winsock_errno ();
55
 
          return -1;
56
 
        }
57
 
      else
58
 
        {
59
 
          /* This call frees the file descriptor and does a
60
 
             CloseHandle ((HANDLE) _get_osfhandle (fd)), which fails.  */
61
 
          _close (fd);
62
 
          return 0;
63
 
        }
64
 
    }
65
 
  else
66
 
    /* Some other type of file descriptor.  */
67
 
    return execute_close_hooks (fd, remaining_list);
68
 
}
69
 
 
70
 
static struct close_hook close_sockets_hook;
71
 
 
72
 
#endif
73
 
 
74
 
int
75
 
gl_sockets_startup (int version)
76
 
{
77
 
#if WINDOWS_SOCKETS
78
 
  WSADATA data;
79
 
  int err;
80
 
 
81
 
  err = WSAStartup (version, &data);
82
 
  if (err != 0)
83
 
    return 1;
84
 
 
85
 
  if (data.wVersion < version)
86
 
    return 2;
87
 
 
88
 
  register_close_hook (close_fd_maybe_socket, &close_sockets_hook);
89
 
#endif
90
 
 
91
 
  return 0;
92
 
}
93
 
 
94
 
int
95
 
gl_sockets_cleanup (void)
96
 
{
97
 
#if WINDOWS_SOCKETS
98
 
  int err;
99
 
 
100
 
  unregister_close_hook (&close_sockets_hook);
101
 
 
102
 
  err = WSACleanup ();
103
 
  if (err != 0)
104
 
    return 1;
105
 
#endif
106
 
 
107
 
  return 0;
108
 
}