Merge "master" into "wdp".
authorBen Pfaff <blp@nicira.com>
Tue, 1 Jun 2010 17:40:17 +0000 (10:40 -0700)
committerBen Pfaff <blp@nicira.com>
Tue, 1 Jun 2010 17:40:17 +0000 (10:40 -0700)
62 files changed:
ChangeLog
Makefile.am
acinclude.m4
boot.sh
build-aux/update-debian-changelog [new file with mode: 0755]
configure.ac
datapath/datapath.c
datapath/flow.h
datapath/linux-2.6/compat-2.6/include/linux/if_vlan.h
datapath/linux-2.6/compat-2.6/include/linux/skbuff.h
datapath/linux-2.6/config/config-linux-2.6.23-rc9-kvm [deleted file]
debian/automake.mk
debian/changelog
extras/ezio/ezio-term.c
extras/ezio/ovs-switchui.c
include/openvswitch/xflow.h
lib/automake.mk
lib/daemon.c
lib/dhcp-client.c
lib/flow.h
lib/learning-switch.c
lib/mac-learning.c
lib/netdev.c
lib/poll-loop.c
lib/poll-loop.h
lib/rconn.c
lib/socket-util.c
lib/stream-fd.c
lib/stream-tcp.c
lib/stream-unix.c
lib/unixctl.c
lib/xfif-linux.c
lib/xfif-netdev.c
lib/xfif.c
lib/xflow-util.c
lib/xflow-util.h
m4/as_echo.m4 [deleted file]
m4/openvswitch.m4
ofproto/collectors.c
ofproto/discovery.c
ofproto/fail-open.c
ofproto/in-band.c
ofproto/ofproto-sflow.c
ofproto/ofproto.c
ofproto/wdp-xflow.c
ovsdb/automake.mk
ovsdb/log.c
ovsdb/ovsdbmonitor/automake.mk
ovsdb/ovsdbmonitor/ovsdbmonitor.py.in [deleted file]
ovsdb/trigger.c
tests/classifier.at
tests/ovsdb-data.at
tests/test-classifier.c
tests/test-vconn.c
utilities/automake.mk
utilities/ovs-dpctl.c
utilities/ovs-ofctl.c
vswitchd/automake.mk
vswitchd/bridge.c
vswitchd/ovs-vswitchd.8.in
vswitchd/proc-net-compat.c
xenserver/ovs-xenserverd.c

index ce5d4d4..29fcd2d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+v1.0.1 - 31 May 2010
+--------------------
+    - New "patch" interface type
+    - Bug fixes
+
 v1.0.0 - 15 May 2010
 --------------------
     - Configuration database with remote management
index c23b670..37d98f6 100644 (file)
@@ -28,17 +28,24 @@ endif
 BUILT_SOURCES =
 CLEANFILES =
 DISTCLEANFILES =
-EXTRA_DIST = INSTALL.bridge \
+EXTRA_DIST = \
+       CodingStyle \
        INSTALL.KVM \
        INSTALL.Linux \
-       INSTALL.userspace \
        INSTALL.OpenFlow \
        INSTALL.SSL \
        INSTALL.XenServer \
-       README-gcov
+       INSTALL.bridge \
+       INSTALL.userspace \
+       NOTICE \
+       README-gcov \
+       REPORTING-BUGS \
+       SubmittingPatches \
+       boot.sh
 bin_PROGRAMS =
 sbin_PROGRAMS =
 bin_SCRIPTS =
+DIST_HOOKS =
 dist_man_MANS =
 dist_pkgdata_DATA =
 dist_pkgdata_SCRIPTS =
@@ -52,7 +59,9 @@ noinst_SCRIPTS =
 OVSIDL_BUILT =
 SUFFIXES =
 
-EXTRA_DIST += soexpand.pl
+EXTRA_DIST += \
+       build-aux/update-debian-changelog \
+       soexpand.pl
 
 ro_c = echo '/* -*- mode: c; buffer-read-only: t -*- */'
 
@@ -78,6 +87,32 @@ SUFFIXES += .in
        fi
        mv $@.tmp $@
 
+# If we're checked out from a Git repository, make sure that every
+# file that is in Git is distributed.
+dist-hook-git:
+       if test -e $(srcdir)/.git && (git --version) >/dev/null 2>&1; then    \
+         rc=0;                                                               \
+         for d in `cd $(srcdir) && git ls-files`; do                         \
+           if test ! -e $(distdir)/$$d; then                                 \
+             case $$d in # (                                                 \
+               .gitignore|*/.gitignore) ;; # (                               \
+               *)                                                            \
+                  if test $$rc = 0; then                                     \
+                    echo "The distribution is missing the following files:"; \
+                    rc=1;                                                    \
+                  fi;                                                        \
+                  echo "$$d";                                                \
+                  ;;                                                         \
+             esac;                                                           \
+           fi                                                                \
+         done;                                                               \
+         exit $$rc;                                                          \
+       fi
+DIST_HOOKS += dist-hook-git
+
+dist-hook: $(DIST_HOOKS)
+.PHONY: $(DIST_HOOKS)
+
 include lib/automake.mk
 include ofproto/automake.mk
 include utilities/automake.mk
@@ -89,3 +124,4 @@ include vswitchd/automake.mk
 include ovsdb/automake.mk
 include xenserver/automake.mk
 include extras/ezio/automake.mk
+
index cabe7d3..015bf66 100644 (file)
@@ -157,8 +157,8 @@ AC_DEFUN([OVS_CHECK_LINUX26_COMPAT], [
   OVS_GREP_IFELSE([$KSRC26/include/linux/skbuff.h], 
                   [skb_copy_from_linear_data_offset],
                   [OVS_DEFINE([HAVE_SKB_COPY_FROM_LINEAR_DATA_OFFSET])])
-  OVS_GREP_IFELSE([$KSRC26/include/linux/skbuff.h], [skb_cow],
-                  [OVS_DEFINE([HAVE_SKB_COW])])
+  OVS_GREP_IFELSE([$KSRC26/include/linux/skbuff.h], [skb_cow_head],
+                  [OVS_DEFINE([HAVE_SKB_COW_HEAD])])
   OVS_GREP_IFELSE([$KSRC26/include/linux/skbuff.h], [skb_transport_header],
                   [OVS_DEFINE([HAVE_SKBUFF_HEADER_HELPERS])])
   OVS_GREP_IFELSE([$KSRC26/include/linux/skbuff.h], [skb_warn_if_lro],
diff --git a/boot.sh b/boot.sh
index 05dd359..dce5625 100755 (executable)
--- a/boot.sh
+++ b/boot.sh
@@ -1,2 +1,6 @@
 #! /bin/sh
 autoreconf --install --force
+
+# Ensure that debian/changelog is up-to-date.
+VERSION=`autom4te --language=autoconf -t 'AC_INIT:$2' configure.ac`
+build-aux/update-debian-changelog debian/changelog "$VERSION"
diff --git a/build-aux/update-debian-changelog b/build-aux/update-debian-changelog
new file mode 100755 (executable)
index 0000000..dfb84fc
--- /dev/null
@@ -0,0 +1,37 @@
+#! /bin/sh
+
+if test $# != 2; then
+    cat <<EOF 
+$0, to update version information a Debian changelog
+usage: $0 CHANGELOG VERSION
+
+This utility checks whether CHANGELOG, which should be a Debian changelog
+file, contains a record for VERSION.  If not, then it adds one at the top.
+EOF
+    exit 1
+fi
+
+CHANGELOG=$1
+VERSION=$2
+if test ! -e "$CHANGELOG"; then
+    echo "$0: $CHANGELOG does not exist (use --help for help"
+    exit 1
+fi
+
+if grep '('$VERSION')' debian/changelog >/dev/null 2>&1; then
+    :
+else
+    echo "Adding change log record for $VERSION to $CHANGELOG"
+    {
+        cat <<EOF
+openvswitch ($VERSION) unstable; urgency=low
+
+  * New upstream version.
+
+ -- Open vSwitch team <dev@openvswitch.org>  `date -u +"%a, %d %b %Y %H:%M:%S +0000"`
+
+EOF
+        cat "$CHANGELOG"
+    } > "$CHANGELOG".new
+    mv "$CHANGELOG".new "$CHANGELOG"
+fi
index 727c68a..ba0aa2e 100644 (file)
@@ -13,7 +13,7 @@
 # limitations under the License.
 
 AC_PREREQ(2.64)
-AC_INIT(openvswitch, 1.0.0, ovs-bugs@openvswitch.org)
+AC_INIT(openvswitch, 1.0.1, ovs-bugs@openvswitch.org)
 NX_BUILDNR
 AC_CONFIG_SRCDIR([datapath/datapath.c])
 AC_CONFIG_MACRO_DIR([m4])
index 702750f..d0a0431 100644 (file)
@@ -1573,7 +1573,7 @@ static int get_port_group(struct datapath *dp, struct xflow_port_group __user *u
        if (copy_from_user(&pg, upg, sizeof pg))
                return -EFAULT;
 
-       return do_get_port_group(dp, pg.ports, pg.n_ports, pg.group, &pg.n_ports);
+       return do_get_port_group(dp, pg.ports, pg.n_ports, pg.group, &upg->n_ports);
 }
 
 static int get_listen_mask(const struct file *f)
@@ -1791,7 +1791,7 @@ static int compat_get_port_group(struct datapath *dp, struct compat_xflow_port_g
                return -EFAULT;
 
        return do_get_port_group(dp, compat_ptr(pg.ports), pg.n_ports,
-                                pg.group, &pg.n_ports);
+                                pg.group, &upg->n_ports);
 }
 
 static int compat_get_flow(struct xflow_flow *flow, const struct compat_xflow_flow __user *compat)
index 5e2da59..c42ae1b 100644 (file)
@@ -14,6 +14,7 @@
 #include <linux/types.h>
 #include <linux/rcupdate.h>
 #include <linux/gfp.h>
+#include <linux/time.h>
 
 #include "openvswitch/xflow.h"
 #include "table.h"
index 63d25ae..0d70c55 100644 (file)
@@ -2,6 +2,7 @@
 #define __LINUX_IF_VLAN_WRAPPER_H 1
 
 #include_next <linux/if_vlan.h>
+#include <linux/skbuff.h>
 
 /* All of these were introduced in a single commit preceding 2.6.33, so
  * presumably all of them or none of them are present. */
 #define VLAN_TAG_PRESENT       VLAN_CFI_MASK
 #endif
 
-#endif
+/*
+ * The behavior of __vlan_put_tag() has changed over time:
+ *
+ *      - In 2.6.26 and earlier, it adjusted both MAC and network header
+ *        pointers.  (The latter didn't make any sense.)
+ *
+ *      - In 2.6.27 and 2.6.28, it did not adjust any header pointers at all.
+ *
+ *      - In 2.6.29 and later, it adjusts the MAC header pointer only.
+ *
+ * This is the version from 2.6.33.  We unconditionally substitute this version
+ * to avoid the need to guess whether the version in the kernel tree is
+ * acceptable.
+ */
+#define __vlan_put_tag rpl_vlan_put_tag
+static inline struct sk_buff *__vlan_put_tag(struct sk_buff *skb, u16 vlan_tci)
+{
+       struct vlan_ethhdr *veth;
+
+       if (skb_cow_head(skb, VLAN_HLEN) < 0) {
+               kfree_skb(skb);
+               return NULL;
+       }
+       veth = (struct vlan_ethhdr *)skb_push(skb, VLAN_HLEN);
+
+       /* Move the mac addresses to the beginning of the new header. */
+       memmove(skb->data, skb->data + VLAN_HLEN, 2 * VLAN_ETH_ALEN);
+       skb->mac_header -= VLAN_HLEN;
+
+       /* first, the ethernet type */
+       veth->h_vlan_proto = htons(ETH_P_8021Q);
+
+       /* now, the TCI */
+       veth->h_vlan_TCI = htons(vlan_tci);
+
+       skb->protocol = htons(ETH_P_8021Q);
+
+       return skb;
+}
+
+#endif /* linux/if_vlan.h wrapper */
index 5ed0e48..15acea9 100644 (file)
@@ -53,7 +53,7 @@ static inline void skb_copy_to_linear_data_offset(struct sk_buff *skb,
 #define NET_SKB_PAD    16
 #endif
 
-#ifndef HAVE_SKB_COW
+#ifndef HAVE_SKB_COW_HEAD
 static inline int __skb_cow(struct sk_buff *skb, unsigned int headroom,
                             int cloned)
 {
@@ -74,7 +74,7 @@ static inline int skb_cow_head(struct sk_buff *skb, unsigned int headroom)
 {
        return __skb_cow(skb, headroom, skb_header_cloned(skb));
 }
-#endif  /* !HAVE_SKB_COW */
+#endif /* !HAVE_SKB_COW_HEAD */
 
 #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23)
 static inline int skb_clone_writable(struct sk_buff *skb, int len)
diff --git a/datapath/linux-2.6/config/config-linux-2.6.23-rc9-kvm b/datapath/linux-2.6/config/config-linux-2.6.23-rc9-kvm
deleted file mode 100644 (file)
index f287cf7..0000000
+++ /dev/null
@@ -1,1408 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.23-rc9
-# Fri Oct 19 15:08:37 2007
-#
-CONFIG_X86_32=y
-CONFIG_GENERIC_TIME=y
-CONFIG_GENERIC_CMOS_UPDATE=y
-CONFIG_CLOCKSOURCE_WATCHDOG=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
-CONFIG_LOCKDEP_SUPPORT=y
-CONFIG_STACKTRACE_SUPPORT=y
-CONFIG_SEMAPHORE_SLEEPERS=y
-CONFIG_X86=y
-CONFIG_MMU=y
-CONFIG_ZONE_DMA=y
-CONFIG_QUICKLIST=y
-CONFIG_GENERIC_ISA_DMA=y
-CONFIG_GENERIC_IOMAP=y
-CONFIG_GENERIC_BUG=y
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_ARCH_MAY_HAVE_PC_FDC=y
-CONFIG_DMI=y
-CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-
-#
-# General setup
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_LOCK_KERNEL=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-CONFIG_LOCALVERSION=""
-# CONFIG_LOCALVERSION_AUTO is not set
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-CONFIG_SYSVIPC_SYSCTL=y
-CONFIG_POSIX_MQUEUE=y
-CONFIG_BSD_PROCESS_ACCT=y
-# CONFIG_BSD_PROCESS_ACCT_V3 is not set
-CONFIG_TASKSTATS=y
-CONFIG_TASK_DELAY_ACCT=y
-CONFIG_TASK_XACCT=y
-CONFIG_TASK_IO_ACCOUNTING=y
-# CONFIG_USER_NS is not set
-# CONFIG_AUDIT is not set
-CONFIG_IKCONFIG=y
-CONFIG_IKCONFIG_PROC=y
-CONFIG_LOG_BUF_SHIFT=14
-# CONFIG_CPUSETS is not set
-CONFIG_SYSFS_DEPRECATED=y
-CONFIG_RELAY=y
-CONFIG_BLK_DEV_INITRD=y
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_SYSCTL=y
-# CONFIG_EMBEDDED is not set
-CONFIG_UID16=y
-CONFIG_SYSCTL_SYSCALL=y
-CONFIG_KALLSYMS=y
-CONFIG_KALLSYMS_ALL=y
-CONFIG_KALLSYMS_EXTRA_PASS=y
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_ANON_INODES=y
-CONFIG_EPOLL=y
-CONFIG_SIGNALFD=y
-CONFIG_EVENTFD=y
-CONFIG_SHMEM=y
-CONFIG_VM_EVENT_COUNTERS=y
-CONFIG_SLAB=y
-# CONFIG_SLUB is not set
-# CONFIG_SLOB is not set
-CONFIG_RT_MUTEXES=y
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-# CONFIG_MODULE_FORCE_UNLOAD is not set
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-CONFIG_STOP_MACHINE=y
-CONFIG_BLOCK=y
-CONFIG_LBD=y
-CONFIG_BLK_DEV_IO_TRACE=y
-CONFIG_LSF=y
-# CONFIG_BLK_DEV_BSG is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=y
-CONFIG_IOSCHED_CFQ=y
-CONFIG_DEFAULT_AS=y
-# CONFIG_DEFAULT_DEADLINE is not set
-# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
-
-#
-# Processor type and features
-#
-# CONFIG_TICK_ONESHOT is not set
-# CONFIG_NO_HZ is not set
-# CONFIG_HIGH_RES_TIMERS is not set
-CONFIG_SMP=y
-CONFIG_X86_PC=y
-# CONFIG_X86_ELAN is not set
-# CONFIG_X86_VOYAGER is not set
-# CONFIG_X86_NUMAQ is not set
-# CONFIG_X86_SUMMIT is not set
-# CONFIG_X86_BIGSMP is not set
-# CONFIG_X86_VISWS is not set
-# CONFIG_X86_GENERICARCH is not set
-# CONFIG_X86_ES7000 is not set
-# CONFIG_PARAVIRT is not set
-# CONFIG_M386 is not set
-CONFIG_M486=y
-# CONFIG_M586 is not set
-# CONFIG_M586TSC is not set
-# CONFIG_M586MMX is not set
-# CONFIG_M686 is not set
-# CONFIG_MPENTIUMII is not set
-# CONFIG_MPENTIUMIII is not set
-# CONFIG_MPENTIUMM is not set
-# CONFIG_MCORE2 is not set
-# CONFIG_MPENTIUM4 is not set
-# CONFIG_MK6 is not set
-# CONFIG_MK7 is not set
-# CONFIG_MK8 is not set
-# CONFIG_MCRUSOE is not set
-# CONFIG_MEFFICEON is not set
-# CONFIG_MWINCHIPC6 is not set
-# CONFIG_MWINCHIP2 is not set
-# CONFIG_MWINCHIP3D is not set
-# CONFIG_MGEODEGX1 is not set
-# CONFIG_MGEODE_LX is not set
-# CONFIG_MCYRIXIII is not set
-# CONFIG_MVIAC3_2 is not set
-# CONFIG_MVIAC7 is not set
-CONFIG_X86_GENERIC=y
-CONFIG_X86_CMPXCHG=y
-CONFIG_X86_L1_CACHE_SHIFT=7
-CONFIG_X86_XADD=y
-CONFIG_RWSEM_XCHGADD_ALGORITHM=y
-# CONFIG_ARCH_HAS_ILOG2_U32 is not set
-# CONFIG_ARCH_HAS_ILOG2_U64 is not set
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_X86_PPRO_FENCE=y
-CONFIG_X86_F00F_BUG=y
-CONFIG_X86_WP_WORKS_OK=y
-CONFIG_X86_INVLPG=y
-CONFIG_X86_BSWAP=y
-CONFIG_X86_POPAD_OK=y
-CONFIG_X86_ALIGNMENT_16=y
-CONFIG_X86_INTEL_USERCOPY=y
-CONFIG_X86_MINIMUM_CPU_FAMILY=4
-# CONFIG_HPET_TIMER is not set
-CONFIG_NR_CPUS=8
-# CONFIG_SCHED_SMT is not set
-CONFIG_SCHED_MC=y
-CONFIG_PREEMPT_NONE=y
-# CONFIG_PREEMPT_VOLUNTARY is not set
-# CONFIG_PREEMPT is not set
-CONFIG_PREEMPT_BKL=y
-CONFIG_X86_LOCAL_APIC=y
-CONFIG_X86_IO_APIC=y
-# CONFIG_X86_MCE is not set
-CONFIG_VM86=y
-# CONFIG_TOSHIBA is not set
-# CONFIG_I8K is not set
-# CONFIG_X86_REBOOTFIXUPS is not set
-# CONFIG_MICROCODE is not set
-# CONFIG_X86_MSR is not set
-# CONFIG_X86_CPUID is not set
-
-#
-# Firmware Drivers
-#
-# CONFIG_EDD is not set
-# CONFIG_DELL_RBU is not set
-# CONFIG_DCDBAS is not set
-CONFIG_DMIID=y
-# CONFIG_NOHIGHMEM is not set
-CONFIG_HIGHMEM4G=y
-# CONFIG_HIGHMEM64G is not set
-CONFIG_PAGE_OFFSET=0xC0000000
-CONFIG_HIGHMEM=y
-CONFIG_ARCH_FLATMEM_ENABLE=y
-CONFIG_ARCH_SPARSEMEM_ENABLE=y
-CONFIG_ARCH_SELECT_MEMORY_MODEL=y
-CONFIG_ARCH_POPULATES_NODE_MAP=y
-CONFIG_SELECT_MEMORY_MODEL=y
-CONFIG_FLATMEM_MANUAL=y
-# CONFIG_DISCONTIGMEM_MANUAL is not set
-# CONFIG_SPARSEMEM_MANUAL is not set
-CONFIG_FLATMEM=y
-CONFIG_FLAT_NODE_MEM_MAP=y
-CONFIG_SPARSEMEM_STATIC=y
-CONFIG_SPLIT_PTLOCK_CPUS=4
-# CONFIG_RESOURCES_64BIT is not set
-CONFIG_ZONE_DMA_FLAG=1
-CONFIG_BOUNCE=y
-CONFIG_NR_QUICK=1
-CONFIG_VIRT_TO_BUS=y
-# CONFIG_HIGHPTE is not set
-# CONFIG_MATH_EMULATION is not set
-# CONFIG_MTRR is not set
-CONFIG_IRQBALANCE=y
-CONFIG_SECCOMP=y
-# CONFIG_HZ_100 is not set
-CONFIG_HZ_250=y
-# CONFIG_HZ_300 is not set
-# CONFIG_HZ_1000 is not set
-CONFIG_HZ=250
-# CONFIG_KEXEC is not set
-# CONFIG_CRASH_DUMP is not set
-CONFIG_PHYSICAL_START=0x100000
-# CONFIG_RELOCATABLE is not set
-CONFIG_PHYSICAL_ALIGN=0x100000
-CONFIG_HOTPLUG_CPU=y
-CONFIG_COMPAT_VDSO=y
-CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
-
-#
-# Power management options (ACPI, APM)
-#
-CONFIG_PM=y
-# CONFIG_PM_LEGACY is not set
-# CONFIG_PM_DEBUG is not set
-CONFIG_PM_SLEEP_SMP=y
-CONFIG_PM_SLEEP=y
-CONFIG_SUSPEND_SMP_POSSIBLE=y
-CONFIG_SUSPEND=y
-CONFIG_HIBERNATION_SMP_POSSIBLE=y
-# CONFIG_HIBERNATION is not set
-# CONFIG_ACPI is not set
-CONFIG_APM=y
-# CONFIG_APM_IGNORE_USER_SUSPEND is not set
-# CONFIG_APM_DO_ENABLE is not set
-# CONFIG_APM_CPU_IDLE is not set
-# CONFIG_APM_DISPLAY_BLANK is not set
-# CONFIG_APM_ALLOW_INTS is not set
-# CONFIG_APM_REAL_MODE_POWER_OFF is not set
-
-#
-# CPU Frequency scaling
-#
-# CONFIG_CPU_FREQ is not set
-
-#
-# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
-#
-CONFIG_PCI=y
-# CONFIG_PCI_GOBIOS is not set
-# CONFIG_PCI_GOMMCONFIG is not set
-# CONFIG_PCI_GODIRECT is not set
-CONFIG_PCI_GOANY=y
-CONFIG_PCI_BIOS=y
-CONFIG_PCI_DIRECT=y
-# CONFIG_PCIEPORTBUS is not set
-CONFIG_ARCH_SUPPORTS_MSI=y
-# CONFIG_PCI_MSI is not set
-# CONFIG_PCI_DEBUG is not set
-CONFIG_HT_IRQ=y
-CONFIG_ISA_DMA_API=y
-CONFIG_ISA=y
-# CONFIG_EISA is not set
-# CONFIG_MCA is not set
-# CONFIG_SCx200 is not set
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
-# CONFIG_PCCARD is not set
-# CONFIG_HOTPLUG_PCI is not set
-
-#
-# Executable file formats
-#
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_AOUT is not set
-CONFIG_BINFMT_MISC=m
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-CONFIG_PACKET=y
-CONFIG_PACKET_MMAP=y
-CONFIG_UNIX=y
-CONFIG_XFRM=y
-CONFIG_XFRM_USER=m
-CONFIG_XFRM_SUB_POLICY=y
-CONFIG_XFRM_MIGRATE=y
-CONFIG_NET_KEY=m
-CONFIG_NET_KEY_MIGRATE=y
-CONFIG_INET=y
-CONFIG_IP_MULTICAST=y
-CONFIG_IP_ADVANCED_ROUTER=y
-CONFIG_ASK_IP_FIB_HASH=y
-# CONFIG_IP_FIB_TRIE is not set
-CONFIG_IP_FIB_HASH=y
-CONFIG_IP_MULTIPLE_TABLES=y
-CONFIG_IP_ROUTE_MULTIPATH=y
-# CONFIG_IP_ROUTE_VERBOSE is not set
-# CONFIG_IP_PNP is not set
-CONFIG_NET_IPIP=m
-CONFIG_NET_IPGRE=m
-CONFIG_NET_IPGRE_BROADCAST=y
-CONFIG_IP_MROUTE=y
-CONFIG_IP_PIMSM_V1=y
-CONFIG_IP_PIMSM_V2=y
-# CONFIG_ARPD is not set
-CONFIG_SYN_COOKIES=y
-CONFIG_INET_AH=m
-CONFIG_INET_ESP=m
-CONFIG_INET_IPCOMP=m
-CONFIG_INET_XFRM_TUNNEL=m
-CONFIG_INET_TUNNEL=m
-CONFIG_INET_XFRM_MODE_TRANSPORT=m
-CONFIG_INET_XFRM_MODE_TUNNEL=m
-CONFIG_INET_XFRM_MODE_BEET=m
-CONFIG_INET_DIAG=y
-CONFIG_INET_TCP_DIAG=y
-CONFIG_TCP_CONG_ADVANCED=y
-CONFIG_TCP_CONG_BIC=m
-CONFIG_TCP_CONG_CUBIC=y
-CONFIG_TCP_CONG_WESTWOOD=m
-CONFIG_TCP_CONG_HTCP=m
-CONFIG_TCP_CONG_HSTCP=m
-CONFIG_TCP_CONG_HYBLA=m
-CONFIG_TCP_CONG_VEGAS=m
-CONFIG_TCP_CONG_SCALABLE=m
-CONFIG_TCP_CONG_LP=m
-CONFIG_TCP_CONG_VENO=m
-CONFIG_TCP_CONG_YEAH=m
-CONFIG_TCP_CONG_ILLINOIS=m
-# CONFIG_DEFAULT_BIC is not set
-CONFIG_DEFAULT_CUBIC=y
-# CONFIG_DEFAULT_HTCP is not set
-# CONFIG_DEFAULT_VEGAS is not set
-# CONFIG_DEFAULT_WESTWOOD is not set
-# CONFIG_DEFAULT_RENO is not set
-CONFIG_DEFAULT_TCP_CONG="cubic"
-CONFIG_TCP_MD5SIG=y
-# CONFIG_IP_VS is not set
-CONFIG_IPV6=m
-CONFIG_IPV6_PRIVACY=y
-CONFIG_IPV6_ROUTER_PREF=y
-CONFIG_IPV6_ROUTE_INFO=y
-# CONFIG_IPV6_OPTIMISTIC_DAD is not set
-CONFIG_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-# CONFIG_IPV6_MIP6 is not set
-CONFIG_INET6_XFRM_TUNNEL=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_TRANSPORT=m
-CONFIG_INET6_XFRM_MODE_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_BEET=m
-# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
-CONFIG_IPV6_SIT=m
-CONFIG_IPV6_TUNNEL=m
-CONFIG_IPV6_MULTIPLE_TABLES=y
-CONFIG_IPV6_SUBTREES=y
-CONFIG_NETWORK_SECMARK=y
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-CONFIG_BRIDGE_NETFILTER=y
-
-#
-# Core Netfilter Configuration
-#
-CONFIG_NETFILTER_NETLINK=m
-CONFIG_NETFILTER_NETLINK_QUEUE=m
-CONFIG_NETFILTER_NETLINK_LOG=m
-CONFIG_NF_CONNTRACK_ENABLED=m
-CONFIG_NF_CONNTRACK=m
-CONFIG_NF_CT_ACCT=y
-CONFIG_NF_CONNTRACK_MARK=y
-CONFIG_NF_CONNTRACK_SECMARK=y
-CONFIG_NF_CONNTRACK_EVENTS=y
-CONFIG_NF_CT_PROTO_GRE=m
-CONFIG_NF_CT_PROTO_SCTP=m
-# CONFIG_NF_CT_PROTO_UDPLITE is not set
-CONFIG_NF_CONNTRACK_AMANDA=m
-CONFIG_NF_CONNTRACK_FTP=m
-CONFIG_NF_CONNTRACK_H323=m
-CONFIG_NF_CONNTRACK_IRC=m
-CONFIG_NF_CONNTRACK_NETBIOS_NS=m
-CONFIG_NF_CONNTRACK_PPTP=m
-CONFIG_NF_CONNTRACK_SANE=m
-CONFIG_NF_CONNTRACK_SIP=m
-CONFIG_NF_CONNTRACK_TFTP=m
-CONFIG_NF_CT_NETLINK=m
-CONFIG_NETFILTER_XTABLES=m
-CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
-# CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set
-# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
-CONFIG_NETFILTER_XT_TARGET_MARK=m
-CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
-CONFIG_NETFILTER_XT_TARGET_NFLOG=m
-# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set
-# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
-CONFIG_NETFILTER_XT_TARGET_SECMARK=m
-CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m
-CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
-CONFIG_NETFILTER_XT_MATCH_COMMENT=m
-CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
-# CONFIG_NETFILTER_XT_MATCH_CONNLIMIT is not set
-CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
-CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
-CONFIG_NETFILTER_XT_MATCH_DCCP=m
-CONFIG_NETFILTER_XT_MATCH_DSCP=m
-CONFIG_NETFILTER_XT_MATCH_ESP=m
-CONFIG_NETFILTER_XT_MATCH_HELPER=m
-CONFIG_NETFILTER_XT_MATCH_LENGTH=m
-CONFIG_NETFILTER_XT_MATCH_LIMIT=m
-CONFIG_NETFILTER_XT_MATCH_MAC=m
-CONFIG_NETFILTER_XT_MATCH_MARK=m
-CONFIG_NETFILTER_XT_MATCH_POLICY=m
-CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
-# CONFIG_NETFILTER_XT_MATCH_PHYSDEV is not set
-CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
-CONFIG_NETFILTER_XT_MATCH_QUOTA=m
-CONFIG_NETFILTER_XT_MATCH_REALM=m
-CONFIG_NETFILTER_XT_MATCH_SCTP=m
-CONFIG_NETFILTER_XT_MATCH_STATE=m
-CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
-CONFIG_NETFILTER_XT_MATCH_STRING=m
-CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
-# CONFIG_NETFILTER_XT_MATCH_U32 is not set
-CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_NF_CONNTRACK_IPV4=m
-CONFIG_NF_CONNTRACK_PROC_COMPAT=y
-# CONFIG_IP_NF_QUEUE is not set
-CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_IPRANGE=m
-CONFIG_IP_NF_MATCH_TOS=m
-CONFIG_IP_NF_MATCH_RECENT=m
-CONFIG_IP_NF_MATCH_ECN=m
-CONFIG_IP_NF_MATCH_AH=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_OWNER=m
-CONFIG_IP_NF_MATCH_ADDRTYPE=m
-CONFIG_IP_NF_FILTER=m
-CONFIG_IP_NF_TARGET_REJECT=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_NF_NAT=m
-CONFIG_NF_NAT_NEEDED=y
-CONFIG_IP_NF_TARGET_MASQUERADE=m
-CONFIG_IP_NF_TARGET_REDIRECT=m
-CONFIG_IP_NF_TARGET_NETMAP=m
-CONFIG_IP_NF_TARGET_SAME=m
-CONFIG_NF_NAT_SNMP_BASIC=m
-CONFIG_NF_NAT_PROTO_GRE=m
-CONFIG_NF_NAT_FTP=m
-CONFIG_NF_NAT_IRC=m
-CONFIG_NF_NAT_TFTP=m
-CONFIG_NF_NAT_AMANDA=m
-CONFIG_NF_NAT_PPTP=m
-CONFIG_NF_NAT_H323=m
-CONFIG_NF_NAT_SIP=m
-CONFIG_IP_NF_MANGLE=m
-CONFIG_IP_NF_TARGET_TOS=m
-CONFIG_IP_NF_TARGET_ECN=m
-CONFIG_IP_NF_TARGET_TTL=m
-CONFIG_IP_NF_TARGET_CLUSTERIP=m
-CONFIG_IP_NF_RAW=m
-CONFIG_IP_NF_ARPTABLES=m
-CONFIG_IP_NF_ARPFILTER=m
-CONFIG_IP_NF_ARP_MANGLE=m
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-CONFIG_NF_CONNTRACK_IPV6=m
-# CONFIG_IP6_NF_QUEUE is not set
-CONFIG_IP6_NF_IPTABLES=m
-CONFIG_IP6_NF_MATCH_RT=m
-CONFIG_IP6_NF_MATCH_OPTS=m
-CONFIG_IP6_NF_MATCH_FRAG=m
-CONFIG_IP6_NF_MATCH_HL=m
-CONFIG_IP6_NF_MATCH_OWNER=m
-CONFIG_IP6_NF_MATCH_IPV6HEADER=m
-CONFIG_IP6_NF_MATCH_AH=m
-CONFIG_IP6_NF_MATCH_MH=m
-CONFIG_IP6_NF_MATCH_EUI64=m
-CONFIG_IP6_NF_FILTER=m
-CONFIG_IP6_NF_TARGET_LOG=m
-CONFIG_IP6_NF_TARGET_REJECT=m
-CONFIG_IP6_NF_MANGLE=m
-CONFIG_IP6_NF_TARGET_HL=m
-CONFIG_IP6_NF_RAW=m
-
-#
-# DECnet: Netfilter Configuration
-#
-# CONFIG_DECNET_NF_GRABULATOR is not set
-
-#
-# Bridge: Netfilter Configuration
-#
-# CONFIG_BRIDGE_NF_EBTABLES is not set
-CONFIG_IP_DCCP=m
-CONFIG_INET_DCCP_DIAG=m
-CONFIG_IP_DCCP_ACKVEC=y
-
-#
-# DCCP CCIDs Configuration (EXPERIMENTAL)
-#
-CONFIG_IP_DCCP_CCID2=m
-# CONFIG_IP_DCCP_CCID2_DEBUG is not set
-CONFIG_IP_DCCP_CCID3=m
-CONFIG_IP_DCCP_TFRC_LIB=m
-# CONFIG_IP_DCCP_CCID3_DEBUG is not set
-CONFIG_IP_DCCP_CCID3_RTO=100
-
-#
-# DCCP Kernel Hacking
-#
-# CONFIG_IP_DCCP_DEBUG is not set
-CONFIG_IP_SCTP=m
-# CONFIG_SCTP_DBG_MSG is not set
-# CONFIG_SCTP_DBG_OBJCNT is not set
-# CONFIG_SCTP_HMAC_NONE is not set
-# CONFIG_SCTP_HMAC_SHA1 is not set
-CONFIG_SCTP_HMAC_MD5=y
-CONFIG_TIPC=m
-CONFIG_TIPC_ADVANCED=y
-CONFIG_TIPC_ZONES=3
-CONFIG_TIPC_CLUSTERS=1
-CONFIG_TIPC_NODES=255
-CONFIG_TIPC_SLAVE_NODES=0
-CONFIG_TIPC_PORTS=8191
-CONFIG_TIPC_LOG=0
-# CONFIG_TIPC_DEBUG is not set
-CONFIG_ATM=m
-CONFIG_ATM_CLIP=m
-# CONFIG_ATM_CLIP_NO_ICMP is not set
-CONFIG_ATM_LANE=m
-# CONFIG_ATM_MPOA is not set
-CONFIG_ATM_BR2684=m
-CONFIG_ATM_BR2684_IPFILTER=y
-CONFIG_BRIDGE=m
-CONFIG_VLAN_8021Q=m
-CONFIG_DECNET=m
-# CONFIG_DECNET_ROUTER is not set
-CONFIG_LLC=m
-CONFIG_LLC2=m
-CONFIG_IPX=m
-CONFIG_IPX_INTERN=y
-CONFIG_ATALK=m
-CONFIG_DEV_APPLETALK=m
-# CONFIG_LTPC is not set
-# CONFIG_COPS is not set
-CONFIG_IPDDP=m
-CONFIG_IPDDP_ENCAP=y
-CONFIG_IPDDP_DECAP=y
-CONFIG_X25=m
-CONFIG_LAPB=m
-CONFIG_ECONET=m
-CONFIG_ECONET_AUNUDP=y
-CONFIG_ECONET_NATIVE=y
-CONFIG_WAN_ROUTER=m
-
-#
-# QoS and/or fair queueing
-#
-CONFIG_NET_SCHED=y
-CONFIG_NET_SCH_FIFO=y
-
-#
-# Queueing/Scheduling
-#
-CONFIG_NET_SCH_CBQ=m
-CONFIG_NET_SCH_HTB=m
-CONFIG_NET_SCH_HFSC=m
-CONFIG_NET_SCH_ATM=m
-CONFIG_NET_SCH_PRIO=m
-# CONFIG_NET_SCH_RR is not set
-CONFIG_NET_SCH_RED=m
-CONFIG_NET_SCH_SFQ=m
-CONFIG_NET_SCH_TEQL=m
-CONFIG_NET_SCH_TBF=m
-CONFIG_NET_SCH_GRED=m
-CONFIG_NET_SCH_DSMARK=m
-CONFIG_NET_SCH_NETEM=m
-CONFIG_NET_SCH_INGRESS=m
-
-#
-# Classification
-#
-CONFIG_NET_CLS=y
-CONFIG_NET_CLS_BASIC=m
-CONFIG_NET_CLS_TCINDEX=m
-CONFIG_NET_CLS_ROUTE4=m
-CONFIG_NET_CLS_ROUTE=y
-CONFIG_NET_CLS_FW=m
-CONFIG_NET_CLS_U32=m
-CONFIG_CLS_U32_PERF=y
-CONFIG_CLS_U32_MARK=y
-CONFIG_NET_CLS_RSVP=m
-CONFIG_NET_CLS_RSVP6=m
-CONFIG_NET_EMATCH=y
-CONFIG_NET_EMATCH_STACK=32
-CONFIG_NET_EMATCH_CMP=m
-CONFIG_NET_EMATCH_NBYTE=m
-CONFIG_NET_EMATCH_U32=m
-CONFIG_NET_EMATCH_META=m
-CONFIG_NET_EMATCH_TEXT=m
-CONFIG_NET_CLS_ACT=y
-CONFIG_NET_ACT_POLICE=m
-CONFIG_NET_ACT_GACT=m
-CONFIG_GACT_PROB=y
-CONFIG_NET_ACT_MIRRED=m
-CONFIG_NET_ACT_IPT=m
-CONFIG_NET_ACT_PEDIT=m
-CONFIG_NET_ACT_SIMP=m
-# CONFIG_NET_CLS_POLICE is not set
-CONFIG_NET_CLS_IND=y
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_HAMRADIO is not set
-# CONFIG_IRDA is not set
-# CONFIG_BT is not set
-CONFIG_AF_RXRPC=m
-# CONFIG_AF_RXRPC_DEBUG is not set
-CONFIG_RXKAD=m
-CONFIG_FIB_RULES=y
-
-#
-# Wireless
-#
-# CONFIG_CFG80211 is not set
-# CONFIG_WIRELESS_EXT is not set
-# CONFIG_MAC80211 is not set
-# CONFIG_IEEE80211 is not set
-# CONFIG_RFKILL is not set
-# CONFIG_NET_9P is not set
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-# CONFIG_FW_LOADER is not set
-# CONFIG_DEBUG_DRIVER is not set
-# CONFIG_DEBUG_DEVRES is not set
-# CONFIG_SYS_HYPERVISOR is not set
-CONFIG_CONNECTOR=m
-# CONFIG_MTD is not set
-CONFIG_PARPORT=m
-CONFIG_PARPORT_PC=m
-# CONFIG_PARPORT_SERIAL is not set
-# CONFIG_PARPORT_PC_FIFO is not set
-# CONFIG_PARPORT_PC_SUPERIO is not set
-# CONFIG_PARPORT_GSC is not set
-# CONFIG_PARPORT_AX88796 is not set
-# CONFIG_PARPORT_1284 is not set
-# CONFIG_PNP is not set
-CONFIG_BLK_DEV=y
-# CONFIG_BLK_DEV_FD is not set
-# CONFIG_BLK_DEV_XD is not set
-# CONFIG_PARIDE is not set
-# CONFIG_BLK_CPQ_DA is not set
-# CONFIG_BLK_CPQ_CISS_DA is not set
-# CONFIG_BLK_DEV_DAC960 is not set
-# CONFIG_BLK_DEV_UMEM is not set
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=m
-CONFIG_BLK_DEV_CRYPTOLOOP=m
-CONFIG_BLK_DEV_NBD=m
-# CONFIG_BLK_DEV_SX8 is not set
-CONFIG_BLK_DEV_RAM=m
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=4096
-CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
-CONFIG_MISC_DEVICES=y
-# CONFIG_IBM_ASM is not set
-# CONFIG_PHANTOM is not set
-# CONFIG_EEPROM_93CX6 is not set
-# CONFIG_SGI_IOC4 is not set
-# CONFIG_TIFM_CORE is not set
-CONFIG_IDE=y
-CONFIG_BLK_DEV_IDE=y
-
-#
-# Please see Documentation/ide.txt for help/info on IDE drives
-#
-# CONFIG_BLK_DEV_IDE_SATA is not set
-# CONFIG_BLK_DEV_HD_IDE is not set
-CONFIG_BLK_DEV_IDEDISK=y
-# CONFIG_IDEDISK_MULTI_MODE is not set
-CONFIG_BLK_DEV_IDECD=y
-# CONFIG_BLK_DEV_IDETAPE is not set
-# CONFIG_BLK_DEV_IDEFLOPPY is not set
-# CONFIG_IDE_TASK_IOCTL is not set
-CONFIG_IDE_PROC_FS=y
-
-#
-# IDE chipset support/bugfixes
-#
-CONFIG_IDE_GENERIC=y
-# CONFIG_BLK_DEV_CMD640 is not set
-CONFIG_BLK_DEV_IDEPCI=y
-# CONFIG_IDEPCI_SHARE_IRQ is not set
-CONFIG_IDEPCI_PCIBUS_ORDER=y
-# CONFIG_BLK_DEV_OFFBOARD is not set
-# CONFIG_BLK_DEV_GENERIC is not set
-# CONFIG_BLK_DEV_OPTI621 is not set
-# CONFIG_BLK_DEV_RZ1000 is not set
-# CONFIG_BLK_DEV_IDEDMA_PCI is not set
-# CONFIG_IDE_ARM is not set
-# CONFIG_IDE_CHIPSETS is not set
-# CONFIG_BLK_DEV_IDEDMA is not set
-# CONFIG_BLK_DEV_HD is not set
-
-#
-# SCSI device support
-#
-# CONFIG_RAID_ATTRS is not set
-# CONFIG_SCSI is not set
-# CONFIG_SCSI_DMA is not set
-# CONFIG_SCSI_NETLINK is not set
-# CONFIG_ATA is not set
-# CONFIG_MD is not set
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-# CONFIG_FIREWIRE is not set
-# CONFIG_IEEE1394 is not set
-# CONFIG_I2O is not set
-# CONFIG_MACINTOSH_DRIVERS is not set
-CONFIG_NETDEVICES=y
-# CONFIG_NETDEVICES_MULTIQUEUE is not set
-# CONFIG_IFB is not set
-CONFIG_DUMMY=m
-# CONFIG_BONDING is not set
-# CONFIG_MACVLAN is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-# CONFIG_ARCNET is not set
-# CONFIG_PHYLIB is not set
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=y
-# CONFIG_HAPPYMEAL is not set
-# CONFIG_SUNGEM is not set
-# CONFIG_CASSINI is not set
-# CONFIG_NET_VENDOR_3COM is not set
-# CONFIG_LANCE is not set
-# CONFIG_NET_VENDOR_SMC is not set
-# CONFIG_NET_VENDOR_RACAL is not set
-# CONFIG_NET_TULIP is not set
-# CONFIG_AT1700 is not set
-# CONFIG_DEPCA is not set
-# CONFIG_HP100 is not set
-# CONFIG_NET_ISA is not set
-CONFIG_NET_PCI=y
-CONFIG_PCNET32=y
-# CONFIG_PCNET32_NAPI is not set
-# CONFIG_AMD8111_ETH is not set
-# CONFIG_ADAPTEC_STARFIRE is not set
-# CONFIG_AC3200 is not set
-# CONFIG_APRICOT is not set
-# CONFIG_B44 is not set
-# CONFIG_FORCEDETH is not set
-# CONFIG_CS89x0 is not set
-# CONFIG_DGRS is not set
-# CONFIG_EEPRO100 is not set
-# CONFIG_E100 is not set
-# CONFIG_FEALNX is not set
-# CONFIG_NATSEMI is not set
-CONFIG_NE2K_PCI=y
-CONFIG_8139CP=y
-# CONFIG_8139TOO is not set
-# CONFIG_SIS900 is not set
-# CONFIG_EPIC100 is not set
-# CONFIG_SUNDANCE is not set
-# CONFIG_TLAN is not set
-# CONFIG_VIA_RHINE is not set
-# CONFIG_SC92031 is not set
-# CONFIG_NET_POCKET is not set
-# CONFIG_NETDEV_1000 is not set
-# CONFIG_NETDEV_10000 is not set
-# CONFIG_TR is not set
-
-#
-# Wireless LAN
-#
-# CONFIG_WLAN_PRE80211 is not set
-# CONFIG_WLAN_80211 is not set
-# CONFIG_WAN is not set
-CONFIG_ATM_DRIVERS=y
-# CONFIG_ATM_DUMMY is not set
-# CONFIG_ATM_TCP is not set
-# CONFIG_ATM_LANAI is not set
-# CONFIG_ATM_ENI is not set
-# CONFIG_ATM_FIRESTREAM is not set
-# CONFIG_ATM_ZATM is not set
-# CONFIG_ATM_NICSTAR is not set
-# CONFIG_ATM_IDT77252 is not set
-# CONFIG_ATM_AMBASSADOR is not set
-# CONFIG_ATM_HORIZON is not set
-# CONFIG_ATM_IA is not set
-# CONFIG_ATM_FORE200E_MAYBE is not set
-# CONFIG_ATM_HE is not set
-# CONFIG_FDDI is not set
-CONFIG_HIPPI=y
-# CONFIG_ROADRUNNER is not set
-# CONFIG_PLIP is not set
-# CONFIG_PPP is not set
-# CONFIG_SLIP is not set
-# CONFIG_SHAPER is not set
-# CONFIG_NETCONSOLE is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
-# CONFIG_ISDN is not set
-# CONFIG_PHONE is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-# CONFIG_INPUT_FF_MEMLESS is not set
-# CONFIG_INPUT_POLLDEV is not set
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=y
-CONFIG_INPUT_MOUSEDEV_PSAUX=y
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_TSDEV is not set
-# CONFIG_INPUT_EVDEV is not set
-# CONFIG_INPUT_EVBUG is not set
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-CONFIG_KEYBOARD_ATKBD=y
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-# CONFIG_KEYBOARD_STOWAWAY is not set
-CONFIG_INPUT_MOUSE=y
-CONFIG_MOUSE_PS2=y
-CONFIG_MOUSE_PS2_ALPS=y
-CONFIG_MOUSE_PS2_LOGIPS2PP=y
-CONFIG_MOUSE_PS2_SYNAPTICS=y
-CONFIG_MOUSE_PS2_LIFEBOOK=y
-CONFIG_MOUSE_PS2_TRACKPOINT=y
-# CONFIG_MOUSE_PS2_TOUCHKIT is not set
-# CONFIG_MOUSE_SERIAL is not set
-# CONFIG_MOUSE_APPLETOUCH is not set
-# CONFIG_MOUSE_INPORT is not set
-# CONFIG_MOUSE_LOGIBM is not set
-# CONFIG_MOUSE_PC110PAD is not set
-# CONFIG_MOUSE_VSXXXAA is not set
-# CONFIG_INPUT_JOYSTICK is not set
-# CONFIG_INPUT_TABLET is not set
-# CONFIG_INPUT_TOUCHSCREEN is not set
-# CONFIG_INPUT_MISC is not set
-
-#
-# Hardware I/O ports
-#
-CONFIG_SERIO=y
-CONFIG_SERIO_I8042=y
-CONFIG_SERIO_SERPORT=y
-# CONFIG_SERIO_CT82C710 is not set
-# CONFIG_SERIO_PARKBD is not set
-# CONFIG_SERIO_PCIPS2 is not set
-CONFIG_SERIO_LIBPS2=y
-# CONFIG_SERIO_RAW is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-# CONFIG_VT_HW_CONSOLE_BINDING is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=y
-CONFIG_SERIAL_8250_CONSOLE=y
-CONFIG_FIX_EARLYCON_MEM=y
-CONFIG_SERIAL_8250_PCI=y
-CONFIG_SERIAL_8250_NR_UARTS=4
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-# CONFIG_SERIAL_8250_EXTENDED is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-# CONFIG_SERIAL_JSM is not set
-CONFIG_UNIX98_PTYS=y
-CONFIG_LEGACY_PTYS=y
-CONFIG_LEGACY_PTY_COUNT=256
-# CONFIG_PRINTER is not set
-# CONFIG_PPDEV is not set
-# CONFIG_TIPAR is not set
-# CONFIG_IPMI_HANDLER is not set
-CONFIG_WATCHDOG=y
-CONFIG_WATCHDOG_NOWAYOUT=y
-
-#
-# Watchdog Device Drivers
-#
-CONFIG_SOFT_WATCHDOG=y
-# CONFIG_ACQUIRE_WDT is not set
-# CONFIG_ADVANTECH_WDT is not set
-# CONFIG_ALIM1535_WDT is not set
-# CONFIG_ALIM7101_WDT is not set
-# CONFIG_SC520_WDT is not set
-# CONFIG_EUROTECH_WDT is not set
-# CONFIG_IB700_WDT is not set
-# CONFIG_IBMASR is not set
-# CONFIG_WAFER_WDT is not set
-# CONFIG_I6300ESB_WDT is not set
-# CONFIG_ITCO_WDT is not set
-# CONFIG_SC1200_WDT is not set
-# CONFIG_PC87413_WDT is not set
-# CONFIG_60XX_WDT is not set
-# CONFIG_SBC8360_WDT is not set
-# CONFIG_CPU5_WDT is not set
-# CONFIG_SMSC37B787_WDT is not set
-# CONFIG_W83627HF_WDT is not set
-# CONFIG_W83697HF_WDT is not set
-# CONFIG_W83877F_WDT is not set
-# CONFIG_W83977F_WDT is not set
-# CONFIG_MACHZ_WDT is not set
-# CONFIG_SBC_EPX_C3_WATCHDOG is not set
-
-#
-# ISA-based Watchdog Cards
-#
-# CONFIG_PCWATCHDOG is not set
-# CONFIG_MIXCOMWD is not set
-# CONFIG_WDT is not set
-
-#
-# PCI-based Watchdog Cards
-#
-# CONFIG_PCIPCWATCHDOG is not set
-# CONFIG_WDTPCI is not set
-# CONFIG_HW_RANDOM is not set
-# CONFIG_NVRAM is not set
-# CONFIG_RTC is not set
-# CONFIG_GEN_RTC is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-# CONFIG_APPLICOM is not set
-# CONFIG_SONYPI is not set
-# CONFIG_AGP is not set
-# CONFIG_DRM is not set
-# CONFIG_MWAVE is not set
-# CONFIG_PC8736x_GPIO is not set
-# CONFIG_NSC_GPIO is not set
-# CONFIG_CS5535_GPIO is not set
-CONFIG_RAW_DRIVER=m
-CONFIG_MAX_RAW_DEVS=256
-# CONFIG_HANGCHECK_TIMER is not set
-# CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
-CONFIG_DEVPORT=y
-# CONFIG_I2C is not set
-
-#
-# SPI support
-#
-# CONFIG_SPI is not set
-# CONFIG_SPI_MASTER is not set
-# CONFIG_W1 is not set
-# CONFIG_POWER_SUPPLY is not set
-CONFIG_HWMON=y
-# CONFIG_HWMON_VID is not set
-# CONFIG_SENSORS_ABITUGURU is not set
-# CONFIG_SENSORS_ABITUGURU3 is not set
-# CONFIG_SENSORS_K8TEMP is not set
-# CONFIG_SENSORS_F71805F is not set
-# CONFIG_SENSORS_CORETEMP is not set
-# CONFIG_SENSORS_IT87 is not set
-# CONFIG_SENSORS_PC87360 is not set
-# CONFIG_SENSORS_PC87427 is not set
-# CONFIG_SENSORS_SIS5595 is not set
-# CONFIG_SENSORS_SMSC47M1 is not set
-# CONFIG_SENSORS_SMSC47B397 is not set
-# CONFIG_SENSORS_VIA686A is not set
-# CONFIG_SENSORS_VT1211 is not set
-# CONFIG_SENSORS_VT8231 is not set
-# CONFIG_SENSORS_W83627HF is not set
-# CONFIG_SENSORS_W83627EHF is not set
-# CONFIG_SENSORS_HDAPS is not set
-# CONFIG_SENSORS_APPLESMC is not set
-# CONFIG_HWMON_DEBUG_CHIP is not set
-
-#
-# Multifunction device drivers
-#
-# CONFIG_MFD_SM501 is not set
-
-#
-# Multimedia devices
-#
-# CONFIG_VIDEO_DEV is not set
-# CONFIG_DVB_CORE is not set
-# CONFIG_DAB is not set
-
-#
-# Graphics support
-#
-# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
-
-#
-# Display device support
-#
-# CONFIG_DISPLAY_SUPPORT is not set
-# CONFIG_VGASTATE is not set
-CONFIG_VIDEO_OUTPUT_CONTROL=m
-# CONFIG_FB is not set
-
-#
-# Console display driver support
-#
-CONFIG_VGA_CONSOLE=y
-# CONFIG_VGACON_SOFT_SCROLLBACK is not set
-# CONFIG_VIDEO_SELECT is not set
-# CONFIG_MDA_CONSOLE is not set
-CONFIG_DUMMY_CONSOLE=y
-
-#
-# Sound
-#
-# CONFIG_SOUND is not set
-CONFIG_HID_SUPPORT=y
-# CONFIG_HID is not set
-CONFIG_USB_SUPPORT=y
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-CONFIG_USB_ARCH_HAS_EHCI=y
-# CONFIG_USB is not set
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# USB Gadget Support
-#
-# CONFIG_USB_GADGET is not set
-# CONFIG_MMC is not set
-# CONFIG_NEW_LEDS is not set
-# CONFIG_INFINIBAND is not set
-# CONFIG_EDAC is not set
-# CONFIG_RTC_CLASS is not set
-
-#
-# DMA Engine support
-#
-# CONFIG_DMA_ENGINE is not set
-
-#
-# DMA Clients
-#
-
-#
-# DMA Devices
-#
-# CONFIG_AUXDISPLAY is not set
-CONFIG_VIRTUALIZATION=y
-# CONFIG_KVM is not set
-
-#
-# Userspace I/O
-#
-# CONFIG_UIO is not set
-
-#
-# File systems
-#
-# CONFIG_EXT2_FS is not set
-CONFIG_EXT3_FS=y
-CONFIG_EXT3_FS_XATTR=y
-CONFIG_EXT3_FS_POSIX_ACL=y
-CONFIG_EXT3_FS_SECURITY=y
-# CONFIG_EXT4DEV_FS is not set
-CONFIG_JBD=y
-# CONFIG_JBD_DEBUG is not set
-CONFIG_FS_MBCACHE=y
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-CONFIG_FS_POSIX_ACL=y
-# CONFIG_XFS_FS is not set
-# CONFIG_GFS2_FS is not set
-# CONFIG_OCFS2_FS is not set
-# CONFIG_MINIX_FS is not set
-CONFIG_ROMFS_FS=m
-CONFIG_INOTIFY=y
-CONFIG_INOTIFY_USER=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FUSE_FS is not set
-CONFIG_GENERIC_ACL=y
-
-#
-# CD-ROM/DVD Filesystems
-#
-CONFIG_ISO9660_FS=y
-CONFIG_JOLIET=y
-CONFIG_ZISOFS=y
-CONFIG_UDF_FS=y
-CONFIG_UDF_NLS=y
-
-#
-# DOS/FAT/NT Filesystems
-#
-# CONFIG_MSDOS_FS is not set
-# CONFIG_VFAT_FS is not set
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_PROC_KCORE=y
-CONFIG_PROC_SYSCTL=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-CONFIG_TMPFS_POSIX_ACL=y
-# CONFIG_HUGETLBFS is not set
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_RAMFS=y
-CONFIG_CONFIGFS_FS=m
-
-#
-# Miscellaneous filesystems
-#
-# CONFIG_ADFS_FS is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_ECRYPT_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_HFSPLUS_FS is not set
-# CONFIG_BEFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_EFS_FS is not set
-CONFIG_CRAMFS=m
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-
-#
-# Network File Systems
-#
-CONFIG_NFS_FS=y
-CONFIG_NFS_V3=y
-# CONFIG_NFS_V3_ACL is not set
-# CONFIG_NFS_V4 is not set
-# CONFIG_NFS_DIRECTIO is not set
-# CONFIG_NFSD is not set
-CONFIG_LOCKD=y
-CONFIG_LOCKD_V4=y
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
-# CONFIG_SUNRPC_BIND34 is not set
-# CONFIG_RPCSEC_GSS_KRB5 is not set
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-# CONFIG_SMB_FS is not set
-# CONFIG_CIFS is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_CODA_FS is not set
-# CONFIG_AFS_FS is not set
-
-#
-# Partition Types
-#
-# CONFIG_PARTITION_ADVANCED is not set
-CONFIG_MSDOS_PARTITION=y
-
-#
-# Native Language Support
-#
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="iso8859-1"
-CONFIG_NLS_CODEPAGE_437=m
-CONFIG_NLS_CODEPAGE_737=m
-CONFIG_NLS_CODEPAGE_775=m
-CONFIG_NLS_CODEPAGE_850=m
-CONFIG_NLS_CODEPAGE_852=m
-CONFIG_NLS_CODEPAGE_855=m
-CONFIG_NLS_CODEPAGE_857=m
-CONFIG_NLS_CODEPAGE_860=m
-CONFIG_NLS_CODEPAGE_861=m
-CONFIG_NLS_CODEPAGE_862=m
-CONFIG_NLS_CODEPAGE_863=m
-CONFIG_NLS_CODEPAGE_864=m
-CONFIG_NLS_CODEPAGE_865=m
-CONFIG_NLS_CODEPAGE_866=m
-CONFIG_NLS_CODEPAGE_869=m
-CONFIG_NLS_CODEPAGE_936=m
-CONFIG_NLS_CODEPAGE_950=m
-CONFIG_NLS_CODEPAGE_932=m
-CONFIG_NLS_CODEPAGE_949=m
-CONFIG_NLS_CODEPAGE_874=m
-CONFIG_NLS_ISO8859_8=m
-CONFIG_NLS_CODEPAGE_1250=m
-CONFIG_NLS_CODEPAGE_1251=m
-CONFIG_NLS_ASCII=m
-CONFIG_NLS_ISO8859_1=m
-CONFIG_NLS_ISO8859_2=m
-CONFIG_NLS_ISO8859_3=m
-CONFIG_NLS_ISO8859_4=m
-CONFIG_NLS_ISO8859_5=m
-CONFIG_NLS_ISO8859_6=m
-CONFIG_NLS_ISO8859_7=m
-CONFIG_NLS_ISO8859_9=m
-CONFIG_NLS_ISO8859_13=m
-CONFIG_NLS_ISO8859_14=m
-CONFIG_NLS_ISO8859_15=m
-CONFIG_NLS_KOI8_R=m
-CONFIG_NLS_KOI8_U=m
-CONFIG_NLS_UTF8=m
-
-#
-# Distributed Lock Manager
-#
-# CONFIG_DLM is not set
-CONFIG_INSTRUMENTATION=y
-# CONFIG_PROFILING is not set
-# CONFIG_KPROBES is not set
-
-#
-# Kernel hacking
-#
-CONFIG_TRACE_IRQFLAGS_SUPPORT=y
-# CONFIG_PRINTK_TIME is not set
-# CONFIG_ENABLE_MUST_CHECK is not set
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_UNUSED_SYMBOLS is not set
-CONFIG_DEBUG_FS=y
-# CONFIG_HEADERS_CHECK is not set
-CONFIG_DEBUG_KERNEL=y
-# CONFIG_DEBUG_SHIRQ is not set
-CONFIG_DETECT_SOFTLOCKUP=y
-CONFIG_SCHED_DEBUG=y
-# CONFIG_SCHEDSTATS is not set
-# CONFIG_TIMER_STATS is not set
-CONFIG_DEBUG_SLAB=y
-CONFIG_DEBUG_SLAB_LEAK=y
-CONFIG_DEBUG_RT_MUTEXES=y
-CONFIG_DEBUG_PI_LIST=y
-# CONFIG_RT_MUTEX_TESTER is not set
-CONFIG_DEBUG_SPINLOCK=y
-CONFIG_DEBUG_MUTEXES=y
-CONFIG_DEBUG_LOCK_ALLOC=y
-CONFIG_PROVE_LOCKING=y
-CONFIG_LOCKDEP=y
-CONFIG_LOCK_STAT=y
-# CONFIG_DEBUG_LOCKDEP is not set
-CONFIG_TRACE_IRQFLAGS=y
-CONFIG_DEBUG_SPINLOCK_SLEEP=y
-# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
-CONFIG_STACKTRACE=y
-CONFIG_DEBUG_KOBJECT=y
-CONFIG_DEBUG_HIGHMEM=y
-CONFIG_DEBUG_BUGVERBOSE=y
-CONFIG_DEBUG_INFO=y
-CONFIG_DEBUG_VM=y
-CONFIG_DEBUG_LIST=y
-CONFIG_FRAME_POINTER=y
-CONFIG_FORCED_INLINING=y
-CONFIG_RCU_TORTURE_TEST=m
-# CONFIG_FAULT_INJECTION is not set
-CONFIG_EARLY_PRINTK=y
-CONFIG_DEBUG_STACKOVERFLOW=y
-# CONFIG_DEBUG_STACK_USAGE is not set
-CONFIG_DEBUG_PAGEALLOC=y
-CONFIG_DEBUG_RODATA=y
-CONFIG_4KSTACKS=y
-CONFIG_X86_FIND_SMP_CONFIG=y
-CONFIG_X86_MPPARSE=y
-CONFIG_DOUBLEFAULT=y
-
-#
-# Security options
-#
-CONFIG_KEYS=y
-# CONFIG_KEYS_DEBUG_PROC_KEYS is not set
-# CONFIG_SECURITY is not set
-CONFIG_CRYPTO=y
-CONFIG_CRYPTO_ALGAPI=y
-CONFIG_CRYPTO_BLKCIPHER=m
-CONFIG_CRYPTO_HASH=m
-CONFIG_CRYPTO_MANAGER=m
-CONFIG_CRYPTO_HMAC=m
-# CONFIG_CRYPTO_XCBC is not set
-CONFIG_CRYPTO_NULL=m
-CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=y
-CONFIG_CRYPTO_SHA1=m
-CONFIG_CRYPTO_SHA256=m
-# CONFIG_CRYPTO_SHA512 is not set
-# CONFIG_CRYPTO_WP512 is not set
-# CONFIG_CRYPTO_TGR192 is not set
-CONFIG_CRYPTO_GF128MUL=m
-# CONFIG_CRYPTO_ECB is not set
-CONFIG_CRYPTO_CBC=m
-CONFIG_CRYPTO_PCBC=m
-CONFIG_CRYPTO_LRW=m
-# CONFIG_CRYPTO_CRYPTD is not set
-CONFIG_CRYPTO_DES=m
-CONFIG_CRYPTO_FCRYPT=m
-# CONFIG_CRYPTO_BLOWFISH is not set
-# CONFIG_CRYPTO_TWOFISH is not set
-# CONFIG_CRYPTO_TWOFISH_586 is not set
-# CONFIG_CRYPTO_SERPENT is not set
-CONFIG_CRYPTO_AES=m
-# CONFIG_CRYPTO_AES_586 is not set
-# CONFIG_CRYPTO_CAST5 is not set
-# CONFIG_CRYPTO_CAST6 is not set
-CONFIG_CRYPTO_TEA=m
-# CONFIG_CRYPTO_ARC4 is not set
-# CONFIG_CRYPTO_KHAZAD is not set
-# CONFIG_CRYPTO_ANUBIS is not set
-CONFIG_CRYPTO_DEFLATE=m
-# CONFIG_CRYPTO_MICHAEL_MIC is not set
-# CONFIG_CRYPTO_CRC32C is not set
-# CONFIG_CRYPTO_CAMELLIA is not set
-# CONFIG_CRYPTO_TEST is not set
-CONFIG_CRYPTO_HW=y
-# CONFIG_CRYPTO_DEV_PADLOCK is not set
-# CONFIG_CRYPTO_DEV_GEODE is not set
-
-#
-# Library routines
-#
-CONFIG_BITREVERSE=y
-CONFIG_CRC_CCITT=m
-CONFIG_CRC16=m
-CONFIG_CRC_ITU_T=m
-CONFIG_CRC32=y
-# CONFIG_CRC7 is not set
-CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=m
-CONFIG_TEXTSEARCH=y
-CONFIG_TEXTSEARCH_KMP=m
-CONFIG_TEXTSEARCH_BM=m
-CONFIG_TEXTSEARCH_FSM=m
-CONFIG_PLIST=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
-CONFIG_HAS_DMA=y
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_GENERIC_PENDING_IRQ=y
-CONFIG_X86_SMP=y
-CONFIG_X86_HT=y
-CONFIG_X86_BIOS_REBOOT=y
-CONFIG_X86_TRAMPOLINE=y
-CONFIG_KTIME_SCALAR=y
index 1b64945..ad347df 100644 (file)
@@ -61,3 +61,8 @@ EXTRA_DIST += \
        debian/reconfigure \
        debian/rules \
        debian/rules.modules
+
+dist-hook-debian-changelog:
+       $(srcdir)/build-aux/update-debian-changelog '$(distdir)/debian/changelog' '$(VERSION)'
+DIST_HOOKS += dist-hook-debian-changelog
+EXTRA_DIST += build-aux/update-debian-changelog
index eb1d40a..945f65d 100644 (file)
@@ -1,5 +1,5 @@
-openvswitch (0.90.6) unstable; urgency=low
+openvswitch (1.0.0) unstable; urgency=low
 
-  * Development version.
+  * New upstream version.
 
- -- Ben Pfaff <blp@nicira.com>  Tue, 15 Dec 2009 11:00:11 -0800
+ -- Open vSwitch team <dev@openvswitch.org>  Mon, 17 May 2010 10:36:00 +0000
index cedc5c9..d96122b 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2008, 2009 Nicira Networks, Inc.
+/* Copyright (c) 2008, 2009, 2010 Nicira Networks, Inc.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -907,14 +907,7 @@ scanner_run(struct scanner *s, struct ezio *ezio)
 static void
 scanner_wait(struct scanner *s)
 {
-    long long int now = time_msec();
-    long long int expires = s->last_move + 750;
-    if (now >= expires) {
-        poll_immediate_wake();
-    } else {
-        poll_timer_wait(expires - now);
-    }
-
+    poll_timer_wait_until(s->last_move + 750);
 }
 
 static void
index 16a6903..6ebfece 100644 (file)
@@ -242,7 +242,7 @@ main(int argc, char *argv[])
             refresh();
 
             poll_fd_wait(STDIN_FILENO, POLLIN);
-            poll_timer_wait(timeout - time_msec());
+            poll_timer_wait_until(timeout);
             poll_block();
         } while (time_msec() < timeout);
         age_messages();
@@ -868,7 +868,7 @@ fetch_status(struct rconn *rconn, struct dict *dict, long long timeout)
 
         rconn_run_wait(rconn);
         rconn_recv_wait(rconn);
-        poll_timer_wait(timeout - time_msec());
+        poll_timer_wait_until(timeout);
         poll_block();
     }
 }
@@ -1714,7 +1714,7 @@ menu_show(const struct menu *menu, int start, bool select)
         refresh();
 
         if (pos < min || pos > max) {
-            poll_timer_wait(adjust - time_msec());
+            poll_timer_wait_until(adjust);
         }
         poll_fd_wait(STDIN_FILENO, POLLIN);
         poll_block();
@@ -1946,7 +1946,7 @@ static void
 block_until(long long timeout)
 {
     while (timeout > time_msec()) {
-        poll_timer_wait(timeout - time_msec());
+        poll_timer_wait_until(timeout);
         poll_block();
     }
     drain_keyboard_buffer();
index 37a900a..ee97b43 100644 (file)
 #ifndef XFLOW_H
 #define XFLOW_H 1
 
+/* The ovs_be<N> types indicate that an object is in big-endian, not
+ * native-endian, byte order.  They are otherwise equivalent to uint<N>_t.
+ * The Linux kernel already has __be<N> types for this, which take on
+ * additional semantics when the "sparse" static checker is used, so we use
+ * those types when compiling the kernel. */
 #ifdef __KERNEL__
 #include <linux/types.h>
+#define ovs_be16 __be16
+#define ovs_be32 __be32
+#define ovs_be64 __be64
 #else
-#include <sys/types.h>
+#include <stdint.h>
+#define ovs_be16 uint16_t
+#define ovs_be32 uint32_t
+#define ovs_be64 uint64_t
 #endif
-#include <linux/if_ether.h>
 
 #define XFLOW_MAX 256             /* Maximum number of datapaths. */
 
 
 struct xflow_stats {
     /* Flows. */
-    __u32 n_flows;              /* Number of flows in flow table. */
-    __u32 cur_capacity;         /* Current flow table capacity. */
-    __u32 max_capacity;         /* Maximum expansion of flow table capacity. */
+    uint32_t n_flows;           /* Number of flows in flow table. */
+    uint32_t cur_capacity;      /* Current flow table capacity. */
+    uint32_t max_capacity;      /* Maximum expansion of flow table capacity. */
 
     /* Ports. */
-    __u32 n_ports;              /* Current number of ports. */
-    __u32 max_ports;            /* Maximum supported number of ports. */
-    __u16 max_groups;           /* Maximum number of port groups. */
-    __u16 reserved;
+    uint32_t n_ports;           /* Current number of ports. */
+    uint32_t max_ports;         /* Maximum supported number of ports. */
+    uint16_t max_groups;        /* Maximum number of port groups. */
+    uint16_t reserved;
 
     /* Lookups. */
-    __u64 n_frags;              /* Number of dropped IP fragments. */
-    __u64 n_hit;                /* Number of flow table matches. */
-    __u64 n_missed;             /* Number of flow table misses. */
-    __u64 n_lost;               /* Number of misses not sent to userspace. */
+    uint64_t n_frags;           /* Number of dropped IP fragments. */
+    uint64_t n_hit;             /* Number of flow table matches. */
+    uint64_t n_missed;          /* Number of flow table misses. */
+    uint64_t n_lost;            /* Number of misses not sent to userspace. */
 
     /* Queues. */
-    __u16 max_miss_queue;       /* Max length of XFLOWL_MISS queue. */
-    __u16 max_action_queue;     /* Max length of XFLOWL_ACTION queue. */
-    __u16 max_sflow_queue;      /* Max length of XFLOWL_SFLOW queue. */
+    uint16_t max_miss_queue;    /* Max length of XFLOWL_MISS queue. */
+    uint16_t max_action_queue;  /* Max length of XFLOWL_ACTION queue. */
+    uint16_t max_sflow_queue;   /* Max length of XFLOWL_SFLOW queue. */
 };
 
 /* Logical ports. */
-#define XFLOWP_LOCAL      ((__u16)0)
-#define XFLOWP_NONE       ((__u16)-1)
-#define XFLOWP_NORMAL     ((__u16)-2)
+#define XFLOWP_LOCAL      ((uint16_t)0)
+#define XFLOWP_NONE       ((uint16_t)-1)
+#define XFLOWP_NORMAL     ((uint16_t)-2)
 
 /* Listening channels. */
 #define _XFLOWL_MISS_NR   0       /* Packet missed in flow table. */
@@ -151,11 +161,11 @@ struct xflow_stats {
  * packet data.
  */
 struct xflow_msg {
-    __u32 type;
-    __u32 length;
-    __u16 port;
-    __u16 reserved;
-    __u32 arg;
+    uint32_t type;
+    uint32_t length;
+    uint16_t port;
+    uint16_t reserved;
+    uint32_t arg;
 };
 
 /**
@@ -171,37 +181,37 @@ struct xflow_msg {
  * packet data.
  */
 struct xflow_sflow_sample_header {
-    __u32 sample_pool;
-    __u32 n_actions;
+    uint32_t sample_pool;
+    uint32_t n_actions;
 };
 
 #define XFLOW_PORT_INTERNAL (1 << 0) /* This port is simulated. */
 struct xflow_port {
     char devname[16];           /* IFNAMSIZ */
-    __u16 port;
-    __u16 flags;
-    __u32 reserved2;
+    uint16_t port;
+    uint16_t flags;
+    uint32_t reserved2;
 };
 
 struct xflow_portvec {
     struct xflow_port *ports;
-    __u32 n_ports;
+    uint32_t n_ports;
 };
 
 struct xflow_port_group {
-    __u16 *ports;
-    __u16 n_ports;                /* Number of ports. */
-    __u16 group;                  /* Group number. */
+    uint16_t *ports;
+    uint16_t n_ports;           /* Number of ports. */
+    uint16_t group;             /* Group number. */
 };
 
 struct xflow_flow_stats {
-    __u64 n_packets;            /* Number of matched packets. */
-    __u64 n_bytes;              /* Number of matched bytes. */
-    __u64 used_sec;             /* Time last used. */
-    __u32 used_nsec;
-    __u8 tcp_flags;
-    __u8 ip_tos;
-    __u16 error;                /* Used by XFLOW_FLOW_GET. */
+    uint64_t n_packets;         /* Number of matched packets. */
+    uint64_t n_bytes;           /* Number of matched bytes. */
+    uint64_t used_sec;          /* Time last used. */
+    uint32_t used_nsec;
+    uint8_t tcp_flags;
+    uint8_t ip_tos;
+    uint16_t error;             /* Used by XFLOW_FLOW_GET. */
 };
 
 /*
@@ -213,19 +223,19 @@ struct xflow_flow_stats {
 #define XFLOW_TCI_PRESENT 0x1000  /* CFI bit */
 
 struct xflow_key {
-    __be32 tun_id;               /* Encapsulating tunnel ID. */
-    __be32 nw_src;               /* IP source address. */
-    __be32 nw_dst;               /* IP destination address. */
-    __u16  in_port;              /* Input switch port. */
-    __be16 dl_tci;               /* All zeros if 802.1Q header absent,
-                                  * XFLOW_TCI_PRESENT set if present. */
-    __be16 dl_type;              /* Ethernet frame type. */
-    __be16 tp_src;               /* TCP/UDP source port. */
-    __be16 tp_dst;               /* TCP/UDP destination port. */
-    __u8   dl_src[ETH_ALEN];     /* Ethernet source address. */
-    __u8   dl_dst[ETH_ALEN];     /* Ethernet destination address. */
-    __u8   nw_proto;             /* IP protocol or low 8 bits of ARP opcode. */
-    __u8   nw_tos;               /* IP ToS (DSCP field, 6 bits). */
+    ovs_be32 tun_id;            /* Encapsulating tunnel ID. */
+    ovs_be32 nw_src;            /* IP source address. */
+    ovs_be32 nw_dst;            /* IP destination address. */
+    uint16_t in_port;           /* Input switch port. */
+    ovs_be16 dl_tci;            /* All zeros if 802.1Q header absent,
+                                 * XFLOW_TCI_PRESENT set if present. */
+    ovs_be16 dl_type;           /* Ethernet frame type. */
+    ovs_be16 tp_src;            /* TCP/UDP source port. */
+    ovs_be16 tp_dst;            /* TCP/UDP destination port. */
+    uint8_t  dl_src[6];         /* Ethernet source address. */
+    uint8_t  dl_dst[6];         /* Ethernet destination address. */
+    uint8_t  nw_proto;          /* IP protocol or low 8 bits of ARP opcode. */
+    uint8_t  nw_tos;            /* IP ToS (DSCP field, 6 bits). */
 };
 
 /* Flags for XFLOW_FLOW. */
@@ -235,8 +245,8 @@ struct xflow_flow {
     struct xflow_flow_stats stats;
     struct xflow_key key;
     union xflow_action *actions;
-    __u32 n_actions;
-    __u32 flags;
+    uint32_t n_actions;
+    uint32_t flags;
 };
 
 /* Flags for XFLOW_FLOW_PUT. */
@@ -247,12 +257,12 @@ struct xflow_flow {
 /* XFLOW_FLOW_PUT argument. */
 struct xflow_flow_put {
     struct xflow_flow flow;
-    __u32 flags;
+    uint32_t flags;
 };
 
 struct xflow_flowvec {
     struct xflow_flow *flows;
-    __u32 n_flows;
+    uint32_t n_flows;
 };
 
 /* Action types. */
@@ -272,71 +282,71 @@ struct xflow_flowvec {
 #define XFLOWAT_N_ACTIONS         13
 
 struct xflow_action_output {
-    __u16 type;                  /* XFLOWAT_OUTPUT. */
-    __u16 port;                  /* Output port. */
-    __u16 reserved1;
-    __u16 reserved2;
+    uint16_t type;              /* XFLOWAT_OUTPUT. */
+    uint16_t port;              /* Output port. */
+    uint16_t reserved1;
+    uint16_t reserved2;
 };
 
 struct xflow_action_output_group {
-    __u16 type;                 /* XFLOWAT_OUTPUT_GROUP. */
-    __u16 group;                /* Group number. */
-    __u16 reserved1;
-    __u16 reserved2;
+    uint16_t type;              /* XFLOWAT_OUTPUT_GROUP. */
+    uint16_t group;             /* Group number. */
+    uint16_t reserved1;
+    uint16_t reserved2;
 };
 
 struct xflow_action_controller {
-    __u16 type;                 /* XFLOWAT_OUTPUT_CONTROLLER. */
-    __u16 reserved;
-    __u32 arg;                  /* Copied to struct xflow_msg 'arg' member. */
+    uint16_t type;              /* XFLOWAT_OUTPUT_CONTROLLER. */
+    uint16_t reserved;
+    uint32_t arg;               /* Copied to struct xflow_msg 'arg' member. */
 };
 
 struct xflow_action_tunnel {
-    __u16 type;                 /* XFLOWAT_SET_TUNNEL. */
-    __u16 reserved;
-    __be32 tun_id;              /* Tunnel ID. */
+    uint16_t type;              /* XFLOWAT_SET_TUNNEL. */
+    uint16_t reserved;
+    ovs_be32 tun_id;            /* Tunnel ID. */
 };
 
 /* Action structure for XFLOWAT_SET_DL_TCI. */
 struct xflow_action_dl_tci {
-    __u16 type;                  /* XFLOWAT_SET_DL_TCI. */
-    __be16 tci;                  /* New TCI.  Bits not in mask must be zero. */
-    __be16 mask;                 /* 0x0fff to set VID, 0xe000 to set PCP,
-                                    or 0xefff to set both. */
-    __u16 reserved;
+    uint16_t type;              /* XFLOWAT_SET_DL_TCI. */
+    ovs_be16 tci;               /* New TCI.  Bits not in mask must be zero. */
+    ovs_be16 mask;              /* 0x0fff to set VID, 0xe000 to set PCP,
+                                 * or 0xefff to set both. */
+    uint16_t reserved;
 };
 
 /* Action structure for XFLOWAT_SET_DL_SRC/DST. */
 struct xflow_action_dl_addr {
-    __u16 type;                  /* XFLOWAT_SET_DL_SRC/DST. */
-    __u8 dl_addr[ETH_ALEN];      /* Ethernet address. */
+    uint16_t type;              /* XFLOWAT_SET_DL_SRC/DST. */
+    uint8_t dl_addr[6];         /* Ethernet address. */
 };
 
 /* Action structure for XFLOWAT_SET_NW_SRC/DST. */
 struct xflow_action_nw_addr {
-    __u16 type;                 /* XFLOWAT_SET_TW_SRC/DST. */
-    __u16 reserved;
-    __be32 nw_addr;             /* IP address. */
+    uint16_t type;              /* XFLOWAT_SET_TW_SRC/DST. */
+    uint16_t reserved;
+    ovs_be32 nw_addr;           /* IP address. */
 };
 
 struct xflow_action_nw_tos {
-    __u16 type;                  /* XFLOWAT_SET_NW_TOS. */
-    __u8 nw_tos;                 /* IP ToS/DSCP field (6 bits). */
-    __u8 reserved1;
-    __u16 reserved2;
-    __u16 reserved3;
+    uint16_t type;              /* XFLOWAT_SET_NW_TOS. */
+    uint8_t nw_tos;             /* IP ToS/DSCP field (6 bits). */
+    uint8_t reserved1;
+    uint16_t reserved2;
+    uint16_t reserved3;
 };
 
 /* Action structure for XFLOWAT_SET_TP_SRC/DST. */
 struct xflow_action_tp_port {
-    __u16 type;                  /* XFLOWAT_SET_TP_SRC/DST. */
-    __be16 tp_port;              /* TCP/UDP port. */
-    __u16 reserved1;
-    __u16 reserved2;
+    uint16_t type;              /* XFLOWAT_SET_TP_SRC/DST. */
+    ovs_be16 tp_port;           /* TCP/UDP port. */
+    uint16_t reserved1;
+    uint16_t reserved2;
 };
 
 union xflow_action {
-    __u16 type;
+    uint16_t type;
     struct xflow_action_output output;
     struct xflow_action_output_group output_group;
     struct xflow_action_controller controller;
@@ -349,57 +359,57 @@ union xflow_action {
 };
 
 struct xflow_execute {
-    __u16 in_port;
-    __u16 reserved1;
-    __u32 reserved2;
+    uint16_t in_port;
+    uint16_t reserved1;
+    uint32_t reserved2;
 
     union xflow_action *actions;
-    __u32 n_actions;
+    uint32_t n_actions;
 
     const void *data;
-    __u32 length;
+    uint32_t length;
 };
 
 #define VPORT_TYPE_SIZE     16
 struct xflow_vport_add {
     char port_type[VPORT_TYPE_SIZE];
-    char devname[16];            /* IFNAMSIZ */
+    char devname[16];           /* IFNAMSIZ */
     void *config;
 };
 
 struct xflow_vport_mod {
-    char devname[16];            /* IFNAMSIZ */
+    char devname[16];           /* IFNAMSIZ */
     void *config;
 };
 
 struct xflow_vport_stats {
-    __u64 rx_packets;
-    __u64 tx_packets;
-    __u64 rx_bytes;
-    __u64 tx_bytes;
-    __u64 rx_dropped;
-    __u64 tx_dropped;
-    __u64 rx_errors;
-    __u64 tx_errors;
-    __u64 rx_frame_err;
-    __u64 rx_over_err;
-    __u64 rx_crc_err;
-    __u64 collisions;
+    uint64_t rx_packets;
+    uint64_t tx_packets;
+    uint64_t rx_bytes;
+    uint64_t tx_bytes;
+    uint64_t rx_dropped;
+    uint64_t tx_dropped;
+    uint64_t rx_errors;
+    uint64_t tx_errors;
+    uint64_t rx_frame_err;
+    uint64_t rx_over_err;
+    uint64_t rx_crc_err;
+    uint64_t collisions;
 };
 
 struct xflow_vport_stats_req {
-    char devname[16];            /* IFNAMSIZ */
+    char devname[16];           /* IFNAMSIZ */
     struct xflow_vport_stats stats;
 };
 
 struct xflow_vport_ether {
-    char devname[16];            /* IFNAMSIZ */
-    unsigned char ether_addr[ETH_ALEN];
+    char devname[16];           /* IFNAMSIZ */
+    unsigned char ether_addr[6];
 };
 
 struct xflow_vport_mtu {
-    char devname[16];            /* IFNAMSIZ */
-    __u16 mtu;
+    char devname[16];           /* IFNAMSIZ */
+    uint16_t mtu;
 };
 
 /* Values below this cutoff are 802.3 packets and the two bytes
index 5911059..17fa4bc 100644 (file)
@@ -58,12 +58,7 @@ lib_libopenvswitch_a_SOURCES = \
        lib/lockfile.h \
        lib/mac-learning.c \
        lib/mac-learning.h \
-       lib/netdev-gre.c \
-       lib/netdev-linux.c \
-       lib/netdev-patch.c \
        lib/netdev-provider.h \
-       lib/netdev-vport.c \
-       lib/netdev-vport.h \
        lib/netdev.c \
        lib/netdev.h \
        lib/ofp-print.c \
@@ -99,8 +94,6 @@ lib_libopenvswitch_a_SOURCES = \
        lib/rconn.h \
        lib/reconnect.c \
        lib/reconnect.h \
-       lib/rtnetlink.c \
-       lib/rtnetlink.h \
        lib/sat-math.h \
        lib/sha1.c \
        lib/sha1.h \
@@ -175,9 +168,17 @@ endif
 
 if HAVE_NETLINK
 lib_libopenvswitch_a_SOURCES += \
+       lib/netdev-gre.c \
+       lib/netdev-linux.c \
+       lib/netdev-patch.c \
+       lib/netdev-vport.c \
+       lib/netdev-vport.h \
        lib/netlink-protocol.h \
        lib/netlink.c \
-       lib/netlink.h
+       lib/netlink.h \
+       lib/rtnetlink.c \
+       lib/rtnetlink.h \
+       lib/xfif-linux.c
 endif
 
 if HAVE_OPENSSL
index 78f88a0..59628f2 100644 (file)
 #include "daemon.h"
 #include <errno.h>
 #include <fcntl.h>
+#include <signal.h>
 #include <stdlib.h>
 #include <string.h>
+#include <sys/resource.h>
 #include <sys/wait.h>
 #include <unistd.h>
 #include "command-line.h"
index 0abf115..563a415 100644 (file)
@@ -806,13 +806,8 @@ void
 dhclient_wait(struct dhclient *cli)
 {
     if (cli->min_timeout != UINT_MAX) {
-        time_t now = time_now();
-        unsigned int wake = sat_add(cli->state_entered, cli->min_timeout);
-        if (wake <= now) {
-            poll_immediate_wake();
-        } else {
-            poll_timer_wait(sat_mul(sat_sub(wake, now), 1000));
-        }
+        long long int wake = sat_add(cli->state_entered, cli->min_timeout);
+        poll_timer_wait_until(wake * 1000);
     }
     /* Reset timeout to 1 second.  This will have no effect ordinarily, because
      * dhclient_run() will typically set it back to a higher value.  If,
index 443ce95..82d6ae0 100644 (file)
@@ -25,6 +25,7 @@
 #include "openflow/openflow.h"
 #include "hash.h"
 #include "openvswitch/xflow.h"
+#include "packets.h"
 #include "util.h"
 
 #ifdef  __cplusplus
@@ -47,8 +48,8 @@ struct flow {
     uint16_t dl_type;           /* Ethernet frame type. */
     uint16_t tp_src;            /* TCP/UDP source port. */
     uint16_t tp_dst;            /* TCP/UDP destination port. */
-    uint8_t dl_src[ETH_ALEN];   /* Ethernet source address. */
-    uint8_t dl_dst[ETH_ALEN];   /* Ethernet destination address. */
+    uint8_t dl_src[ETH_ADDR_LEN]; /* Ethernet source address. */
+    uint8_t dl_dst[ETH_ADDR_LEN]; /* Ethernet destination address. */
     uint8_t nw_proto;           /* IP protocol or low 8 bits of ARP opcode. */
     uint8_t dl_vlan_pcp;        /* Input VLAN priority. */
     uint8_t nw_tos;             /* IP ToS (DSCP field, 6 bits). */
index 126cc6b..64639f2 100644 (file)
@@ -220,13 +220,7 @@ lswitch_run(struct lswitch *sw, struct rconn *rconn)
 static void
 wait_timeout(long long int started)
 {
-    long long int now = time_msec();
-    long long int timeout = 10000 - (now - started);
-    if (timeout <= 0) {
-        poll_immediate_wake();
-    } else {
-        poll_timer_wait(timeout);
-    }
+    poll_timer_wait_until(started + 10000);
 }
 
 void
index a9d414d..f9859b6 100644 (file)
@@ -293,6 +293,6 @@ mac_learning_wait(struct mac_learning *ml)
 {
     if (!list_is_empty(&ml->lrus)) {
         struct mac_entry *e = mac_entry_from_lru_node(ml->lrus.next);
-        poll_timer_wait((e->expires - time_now()) * 1000);
+        poll_timer_wait_until(e->expires * 1000LL);
     }
 }
index 6a8f4f5..2afb9b5 100644 (file)
 #include "vlog.h"
 
 static const struct netdev_class *base_netdev_classes[] = {
+#ifdef HAVE_NETLINK
     &netdev_linux_class,
     &netdev_tap_class,
     &netdev_patch_class,
     &netdev_gre_class,
+#endif
 };
 
 static struct shash netdev_classes = SHASH_INITIALIZER(&netdev_classes);
index 8f65f94..91034b0 100644 (file)
@@ -73,6 +73,18 @@ poll_fd_wait(int fd, short int events)
     return new_waiter(fd, events);
 }
 
+/* The caller must ensure that 'msec' is not negative. */
+static void
+poll_timer_wait__(int msec)
+{
+    if (timeout < 0 || msec < timeout) {
+        timeout = msec;
+        if (VLOG_IS_DBG_ENABLED()) {
+            backtrace_capture(&timeout_backtrace);
+        }
+    }
+}
+
 /* Causes the following call to poll_block() to block for no more than 'msec'
  * milliseconds.  If 'msec' is nonpositive, the following call to poll_block()
  * will not block at all.
@@ -81,14 +93,28 @@ poll_fd_wait(int fd, short int events)
  * is affected.  The timer will need to be re-registered after poll_block() is
  * called if it is to persist. */
 void
-poll_timer_wait(int msec)
+poll_timer_wait(long long int msec)
 {
-    if (timeout < 0 || msec < timeout) {
-        timeout = MAX(0, msec);
-        if (VLOG_IS_DBG_ENABLED()) {
-            backtrace_capture(&timeout_backtrace);
-        }
-    }
+    poll_timer_wait__(msec < 0 ? 0
+                      : msec > INT_MAX ? INT_MAX
+                      : msec);
+}
+
+/* Causes the following call to poll_block() to wake up when the current time,
+ * as returned by time_msec(), reaches 'msec' or later.  If 'msec' is earlier
+ * than the current time, the following call to poll_block() will not block at
+ * all.
+ *
+ * The timer registration is one-shot: only the following call to poll_block()
+ * is affected.  The timer will need to be re-registered after poll_block() is
+ * called if it is to persist. */
+void
+poll_timer_wait_until(long long int msec)
+{
+    long long int now = time_msec();
+    poll_timer_wait__(msec <= now ? 0
+                      : msec < now + INT_MAX ? msec - now
+                      : INT_MAX);
 }
 
 /* Causes the following call to poll_block() to wake up immediately, without
index adb88d4..a9038ca 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009 Nicira Networks.
+ * Copyright (c) 2008, 2009, 2010 Nicira Networks.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -42,7 +42,8 @@ struct poll_waiter;
 
 /* Schedule events to wake up the following poll_block(). */
 struct poll_waiter *poll_fd_wait(int fd, short int events);
-void poll_timer_wait(int msec);
+void poll_timer_wait(long long int msec);
+void poll_timer_wait_until(long long int msec);
 void poll_immediate_wake(void);
 
 /* Wait until an event occurs. */
index ea45134..71198ea 100644 (file)
@@ -500,9 +500,8 @@ rconn_run_wait(struct rconn *rc)
 
     timeo = timeout(rc);
     if (timeo != UINT_MAX) {
-        unsigned int expires = sat_add(rc->state_entered, timeo);
-        unsigned int remaining = sat_sub(expires, time_now());
-        poll_timer_wait(sat_mul(remaining, 1000));
+        long long int expires = sat_add(rc->state_entered, timeo);
+        poll_timer_wait_until(expires * 1000);
     }
 
     if ((rc->state & (S_ACTIVE | S_IDLE)) && rc->txq.n) {
index 4965b63..bf563ed 100644 (file)
@@ -26,6 +26,8 @@
 #include <stdlib.h>
 #include <string.h>
 #include <sys/resource.h>
+#include <sys/socket.h>
+#include <sys/stat.h>
 #include <sys/un.h>
 #include <unistd.h>
 #include "fatal-signal.h"
@@ -53,6 +55,28 @@ set_nonblocking(int fd)
     }
 }
 
+static bool
+rlim_is_finite(rlim_t limit)
+{
+    if (limit == RLIM_INFINITY) {
+        return false;
+    }
+
+#ifdef RLIM_SAVED_CUR           /* FreeBSD 8.0 lacks RLIM_SAVED_CUR. */
+    if (limit == RLIM_SAVED_CUR) {
+        return false;
+    }
+#endif
+
+#ifdef RLIM_SAVED_MAX           /* FreeBSD 8.0 lacks RLIM_SAVED_MAX. */
+    if (limit == RLIM_SAVED_MAX) {
+        return false;
+    }
+#endif
+
+    return true;
+}
+
 /* Returns the maximum valid FD value, plus 1. */
 int
 get_max_fds(void)
@@ -60,10 +84,7 @@ get_max_fds(void)
     static int max_fds = -1;
     if (max_fds < 0) {
         struct rlimit r;
-        if (!getrlimit(RLIMIT_NOFILE, &r)
-            && r.rlim_cur != RLIM_INFINITY
-            && r.rlim_cur != RLIM_SAVED_MAX
-            && r.rlim_cur != RLIM_SAVED_CUR) {
+        if (!getrlimit(RLIMIT_NOFILE, &r) && rlim_is_finite(r.rlim_cur)) {
             max_fds = r.rlim_cur;
         } else {
             VLOG_WARN("failed to obtain fd limit, defaulting to 1024");
index 94c8434..cc897b3 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009 Nicira Networks.
+ * Copyright (c) 2008, 2009, 2010 Nicira Networks.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -21,6 +21,7 @@
 #include <poll.h>
 #include <stdlib.h>
 #include <string.h>
+#include <sys/socket.h>
 #include <sys/types.h>
 #include <unistd.h>
 #include "fatal-signal.h"
index a9bcaeb..2f7e798 100644 (file)
@@ -23,6 +23,7 @@
 #include <netinet/tcp.h>
 #include <stdlib.h>
 #include <string.h>
+#include <sys/socket.h>
 #include <unistd.h>
 #include "packets.h"
 #include "socket-util.h"
index 33f566b..930f548 100644 (file)
@@ -21,6 +21,7 @@
 #include <inttypes.h>
 #include <netdb.h>
 #include <poll.h>
+#include <sys/socket.h>
 #include <sys/types.h>
 #include <sys/un.h>
 #include <stdlib.h>
index b52d3d1..7078568 100644 (file)
@@ -34,6 +34,7 @@
 #include "poll-loop.h"
 #include "shash.h"
 #include "socket-util.h"
+#include "svec.h"
 #include "util.h"
 
 #ifndef SCM_CREDENTIALS
@@ -82,11 +83,23 @@ unixctl_help(struct unixctl_conn *conn, const char *args OVS_UNUSED,
 {
     struct ds ds = DS_EMPTY_INITIALIZER;
     struct shash_node *node;
+    struct svec names;
+    const char *name;
+    size_t i;
 
     ds_put_cstr(&ds, "The available commands are:\n");
+
+    svec_init(&names);
     SHASH_FOR_EACH (node, &commands) {
-        ds_put_format(&ds, "\t%s\n", node->name);
+        svec_add(&names, node->name);
+    }
+    svec_sort(&names);
+
+    SVEC_FOR_EACH (i, name, &names) {
+        ds_put_format(&ds, "\t%s\n", name);
     }
+    svec_destroy(&names);
+
     unixctl_command_reply(conn, 214, ds_cstr(&ds));
     ds_destroy(&ds);
 }
index afc8c7c..68f84a8 100644 (file)
@@ -23,6 +23,7 @@
 #include <fcntl.h>
 #include <inttypes.h>
 #include <net/if.h>
+#include <linux/types.h>
 #include <linux/ethtool.h>
 #include <linux/rtnetlink.h>
 #include <linux/sockios.h>
index 57be768..642d874 100644 (file)
@@ -23,6 +23,7 @@
 #include <fcntl.h>
 #include <inttypes.h>
 #include <netinet/in.h>
+#include <sys/socket.h>
 #include <net/if.h>
 #include <stdlib.h>
 #include <string.h>
index 1f18f4c..b19c706 100644 (file)
@@ -42,7 +42,9 @@
 #define THIS_MODULE VLM_xfif
 
 static const struct xfif_class *base_xfif_classes[] = {
+#ifdef HAVE_NETLINK
     &xfif_linux_class,
+#endif
     &xfif_netdev_class,
 };
 
index b6d2d13..a673c38 100644 (file)
@@ -172,8 +172,8 @@ xflow_key_from_flow(struct xflow_key *key, const struct flow *flow)
     key->dl_type = flow->dl_type;
     key->tp_src = flow->tp_src;
     key->tp_dst = flow->tp_dst;
-    memcpy(key->dl_src, flow->dl_src, ETH_ALEN);
-    memcpy(key->dl_dst, flow->dl_dst, ETH_ALEN);
+    memcpy(key->dl_src, flow->dl_src, ETH_ADDR_LEN);
+    memcpy(key->dl_dst, flow->dl_dst, ETH_ADDR_LEN);
     key->nw_proto = flow->nw_proto;
     key->nw_tos = flow->nw_tos;
 }
@@ -197,8 +197,8 @@ xflow_key_to_flow(const struct xflow_key *key, struct flow *flow)
     flow->dl_type = key->dl_type;
     flow->tp_src = key->tp_src;
     flow->tp_dst = key->tp_dst;
-    memcpy(flow->dl_src, key->dl_src, ETH_ALEN);
-    memcpy(flow->dl_dst, key->dl_dst, ETH_ALEN);
+    memcpy(flow->dl_src, key->dl_src, ETH_ADDR_LEN);
+    memcpy(flow->dl_dst, key->dl_dst, ETH_ADDR_LEN);
     flow->nw_proto = key->nw_proto;
     flow->nw_tos = key->nw_tos;
 }
index 55da492..9e195cd 100644 (file)
@@ -18,6 +18,7 @@
 #define XFLOW_UTIL_H 1
 
 #include <stdbool.h>
+#include <stddef.h>
 #include <stdint.h>
 #include <string.h>
 #include "hash.h"
diff --git a/m4/as_echo.m4 b/m4/as_echo.m4
deleted file mode 100644 (file)
index c80c6c2..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-# This file is part of Autoconf.                          -*- Autoconf -*-
-# M4 sugar for common shell constructs.
-# Requires GNU M4 and M4sugar.
-#
-# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-# 2009, 2010 Free Software Foundation, Inc.
-
-# This file is part of Autoconf.  This program is free
-# software; you can redistribute it and/or modify it under the
-# terms of the GNU General Public License as published by the
-# Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# Under Section 7 of GPL version 3, you are granted additional
-# permissions described in the Autoconf Configure Script Exception,
-# version 3.0, as published by the Free Software Foundation.
-#
-# You should have received a copy of the GNU General Public License
-# and a copy of the Autoconf Configure Script Exception along with
-# this program; see the files COPYINGv3 and COPYING.EXCEPTION
-# respectively.  If not, see <http://www.gnu.org/licenses/>.
-
-# Written by Akim Demaille, Pavel Roskin, Alexandre Oliva, Lars J. Aas
-# and many other people.
-
-# Define AS_ECHO for compatibility with Autoconf before version 2.62.
-m4_ifndef([AS_ECHO], [
-
-# AS_ECHO(WORD)
-# -------------
-# Output WORD followed by a newline.  WORD must be a single shell word
-# (typically a quoted string).  The bytes of WORD are output as-is, even
-# if it starts with "-" or contains "\".
-m4_defun_init([AS_ECHO],
-[AS_REQUIRE([_$0_PREPARE])],
-[$as_echo $1])
-
-
-# AS_ECHO_N(WORD)
-# ---------------
-# Like AS_ECHO(WORD), except do not output the trailing newline.
-m4_defun_init([AS_ECHO_N],
-[AS_REQUIRE([_AS_ECHO_PREPARE])],
-[$as_echo_n $1])
-
-
-# _AS_ECHO_PREPARE
-# ----------------
-# Arrange for $as_echo 'FOO' to echo FOO without escape-interpretation;
-# and similarly for $as_echo_n, which omits the trailing newline.
-# 'FOO' is an optional single argument; a missing FOO is treated as empty.
-m4_defun([_AS_ECHO_PREPARE],
-[[as_nl='
-'
-export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
-    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='print -r --'
-  as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='printf %s\n'
-  as_echo_n='printf %s'
-else
-  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
-    as_echo_body='eval /usr/ucb/echo -n "$][1$as_nl"'
-    as_echo_n='/usr/ucb/echo -n'
-  else
-    as_echo_body='eval expr "X$][1" : "X\\(.*\\)"'
-    as_echo_n_body='eval
-      arg=$][1;
-      case $arg in @%:@(
-      *"$as_nl"*)
-       expr "X$arg" : "X\\(.*\\)$as_nl";
-       arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
-      esac;
-      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
-    '
-    export as_echo_n_body
-    as_echo_n='sh -c $as_echo_n_body as_echo'
-  fi
-  export as_echo_body
-  as_echo='sh -c $as_echo_body as_echo'
-fi
-]])# _AS_ECHO_PREPARE
-])
index 621d69a..2206aff 100644 (file)
@@ -290,10 +290,10 @@ AC_DEFUN([OVS_CHECK_PYTHON_MODULE],
       if test $HAVE_PYTHON = yes; then
         AS_ECHO(["running $PYTHON -c 'import $1
 import sys
-sys.exit(0)'..."]) >AS_MESSAGE_LOG_FD 2>&1
+sys.exit(0)'..."]) >&AS_MESSAGE_LOG_FD 2>&1
         if $PYTHON -c 'import $1
 import sys
-sys.exit(0)' >AS_MESSAGE_LOG_FD 2>&1; then
+sys.exit(0)' >&AS_MESSAGE_LOG_FD 2>&1; then
           ovs_cv_py_[]AS_TR_SH([$1])=yes
         fi
       fi])])
index f063983..0b84c3e 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009 Nicira Networks.
+ * Copyright (c) 2008, 2009, 2010 Nicira Networks.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,6 +20,7 @@
 
 #include <errno.h>
 #include <stdlib.h>
+#include <sys/socket.h>
 #include <unistd.h>
 
 #include "socket-util.h"
index 3a4b1eb..fb69f34 100644 (file)
@@ -18,6 +18,7 @@
 #include "discovery.h"
 #include <errno.h>
 #include <inttypes.h>
+#include <sys/socket.h>
 #include <net/if.h>
 #include <regex.h>
 #include <stdlib.h>
index d19893b..352ce11 100644 (file)
@@ -272,7 +272,7 @@ void
 fail_open_wait(struct fail_open *fo)
 {
     if (fo->next_bogus_packet_in != LLONG_MAX) {
-        poll_timer_wait(fo->next_bogus_packet_in - time_msec());
+        poll_timer_wait_until(fo->next_bogus_packet_in);
     }
 }
 
index 076c71a..2a1e0a7 100644 (file)
@@ -19,6 +19,7 @@
 #include <arpa/inet.h>
 #include <errno.h>
 #include <inttypes.h>
+#include <sys/socket.h>
 #include <net/if.h>
 #include <string.h>
 #include <stdlib.h>
@@ -675,14 +676,9 @@ in_band_run(struct in_band *ib)
 void
 in_band_wait(struct in_band *in_band)
 {
-    time_t now = time_now();
-    time_t wakeup 
+    long long int wakeup
             = MIN(in_band->next_remote_refresh, in_band->next_local_refresh);
-    if (wakeup > now) {
-        poll_timer_wait((wakeup - now) * 1000);
-    } else {
-        poll_immediate_wake();
-    }
+    poll_timer_wait_until(wakeup * 1000);
 }
 
 /* ofproto has flushed all flows from the flow table and it is calling us back
index 8cedfe9..e643f84 100644 (file)
@@ -612,6 +612,6 @@ void
 ofproto_sflow_wait(struct ofproto_sflow *os)
 {
     if (ofproto_sflow_is_enabled(os)) {
-        poll_timer_wait(os->next_tick * 1000 - time_msec());
+        poll_timer_wait_until(os->next_tick * 1000LL);
     }
 }
index 2b26d67..e643042 100644 (file)
@@ -19,6 +19,7 @@
 #include "ofproto.h"
 #include <errno.h>
 #include <inttypes.h>
+#include <sys/socket.h>
 #include <net/if.h>
 #include <netinet/in.h>
 #include <stdbool.h>
@@ -450,6 +451,10 @@ update_in_band_remotes(struct ofproto *ofproto)
     HMAP_FOR_EACH (ofconn, struct ofconn, hmap_node, &ofproto->controllers) {
         struct sockaddr_in *sin = &addrs[n_addrs];
 
+        if (ofconn->band == OFPROTO_OUT_OF_BAND) {
+            continue;
+        }
+
         sin->sin_addr.s_addr = rconn_get_remote_ip(ofconn->rconn);
         if (sin->sin_addr.s_addr) {
             sin->sin_port = rconn_get_remote_port(ofconn->rconn);
@@ -473,7 +478,9 @@ update_in_band_remotes(struct ofproto *ofproto)
             in_band_create(ofproto, ofproto->wdp, ofproto->switch_status,
                            &ofproto->in_band);
         }
-        in_band_set_remotes(ofproto->in_band, addrs, n_addrs);
+        if (ofproto->in_band) {
+            in_band_set_remotes(ofproto->in_band, addrs, n_addrs);
+        }
         ofproto->next_in_band_update = time_msec() + 1000;
     } else {
         in_band_destroy(ofproto->in_band);
@@ -988,7 +995,7 @@ ofproto_wait(struct ofproto *p)
         ofconn_wait(ofconn);
     }
     if (p->in_band) {
-        poll_timer_wait(p->next_in_band_update - time_msec());
+        poll_timer_wait_until(p->next_in_band_update);
         in_band_wait(p->in_band);
     }
     if (p->fail_open) {
index 3f80ded..a4e947f 100644 (file)
@@ -1127,7 +1127,7 @@ wx_wait_one(struct wx *wx)
     if (wx->need_revalidate /*|| !tag_set_is_empty(&p->revalidate_set)*/) {
         poll_immediate_wake();
     } else if (wx->next_expiration != LLONG_MAX) {
-        poll_timer_wait(wx->next_expiration - time_msec());
+        poll_timer_wait_until(wx->next_expiration);
     }
 }
 
index 055e47b..37d669b 100644 (file)
@@ -60,6 +60,8 @@ EXTRA_DIST += ovsdb/ovsdb-server.1.in
 
 # ovsdb-idlc
 EXTRA_DIST += \
+       ovsdb/OVSDB.py \
+       ovsdb/SPECS \
        ovsdb/simplejson/__init__.py \
        ovsdb/simplejson/_speedups.c                            \
        ovsdb/simplejson/decoder.py                             \
index ccb844f..09b9f1f 100644 (file)
@@ -22,6 +22,7 @@
 #include <fcntl.h>
 #include <stdlib.h>
 #include <string.h>
+#include <sys/stat.h>
 #include <unistd.h>
 
 #include "json.h"
index b78920f..5d1f960 100644 (file)
@@ -19,6 +19,7 @@ ovsdbmonitor_pyfiles = \
        ovsdb/ovsdbmonitor/qt4reactor.py
 EXTRA_DIST += \
        $(ovsdbmonitor_pyfiles) \
+       ovsdb/ovsdbmonitor/COPYING \
        ovsdb/ovsdbmonitor/ConfigWindow.ui \
        ovsdb/ovsdbmonitor/FlowWindow.ui \
        ovsdb/ovsdbmonitor/HostWindow.ui \
diff --git a/ovsdb/ovsdbmonitor/ovsdbmonitor.py.in b/ovsdb/ovsdbmonitor/ovsdbmonitor.py.in
deleted file mode 100755 (executable)
index 29057f1..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-#! @PYTHON@
-# Copyright (c) 2010 Citrix Systems, Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at:
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-# Version 1.51
-# 2010-05-07
-
-sys.path.insert(0, "@ovsdbmonitordir@")
-
-import sys, traceback
-from pprint import pprint
-from OVEApp import *
-
-app = OVEApp()
-try:
-    retVal = app.enter()
-except Exception, e:
-    print str(e)
-    try:
-        trace = traceback.format_tb(sys.exc_info()[2])
-    except:
-        trace = ['Traceback not available']
-    print("".join(trace))
-    retVal = 1
-
-sys.exit(retVal)
index 1ecfdca..4771969 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2009 Nicira Networks
+/* Copyright (c) 2009, 2010 Nicira Networks
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -102,7 +102,7 @@ ovsdb_trigger_wait(struct ovsdb *db, long long int now)
         }
 
         if (deadline < LLONG_MAX) {
-            poll_timer_wait(MIN(deadline - now, INT_MAX));
+            poll_timer_wait_until(deadline);
         }
     }
 }
index a03ed45..f9e6953 100644 (file)
@@ -1,18 +1,16 @@
-AT_BANNER([classifier unit tests])
-
-m4_define([CHECK_CLASSIFIER],
-  [AT_SETUP([m4_translit([$1], [-], [ ])])
-   AT_KEYWORDS([classifier $2])
-   AT_CHECK([test-classifier $1])
-   AT_CLEANUP])
-
-CHECK_CLASSIFIER([empty])
-CHECK_CLASSIFIER([destroy-null])
-CHECK_CLASSIFIER([single-rule], [slow])
-CHECK_CLASSIFIER([rule-replacement], [slow])
-CHECK_CLASSIFIER([two-rules-in-one-bucket])
-CHECK_CLASSIFIER([two-rules-in-one-table])
-CHECK_CLASSIFIER([two-rules-in-different-tables])
-CHECK_CLASSIFIER([many-rules-in-one-bucket], [slow])
-CHECK_CLASSIFIER([many-rules-in-one-table], [slow])
-CHECK_CLASSIFIER([many-rules-in-different-tables], [slow])
+AT_BANNER([flow classifier unit tests])
+m4_foreach(
+  [testname],
+  [[empty],
+   [destroy-null],
+   [single-rule],
+   [rule-replacement],
+   [two-rules-in-one-bucket],
+   [two-rules-in-one-table],
+   [two-rules-in-different-tables],
+   [many-rules-in-one-bucket],
+   [many-rules-in-one-table],
+   [many-rules-in-different-tables]],
+  [AT_SETUP([flow classifier - m4_bpatsubst(testname, [-], [ ])])
+   AT_CHECK([test-classifier testname], [0], [], [])
+   AT_CLEANUP])])
index 4bfd909..af89e7f 100644 (file)
@@ -160,11 +160,11 @@ dnl <C0> is not allowed anywhere in a UTF-8 string.
 dnl <ED A0 80> is a surrogate and not allowed in UTF-8.
 OVSDB_CHECK_POSITIVE([no invalid UTF-8 sequences in strings],
   [parse-atoms '[["string"]]' \
-     '@<:@"m4_esyscmd([printf "\xc0"])"@:>@' \
-     '@<:@"m4_esyscmd([printf "\xed\xa0\x80"])"@:>@' \
+     '@<:@"m4_esyscmd([printf "\300"])"@:>@' \
+     '@<:@"m4_esyscmd([printf "\355\240\200"])"@:>@' \
 ],
-  [constraint violation: "m4_esyscmd([printf "\xc0"])" is not a valid UTF-8 string: invalid UTF-8 sequence 0xc0
-constraint violation: "m4_esyscmd([printf "\xed\xa0\x80"])" is not a valid UTF-8 string: invalid UTF-8 sequence 0xed 0xa0])
+  [constraint violation: "m4_esyscmd([printf "\300"])" is not a valid UTF-8 string: invalid UTF-8 sequence 0xc0
+constraint violation: "m4_esyscmd([printf "\355\240\200"])" is not a valid UTF-8 string: invalid UTF-8 sequence 0xed 0xa0])
 
 OVSDB_CHECK_NEGATIVE([real not acceptable integer string atom],
   [[parse-atom-strings '["integer"]' '0.5' ]],
index b9032cf..a671a6a 100644 (file)
  */
 
 #include <config.h>
-#include <limits.h>
 #include "classifier.h"
 #include <errno.h>
 #include <limits.h>
 #include "command-line.h"
 #include "flow.h"
-#include <limits.h>
 #include "packets.h"
 #include "test-command-line.h"
 
@@ -355,17 +353,18 @@ lookup_with_include_bits(const struct classifier *cls,
 static void
 compare_classifiers(struct classifier *cls, struct tcls *tcls)
 {
+    static const int confidence = 500;
     unsigned int i;
 
     assert(classifier_count(cls) == tcls->n_rules);
     assert(classifier_count_exact(cls) == tcls_count_exact(tcls));
-    for (i = 0; i < N_FLOW_VALUES; i++) {
+    for (i = 0; i < confidence; i++) {
         struct cls_rule *cr0, *cr1;
         flow_t flow;
         unsigned int x;
         int include;
 
-        x = i;
+        x = rand () % N_FLOW_VALUES;
         flow.nw_src = nw_src_values[get_value(&x, N_NW_SRC_VALUES)];
         flow.nw_dst = nw_dst_values[get_value(&x, N_NW_DST_VALUES)];
         flow.tun_id = tun_id_values[get_value(&x, N_TUN_ID_VALUES)];
@@ -763,7 +762,8 @@ test_two_rules_in_one_table(int argc OVS_UNUSED, char *argv[] OVS_UNUSED)
 /* Tests classification with two rules at a time that fall into different
  * tables. */
 static void
-test_two_rules_in_different_tables(int argc OVS_UNUSED, char *argv[] OVS_UNUSED)
+test_two_rules_in_different_tables(int argc OVS_UNUSED,
+                                   char *argv[] OVS_UNUSED)
 {
     int table1, table2, rel_pri, wcf_pat;
 
index a394f6c..265bdec 100644 (file)
@@ -396,7 +396,7 @@ static const struct command commands[] = {
 };
 
 int
-main(int argc OVS_UNUSED, char *argv[])
+main(int argc, char *argv[])
 {
     set_program_name(argv[0]);
     time_init();
index 5feb01c..c5bf98f 100644 (file)
@@ -6,9 +6,7 @@ bin_PROGRAMS += \
        utilities/ovs-kill \
        utilities/ovs-ofctl \
        utilities/ovs-openflowd \
-       utilities/ovs-vsctl \
-       utilities/ovs-wdt
-noinst_PROGRAMS += utilities/nlmon
+       utilities/ovs-vsctl
 bin_SCRIPTS += utilities/ovs-pki utilities/ovs-vsctl
 noinst_SCRIPTS += utilities/ovs-pki-cgi utilities/ovs-parse-leaks
 dist_sbin_SCRIPTS += utilities/ovs-monitor 
@@ -79,7 +77,11 @@ utilities_ovs_openflowd_LDADD = \
 utilities_ovs_vsctl_SOURCES = utilities/ovs-vsctl.c vswitchd/vswitch-idl.c
 utilities_ovs_vsctl_LDADD = lib/libopenvswitch.a $(SSL_LIBS)
 
+if HAVE_NETLINK
+bin_PROGRAMS += utilities/ovs-wdt
 utilities_ovs_wdt_SOURCES = utilities/ovs-wdt.c
 
+noinst_PROGRAMS += utilities/nlmon
 utilities_nlmon_SOURCES = utilities/nlmon.c
 utilities_nlmon_LDADD = lib/libopenvswitch.a
+endif
index c4937a3..59bfa38 100644 (file)
@@ -19,6 +19,7 @@
 #include <errno.h>
 #include <getopt.h>
 #include <inttypes.h>
+#include <sys/socket.h>
 #include <net/if.h>
 #include <netinet/in.h>
 #include <signal.h>
index fbccdcb..2c9082c 100644 (file)
@@ -19,6 +19,7 @@
 #include <errno.h>
 #include <getopt.h>
 #include <inttypes.h>
+#include <sys/socket.h>
 #include <net/if.h>
 #include <netinet/in.h>
 #include <signal.h>
index 2cff64b..6c20191 100644 (file)
@@ -1,4 +1,4 @@
-sbin_PROGRAMS += vswitchd/ovs-vswitchd vswitchd/ovs-brcompatd
+sbin_PROGRAMS += vswitchd/ovs-vswitchd
 man_MANS += \
        vswitchd/ovs-vswitchd.8 \
        vswitchd/ovs-brcompatd.8
@@ -21,17 +21,19 @@ vswitchd_ovs_vswitchd_LDADD = \
        lib/libsflow.a \
        lib/libopenvswitch.a \
        $(SSL_LIBS)
+EXTRA_DIST += \
+       vswitchd/ovs-vswitchd.8.in \
+       vswitchd/INTERNALS
 
+if HAVE_NETLINK
+sbin_PROGRAMS += vswitchd/ovs-brcompatd
 vswitchd_ovs_brcompatd_SOURCES = \
        vswitchd/ovs-brcompatd.c \
        vswitchd/vswitch-idl.c \
        vswitchd/vswitch-idl.h
-
 vswitchd_ovs_brcompatd_LDADD = lib/libopenvswitch.a $(SSL_LIBS)
-
-EXTRA_DIST += \
-       vswitchd/ovs-vswitchd.8.in \
-       vswitchd/ovs-brcompatd.8.in
+endif
+EXTRA_DIST += vswitchd/ovs-brcompatd.8.in
 
 # vswitch schema and IDL
 OVSIDL_BUILT += \
index 373e41c..c6e6d46 100644 (file)
@@ -20,6 +20,7 @@
 #include <arpa/inet.h>
 #include <ctype.h>
 #include <inttypes.h>
+#include <sys/socket.h>
 #include <net/if.h>
 #include <openflow/openflow.h>
 #include <signal.h>
@@ -1988,11 +1989,11 @@ bond_wait(struct bridge *br)
         for (j = 0; j < port->n_ifaces; j++) {
             struct iface *iface = port->ifaces[j];
             if (iface->delay_expires != LLONG_MAX) {
-                poll_timer_wait(iface->delay_expires - time_msec());
+                poll_timer_wait_until(iface->delay_expires);
             }
         }
         if (port->bond_fake_iface) {
-            poll_timer_wait(port->bond_next_fake_iface_update - time_msec());
+            poll_timer_wait_until(port->bond_next_fake_iface_update);
         }
     }
 }
@@ -2271,12 +2272,17 @@ update_learning_table(struct bridge *br, const flow_t *flow, int vlan,
     }
 }
 
+/* A VM broadcasts a gratuitous ARP to indicate that it has resumed after
+ * migration.  Older Citrix-patched Linux DomU used gratuitous ARP replies to
+ * indicate this; newer upstream kernels use gratuitous ARP requests. */
 static bool
-is_bcast_arp_reply(const flow_t *flow)
+is_gratuitous_arp(const flow_t *flow)
 {
     return (flow->dl_type == htons(ETH_TYPE_ARP)
-            && flow->nw_proto == ARP_OP_REPLY
-            && eth_addr_is_broadcast(flow->dl_dst));
+            && eth_addr_is_broadcast(flow->dl_dst)
+            && (flow->nw_proto == ARP_OP_REPLY
+                || (flow->nw_proto == ARP_OP_REQUEST
+                    && flow->nw_src == flow->nw_dst)));
 }
 
 /* Determines whether packets in 'flow' within 'br' should be forwarded or
@@ -2368,11 +2374,11 @@ is_admissible(struct bridge *br, const flow_t *flow, bool have_packet,
 
         /* Drop all packets for which we have learned a different input
          * port, because we probably sent the packet on one slave and got
-         * it back on the other.  Broadcast ARP replies are an exception
+         * it back on the other.  Gratuitous ARP packets are an exception
          * to this rule: the host has moved to another switch. */
         src_idx = mac_learning_lookup(br->ml, flow->dl_src, vlan);
         if (src_idx != -1 && src_idx != in_port->port_idx &&
-            !is_bcast_arp_reply(flow)) {
+            !is_gratuitous_arp(flow)) {
                 return false;
         }
     }
index 24c1c5d..0a7369e 100644 (file)
@@ -92,6 +92,8 @@ and \fB/proc/net/bonding\fR that some legacy software expects to
 exist.  This option should only be used if such legacy software is
 actually in use.  It requires the \fBbrcompat_mod.ko\fR kernel module
 to be loaded.
+.IP
+On non-Linux hosts, this option is accepted but has no effect.
 .
 .so lib/daemon.man
 .SS "Public Key Infrastructure Options"
index 68ae1ac..3b5c0ca 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2009 Nicira Networks
+/* Copyright (c) 2009, 2010 Nicira Networks
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -15,6 +15,8 @@
 
 #include <config.h>
 #include "proc-net-compat.h"
+
+#ifdef HAVE_NETLINK
 #include <assert.h>
 #include <dirent.h>
 #include <errno.h>
@@ -346,3 +348,25 @@ update_vlan_config(void)
     set_proc_file("net/vlan", "config", ds_cstr(&ds));
     ds_destroy(&ds);
 }
+#else  /* !HAVE_NETLINK */
+#include "compiler.h"
+
+int
+proc_net_compat_init(void)
+{
+    return 0;
+}
+
+void
+proc_net_compat_update_bond(const char *name OVS_UNUSED,
+                            const struct compat_bond *bond OVS_UNUSED)
+{
+}
+
+void
+proc_net_compat_update_vlan(const char *tagged_dev OVS_UNUSED,
+                            const char *trunk_dev OVS_UNUSED,
+                            int vid OVS_UNUSED)
+{
+}
+#endif  /* !HAVE_NETLINK */
index a69ca8a..1598b01 100644 (file)
@@ -240,7 +240,7 @@ network_uuid_refresh_wait(void)
             poll_timer_wait(1000);
         }
         if (next_refresh != LLONG_MAX) {
-            poll_timer_wait(next_refresh - time_msec());
+            poll_timer_wait_until(next_refresh);
         }
     }
 }