libgd: moved to github
libgd: moved to github

Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>

git-svn-id: svn://svn.openwrt.org/openwrt/packages@41468 3c298f89-4303-0410-b956-a3cf2f4a3e73

file:a/devel/patch/Makefile (deleted)
--- a/devel/patch/Makefile
+++ /dev/null
@@ -1,44 +1,1 @@
-#
-# Copyright (C) 2008-2009 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
 
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=patch
-PKG_VERSION:=2.5.9
-PKG_RELEASE:=1
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=@GNU/patch
-PKG_MD5SUM:=dacfb618082f8d3a2194601193cf8716
-
-include $(INCLUDE_DIR)/package.mk
-
-define Package/patch
-  SECTION:=devel
-  CATEGORY:=Development
-  TITLE:=patch
-  URL:=http://www.gnu.org/
-endef
-
-define Package/patch/description
-  The Patch package contains a program for modifying or creating files
-  by applying a "patch" file typically created by the diff program.
-endef
-
-define Build/Compile
-	$(MAKE) -C $(PKG_BUILD_DIR) \
-		exec_prefix="$(PKG_INSTALL_DIR)" \
-		all install
-endef
-
-define Package/patch/install
-	$(INSTALL_DIR) $(1)/usr/bin
-	$(CP) $(PKG_INSTALL_DIR)/bin/patch $(1)/usr/bin/
-endef
-
-$(eval $(call BuildPackage,patch))
-

--- a/devel/patch/patches/100-install.patch
+++ /dev/null
@@ -1,19 +1,1 @@
-diff -urN patch-2.5.4.orig/Makefile.in patch-2.5.4/Makefile.in
---- patch-2.5.4.orig/Makefile.in	2008-06-11 10:08:08.000000000 +0200
-+++ patch-2.5.4/Makefile.in	2008-06-11 10:08:26.000000000 +0200
-@@ -42,12 +42,12 @@
- VERSION = @VERSION@
- 
- prefix = @prefix@
--exec_prefix = @exec_prefix@
-+exec_prefix += @exec_prefix@
- 
- bindir = $(exec_prefix)/bin
- 
- # Where to put the manual pages.
--mandir = @mandir@
-+mandir = $(exec_prefix)/@mandir@
- man1dir = $(mandir)/man1
- # Extension (including `.') for the manual page filenames.
- man1ext = .1
 

file:a/ipv6/aiccu/Makefile (deleted)
--- a/ipv6/aiccu/Makefile
+++ /dev/null
@@ -1,52 +1,1 @@
-#
-# Copyright (C) 2006-2012 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
 
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=aiccu
-PKG_VERSION:=20070115
-PKG_RELEASE:=10
-
-PKG_SOURCE:=$(PKG_NAME)_$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=http://www.sixxs.net/archive/sixxs/aiccu/unix
-PKG_MD5SUM:=c9bcc83644ed788e22a7c3f3d4021350
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
-
-include $(INCLUDE_DIR)/package.mk
-
-define Package/aiccu
-  SECTION:=net
-  CATEGORY:=Network
-  DEPENDS:=+libpthread +ip +kmod-sit +kmod-tun
-  TITLE:=SixXS Automatic IPv6 Connectivity Client Utility
-  URL:=http://www.sixxs.net/tools/aiccu/
-endef
-
-define Build/Configure
-	$(SED) "s,strip,/bin/true," $(PKG_BUILD_DIR)/unix-console/Makefile
-endef
-
-define Build/Compile
-	$(MAKE) -C $(PKG_BUILD_DIR) \
-		CC="$(TARGET_CC)" OS_NAME="Linux" OS_VERSION="$(LINUX_VERSION)" \
-		EXTRA_CFLAGS="$(TARGET_CFLAGS)" \
-		EXTRA_LDFLAGS="$(TARGET_LDFLAGS) -pthread" \
-		DEBUG=0
-endef
-
-define Package/aiccu/conffiles
-/etc/config/aiccu
-endef
-
-define Package/aiccu/install
-	$(INSTALL_DIR) $(1)/usr/sbin
-	$(INSTALL_BIN) $(PKG_BUILD_DIR)/unix-console/$(PKG_NAME) $(1)/usr/sbin/
-endef
-
-$(eval $(call BuildPackage,aiccu))
-

--- a/ipv6/aiccu/patches/100-cross_compile.patch
+++ /dev/null
@@ -1,102 +1,1 @@
---- aiccu/unix-console/Makefile.orig	2007-09-02 23:19:39.000000000 +0200
-+++ aiccu/unix-console/Makefile	2007-09-02 23:20:11.000000000 +0200
-@@ -25,7 +25,8 @@
- # CWARNS += -Wpacked
- 
- #CFLAGS	+= $(CWARNS) -D_GNU_SOURCE -D_DEBUG -g3 -O0
--CFLAGS	+= $(CWARNS) -D_GNU_SOURCE
-+CFLAGS	+= $(CWARNS) $(EXTRA_CFLAGS) -D_GNU_SOURCE
-+LDFLAGS += $(EXTRA_LDFLAGS)
- CC      = @gcc
- RM      = rm
- 
-@@ -40,25 +41,25 @@
- # GnuTLS Support ?
- # Used by TIC to secure that communication
- # Currently defaultly builds only on Linux, but other platforms might easily also support it
--ifeq ($(shell uname | grep -c "Linux"),1)
-+ifneq ($(HAVE_GNUTLS),)
- CFLAGS	+= -D AICCU_GNUTLS
- LDFLAGS += -lgnutls
- endif
- 
- # Linux
--ifeq ($(shell uname | grep -c "Linux"),1)
-+ifeq ($(OS_NAME),Linux)
- CFLAGS  += -D_LINUX -D HAS_IFHEAD -D AICCU_TYPE="\"linux\""
- SRCS	+= ../common/aiccu_linux.c
- OBJS	+= ../common/aiccu_linux.o
--LDFLAGS	+= -lpthread -lresolv
-+LDFLAGS	+= -pthread -lresolv
- endif
- 
- # FreeBSD
--ifeq ($(shell uname | grep -c "FreeBSD"),1)
-+ifeq ($(OS_NAME),FreeBSD)
- CFLAGS	+= -D_FREEBSD
- 
- # FreeBSD 4.x
--ifeq ($(shell uname -r | cut -c 1),4)
-+ifeq ($(shell echo $(OS_VERSION) | cut -c 1),4)
- CFLAGS	+= -D AICCU_TYPE="\"freebsd4\""
- SRCS	+= ../common/aiccu_freebsd4.c
- OBJS	+= ../common/aiccu_freebsd4.o
-@@ -71,7 +72,7 @@
- endif
- 
- # DragonFlyBSD
--ifeq ($(shell uname | grep -c "DragonFly"),1)
-+ifeq ($(OS_NAME),DragonFly)
- CFLAGS	+= -D_DFBSD -D NEED_IFHEAD -D AICCU_TYPE="\"dragonfly\""
- SRCS	+= ../common/aiccu_freebsd4.c
- OBJS	+= ../common/aiccu_freebsd4.o
-@@ -79,7 +80,7 @@
- endif
- 
- # NetBSD
--ifeq ($(shell uname | grep -c "NetBSD"),1)
-+ifeq ($(OS_NAME),NetBSD)
- CFLAGS	+= -D_NETBSD -D AICCU_TYPE="\"kame\""
- 
- # Check if net/if_tun.h has TUNSIFHEAD and enable support for it
-@@ -97,10 +98,10 @@
- endif
- 
- # OpenBSD
--ifeq ($(shell uname | grep -c "OpenBSD"),1)
-+ifeq ($(OS_NAME),OpenBSD)
- CFLAGS	+= -D_OPENBSD -D HAS_IFHEAD
- # 2.7-2.9
--ifeq ($(shell uname -r | cut -c 1),2)
-+ifeq ($(shell echo $(OS_VERSION) | cut -c 1),2)
- CFLAGS	+= -D AICCU_TYPE="\"openbsd2\""
- SRCS	+= ../common/aiccu_openbsd2.c
- OBJS	+= ../common/aiccu_openbsd2.o
-@@ -114,7 +115,7 @@
- endif
- 
- # Darwin
--ifeq ($(shell uname | grep -c "Darwin"),1)
-+ifeq ($(OS_NAME),Darwin)
- CFLAGS	+= -D_DARWIN -D NEED_IFHEAD -D AICCU_TYPE="\"darwin\""
- SRCS	+= ../common/aiccu_darwin.c
- OBJS	+= ../common/aiccu_darwin.o
-@@ -122,7 +123,7 @@
- endif
- 
- # SunOS / Solaris
--ifeq ($(shell uname | grep -c "SunOS"),1)
-+ifeq ($(OS_NAME),SunOS)
- CFLAGS	+= -D_SUNOS -D AICCU_TYPE="\"sunos\""
- SRCS	+= ../common/aiccu_sunos.c
- OBJS	+= ../common/aiccu_sunos.o
-@@ -130,7 +131,7 @@
- endif
- 
- # AIX
--ifeq ($(shell uname | grep -c "AIX"),1)
-+ifeq ($(OS_NAME),AIX)
- CC	= @/usr/vac/bin/xlc_r
- CFLAGS	= -qthreaded -q64 -qlanglvl=stdc99 -bmaxdata:0xD0000000 -D_64BIT -g -qdbxextra -qfullpath -qheapdebug -qformat=all -qcheck=all
- CFLAGS	+= -D AICCU_CONSOLE
 

--- a/ipv6/aiccu/patches/200-add_dn_skipname.patch
+++ /dev/null
@@ -1,71 +1,1 @@
-diff -Nru aiccu.old/common/dn_skipname.c aiccu/common/dn_skipname.c
---- aiccu.old/common/dn_skipname.c	1970-01-01 02:00:00.000000000 +0200
-+++ aiccu/common/dn_skipname.c	2006-11-04 00:50:23.000000000 +0200
-@@ -0,0 +1,51 @@
-+#include <errno.h>
-+#include <resolv.h>
-+
-+/* Ripped from glibc 2.4 sources. */
-+
-+/*
-+ * ns_name_skip(ptrptr, eom)
-+ *      Advance *ptrptr to skip over the compressed name it points at.
-+ * return:
-+ *      0 on success, -1 (with errno set) on failure.
-+ */
-+int ns_name_skip(const u_char **ptrptr, const u_char *eom)
-+{
-+	const u_char *cp;
-+	u_int n;
-+
-+	cp = *ptrptr;
-+	while (cp < eom && (n = *cp++) != 0)
-+	{
-+		/* Check for indirection. */
-+		switch (n & NS_CMPRSFLGS) {
-+		case 0:                 /* normal case, n == len */
-+			cp += n;
-+			continue;
-+		case NS_CMPRSFLGS:      /* indirection */
-+			cp++;
-+			break;
-+		default:                /* illegal type */
-+			errno = EMSGSIZE;
-+			return (-1);
-+		}
-+		break;
-+	}
-+	if (cp > eom)
-+	{
-+		errno = EMSGSIZE;
-+		return (-1);
-+	}
-+	*ptrptr = cp;
-+	return (0);
-+}
-+
-+int dn_skipname(const u_char *ptr, const u_char *eom)
-+{
-+	const u_char *saveptr = ptr;
-+
-+	if(ns_name_skip(&ptr, eom) == -1)
-+		return (-1);
-+	return (ptr - saveptr);
-+}
-+
-diff -Nru aiccu.old/unix-console/Makefile aiccu/unix-console/Makefile
---- aiccu.old/unix-console/Makefile	2006-11-04 00:51:20.000000000 +0200
-+++ aiccu/unix-console/Makefile	2006-11-04 00:48:51.000000000 +0200
-@@ -10,9 +10,9 @@
- #  $Date: 2006-07-25 09:20:48 $
- # **********************************************************/
- 
--SRCS	= main.c ../common/tun.c ../common/aiccu.c ../common/hash_md5.c ../common/hash_sha1.c ../common/common.c ../common/heartbeat.c ../common/tic.c ../common/ayiya.c ../common/aiccu_test.c ../common/resolver.c
-+SRCS	= main.c ../common/tun.c ../common/aiccu.c ../common/hash_md5.c ../common/hash_sha1.c ../common/common.c ../common/heartbeat.c ../common/tic.c ../common/ayiya.c ../common/aiccu_test.c ../common/resolver.c ../common/dn_skipname.c
- INCS	= ../common/tun.h ../common/aiccu.h ../common/hash_md5.h ../common/hash_sha1.h ../common/common.h ../common/heartbeat.h ../common/tic.h ../common/ayiya.h ../common/resolver.h
--OBJS	= main.o ../common/tun.o ../common/aiccu.o ../common/hash_md5.o ../common/hash_sha1.o ../common/common.o ../common/heartbeat.o ../common/tic.o ../common/ayiya.o ../common/aiccu_test.o ../common/resolver.o
-+OBJS	= main.o ../common/tun.o ../common/aiccu.o ../common/hash_md5.o ../common/hash_sha1.o ../common/common.o ../common/heartbeat.o ../common/tic.o ../common/ayiya.o ../common/aiccu_test.o ../common/resolver.o ../common/dn_skipname.o
- 
- # New features not fully implemented and thus disabled for now
- #CFLAGS	+= -D NEWSTUFF_TSP -D NEWSTUFF_TEEPEE
 

--- a/ipv6/aiccu/patches/300-resolver-uclibc.patch
+++ /dev/null
@@ -1,30 +1,1 @@
---- aiccu/common/resolver.c.orig	2007-09-02 23:10:58.000000000 +0200
-+++ aiccu/common/resolver.c	2007-09-02 23:11:01.000000000 +0200
-@@ -26,7 +26,7 @@
- 
- int getrrs(const char *label, int rrtype, void gotrec(unsigned int num, int type, const char *record))
- {
--#ifdef _LINUX
-+#if defined(_LINUX) && !defined(__UCLIBC__)
- 	struct __res_state	res;
- #endif
- 	unsigned char		answer[8192];
-@@ -38,7 +38,7 @@
- 	uint16_t		type = 0, class = 0;
- 	uint32_t		ttl = 0;
- 
--#ifdef _LINUX
-+#if defined(_LINUX) && !defined(__UCLIBC__)
- 	memset(&res, 0, sizeof(res));
- 	res.options = RES_DEBUG;
- 	res_ninit(&res);
-@@ -47,7 +47,7 @@
- #endif
- 
- 	memset(answer, 0, sizeof(answer));
--#ifdef _LINUX
-+#if defined(_LINUX) && !defined(__UCLIBC__)
- 	ret = res_nquery(&res, label, C_IN, rrtype, answer, sizeof(answer));
- #else
- 	ret = res_query(label, C_IN, rrtype, answer, sizeof(answer));
 

file:a/ipv6/tayga/Makefile (deleted)
--- a/ipv6/tayga/Makefile
+++ /dev/null
@@ -1,49 +1,1 @@
-# $Id: Makefile 5624 2006-11-23 00:29:07Z nbd $
 
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=tayga
-PKG_VERSION:=0.9.2
-PKG_RELEASE:=1
-
-PKG_SOURCE:=tayga-$(PKG_VERSION).tar.bz2
-PKG_SOURCE_URL:=http://www.litech.org/tayga/
-PKG_MD5SUM:=7a7b24165ce008df772f398d86fa280e
-PKG_CAT:=bzcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/tayga-$(PKG_VERSION)
-PKG_FIXUP:=autoreconf
-
-include $(INCLUDE_DIR)/package.mk
-
-define Package/tayga
-  SECTION:=net
-  CATEGORY:=Network
-  DEPENDS:=+ip +kmod-ipv6 +kmod-tun
-  TITLE:=Out-of-kernel stateless NAT64 implementation for Linux
-  URL:=http://www.litech.org/tayga/
-endef
-
-define Package/tayga/description
-  TAYGA is an out-of-kernel stateless NAT64 implementation for
-  Linux.  It uses the TUN driver to exchange packets with the
-  kernel, which is the same driver used by OpenVPN and QEMU/KVM.
-endef
-
-# TODO: port scripts to netifd
-ifdef CONFIG_PACAKGE_netifd
-  define Package/tayga/install
-	$(INSTALL_DIR) $(1)/usr/sbin
-	$(INSTALL_BIN) $(PKG_BUILD_DIR)/tayga $(1)/usr/sbin/
-  endef
-else
-  define Package/tayga/install
-	$(INSTALL_DIR) $(1)/usr/sbin $(1)/lib/network $(1)/etc/hotplug.d/iface
-	$(INSTALL_BIN) $(PKG_BUILD_DIR)/tayga $(1)/usr/sbin/
-	$(INSTALL_DATA) ./files/tayga.sh $(1)/lib/network/tayga.sh
-	$(INSTALL_DATA) ./files/tayga.hotplug $(1)/etc/hotplug.d/iface/95-tayga
-  endef
-endif
-
-$(eval $(call BuildPackage,tayga))
-

--- a/ipv6/tayga/files/tayga.hotplug
+++ /dev/null
@@ -1,38 +1,1 @@
-#!/bin/sh
 
-if [ "$ACTION" = ifup ]; then
-	. /lib/functions.sh
-
-	include /lib/network
-	scan_interfaces
-
-	update_tunnel() {
-		local cfg="$1"
-
-		local proto
-		config_get proto "$cfg" proto
-		[ "$proto" = tayga ] || return 0
-
-		local wandev4
-		config_get wandev4 "$cfg" wan4_device "$(find_tayga_wanif4)"
-
-		local wandev6
-		config_get wandev6 "$cfg" wan6_device "$(find_tayga_wanif6)"
-
-		[ "$wandev4" = "$DEVICE" ] || [ "$wandev6" = "$DEVICE" ] || return 0
-
-		local wanip4=$(find_tayga_wanip4 "$wandev4")
-		local wanip6=$(find_tayga_wanip6 "$wandev6")
-
-		[ -n "$wanip4" ] && [ -n "$wanip6" ] && {
-			uci_set_state network "$cfg" ipv4addr "$wanip4"
-			uci_set_state network "$cfg" ipv6addr "$wanip6"
-
-			logger -t tayga-update "Re-establishing tayga NAT64 due to change on $INTERFACE ($DEVICE)"
-			ifup "$cfg" &
-		}
-	}
-
-	config_foreach update_tunnel interface
-fi
-

--- a/ipv6/tayga/files/tayga.sh
+++ /dev/null
@@ -1,153 +1,1 @@
-# tayga.sh - NAT64 backend
 
-find_tayga_wanif4() {
-	local if=$(ip -4 r l e 0.0.0.0/0); if="${if#default* dev }"; if="${if%% *}"
-	[ -n "$if" ] && grep -qs "^ *$if:" /proc/net/dev && echo "$if"
-}
-
-find_tayga_wanip4() {
-	local ip=$(ip -4 a s dev "$1"); ip="${ip#*inet }"
-	echo "${ip%%[^0-9.]*}"
-}
-
-find_tayga_wanif6() {
-	local if=$(ip -6 r l e ::/0); if="${if#default* dev }"; if="${if%% *}"
-	[ -n "$if" ] && grep -qs "^ *$if:" /proc/net/dev && echo "$if"
-}
-
-find_tayga_wanip6() {
-	local ip=$(ip -6 a s dev "$1"); ip="${ip#*inet6 }"
-	echo "${ip%%[^0-9A-Fa-f:]*}"
-}
-
-# Hook into scan_interfaces() to synthesize a .device option
-# This is needed for /sbin/ifup to properly dispatch control
-# to setup_interface_tayga() even if no .ifname is set in
-# the configuration.
-scan_tayga() {
-	config_set "$1" device "tayga-$1"
-}
-
-coldplug_interface_tayga() {
-	setup_interface_tayga "tayga-$1" "$1"
-}
-
-tayga_add_static_mappings() {
-	local tmpconf="$1"
-
-	(
-		. /lib/functions.sh
-		config_load firewall
-
-		tayga_map_rule_add() {
-			local cfg="$1"
-			local tmpconf="$2"
-			local ipv4_addr ipv6_addr
-			config_get ipv4_addr "$cfg" ipv4_addr ""
-			config_get ipv6_addr "$cfg" ipv6_addr ""
-			[ -n "$ipv4_addr" ] && [ -n "$ipv6_addr" ] &&
-				echo "map $ipv4_addr $ipv6_addr" >>$tmpconf
-		}
-
-		config_foreach tayga_map_rule_add nat64 "$tmpconf"
-	)
-}
-
-setup_interface_tayga() {
-	local iface="$1"
-	local cfg="$2"
-	local link="tayga-$cfg"
-
-	local ipv4_addr ipv6_addr prefix dynamic_pool
-
-	config_get ipv4_addr "$cfg" ipv4_addr
-	config_get ipv6_addr "$cfg" ipv6_addr
-	config_get prefix "$cfg" prefix
-	config_get dynamic_pool "$cfg" dynamic_pool
-
-	local args
-
-	include /lib/network
-	scan_interfaces
-
-	local wanip4=$(uci_get network "$cfg" ipv4addr)
-	local wanip6=$(uci_get network "$cfg" ipv6addr)
-
-	local wanif4=$(find_tayga_wanif4)
-	local wanif6=$(find_tayga_wanif6)
-
-	[ -z "$wanip4" ] && {
-		[ -n "$wanif4" ] && {
-			wanip4=$(find_tayga_wanip4 "$wanif4")
-			uci_set_state network "$cfg" wan4_device "$wanif4"
-		}
-	}
-
-	[ -z "$wanip6" ] && {
-		[ -n "$wanif6" ] && {
-			wanip6=$(find_tayga_wanip6 "$wanif6")
-			uci_set_state network "$cfg" wan6_device "$wanif6"
-		}
-	}
-
-	[ -n "$wanip4" ] && [ -n "$wanip6" ] || {
-		echo "Cannot determine local IPv4 and IPv6 addressed for tayga NAT64 $cfg - skipping"
-		return 1
-	}
-
-	local tmpconf="/var/etc/tayga-$cfg.conf"
-	args="-c $tmpconf"
-	mkdir -p /var/etc
-	mkdir -p /var/run/tayga/$cfg
-
-	echo "tun-device $link" >$tmpconf
-	echo "ipv4-addr $ipv4_addr" >>$tmpconf
-	[ -n "$ipv6_addr" ] &&
-		echo "ipv6-addr $ipv6_addr" >>$tmpconf
-	[ -n "$prefix" ] &&
-		echo "prefix $prefix" >>$tmpconf
-
-	tayga_add_static_mappings "$tmpconf"
-
-	[ -n "$dynamic_pool" ] &&
-		echo "dynamic-pool $dynamic_pool" >>$tmpconf
-	echo "data-dir /var/run/tayga/$cfg" >>$tmpconf
-
-	# creating the tunnel below will trigger a net subsystem event
-	# prevent it from touching or iface by disabling .auto here
-	uci_set_state network "$cfg" ifname $link
-	uci_set_state network "$cfg" auto 0
-
-	# here we create TUN device and check configuration
-	tayga $args --mktun || return 1
-
-	ip link set "$link" up
-
-	ip addr add "$wanip4" dev "$link"
-	ip addr add "$wanip6" dev "$link"
-
-	[ -n "$dynamic_pool" ] &&
-		ip -4 route add "$dynamic_pool" dev "$link"
-	[ -n "$prefix" ] &&
-		ip -6 route add "$prefix" dev "$link"
-
-	start-stop-daemon -S -x tayga -- $args -p /var/run/$link.pid
-
-	env -i ACTION="ifup" DEVICE="$link" INTERFACE="$cfg" PROTO="tayga" \
-		/sbin/hotplug-call iface
-}
-
-stop_interface_tayga() {
-	local cfg="$1"
-	local link="tayga-$cfg"
-
-	env -i ACTION="ifdown" DEVICE="$link" INTERFACE="$cfg" PROTO="tayga" \
-		/sbin/hotplug-call iface
-
-	service_kill tayga "/var/run/$link.pid"
-
-	ip link set "$link" down
-	ip addr flush dev "$link"
-	ip route flush dev "$link"
-}
-

--- a/ipv6/tayga/patches/001-configure_unset_CFLAGS.patch
+++ /dev/null
@@ -1,12 +1,1 @@
---- a/configure.ac
-+++ b/configure.ac
-@@ -5,8 +5,6 @@ AC_CONFIG_HEADERS(config.h)
- 
- AC_PROG_CC
- 
--CFLAGS='-g -Wall'
--
- tayga_conf_path=${sysconfdir}/tayga.conf
- 
- AC_SUBST(tayga_conf_path)
 

file:a/libs/alsa-lib/Makefile (deleted)
--- a/libs/alsa-lib/Makefile
+++ /dev/null
@@ -1,92 +1,1 @@
-#
-# Copyright (C) 2006-2010 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
 
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=alsa-lib
-PKG_VERSION:=1.0.27.2
-PKG_RELEASE:=1
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_SOURCE_URL:=ftp://ftp.alsa-project.org/pub/lib/ \
-		http://alsa.cybermirror.org/lib/
-PKG_MD5SUM:=69129a7c37697f81ac092335e9fa452b
-
-PKG_LICENSE:=LGPLv2.1 GPLv2
-PKG_LICENSE_FILE:=COPYING aserver/COPYING
-
-PKG_FIXUP:=autoreconf
-PKG_INSTALL:=1
-PKG_USE_MIPS16:=0
-
-include $(INCLUDE_DIR)/package.mk
-
-define Package/alsa-lib
-  SECTION:=libs
-  CATEGORY:=Libraries
-  TITLE:=ALSA (Advanced Linux Sound Architecture) library
-  URL:=http://www.alsa-project.org/
-  DEPENDS:=@AUDIO_SUPPORT +kmod-sound-core +libpthread +librt
-endef
-
-define Package/alsa-lib/description
- This is the library package for alsa, needed by some userspace programs.
- You must have enabled the ALSA support in the kernel.
-endef
-
-TARGET_CFLAGS += $(FPIC)
-
-define Build/Configure
-	$(call Build/Configure/Default, \
-		--disable-python \
-		--disable-debug \
-		--without-debug \
-		$(SOFT_FLOAT_CONFIG_OPTION) \
-		--with-versioned=no \
-	)
-endef
-
-define Build/InstallDev
-	$(INSTALL_DIR) $(1)/usr/include/
-	$(CP) \
-		$(PKG_INSTALL_DIR)/usr/include/alsa \
-		$(1)/usr/include/
-
-	$(INSTALL_DIR) $(1)/usr/lib/pkgconfig
-	$(CP) \
-		$(PKG_INSTALL_DIR)/usr/lib/libasound.{la,so*} \
-		$(1)/usr/lib/
-	$(INSTALL_DATA) \
-		$(PKG_INSTALL_DIR)/usr/lib/pkgconfig/alsa.pc \
-		$(1)/usr/lib/pkgconfig/
-
-	$(INSTALL_DIR) $(1)/usr/share/aclocal
-	$(INSTALL_DATA) \
-		$(PKG_INSTALL_DIR)/usr/share/aclocal/alsa.m4 \
-		$(1)/usr/share/aclocal/
-endef
-
-define Package/alsa-lib/install
-	$(INSTALL_DIR) $(1)/usr/lib
-	$(CP) \
-		$(PKG_INSTALL_DIR)/usr/lib/libasound.so.* \
-		$(1)/usr/lib/
-
-	$(INSTALL_DIR) $(1)/usr/share/alsa/{cards,pcm}
-	$(INSTALL_DATA) \
-		$(PKG_INSTALL_DIR)/usr/share/alsa/alsa.conf \
-		$(1)/usr/share/alsa/
-	$(INSTALL_DATA) \
-		$(PKG_INSTALL_DIR)/usr/share/alsa/pcm/* \
-		$(1)/usr/share/alsa/pcm/
-	$(CP) \
-		$(PKG_INSTALL_DIR)/usr/share/alsa/cards/* \
-		$(1)/usr/share/alsa/cards/
-endef
-
-$(eval $(call BuildPackage,alsa-lib))
-

--- a/libs/alsa-lib/patches/001-link_fix.patch
+++ /dev/null
@@ -1,27 +1,1 @@
-diff --git a/src/Makefile.in b/src/Makefile.in
-index e21fc0d..c8f3ea0 100644
---- a/src/Makefile.in
-+++ b/src/Makefile.in
-@@ -419,7 +419,7 @@ clean-libLTLIBRARIES:
- 	  rm -f $${locs}; \
- 	}
- libasound.la: $(libasound_la_OBJECTS) $(libasound_la_DEPENDENCIES) $(EXTRA_libasound_la_DEPENDENCIES) 
--	$(AM_V_CCLD)$(libasound_la_LINK) -rpath $(libdir) $(libasound_la_OBJECTS) $(libasound_la_LIBADD) $(LIBS)
-+	$(AM_V_CCLD)$(libasound_la_LINK) -rpath $(DESTDIR)$(libdir) $(libasound_la_OBJECTS) $(libasound_la_LIBADD) $(LIBS)
- 
- mostlyclean-compile:
- 	-rm -f *.$(OBJEXT)
-diff --git a/src/pcm/scopes/Makefile.in b/src/pcm/scopes/Makefile.in
-index 469dbb5..391f3d4 100644
---- a/src/pcm/scopes/Makefile.in
-+++ b/src/pcm/scopes/Makefile.in
-@@ -348,7 +348,7 @@ clean-pkglibLTLIBRARIES:
- 	  rm -f $${locs}; \
- 	}
- scope-level.la: $(scope_level_la_OBJECTS) $(scope_level_la_DEPENDENCIES) $(EXTRA_scope_level_la_DEPENDENCIES) 
--	$(AM_V_CCLD)$(scope_level_la_LINK) -rpath $(pkglibdir) $(scope_level_la_OBJECTS) $(scope_level_la_LIBADD) $(LIBS)
-+	$(AM_V_CCLD)$(scope_level_la_LINK) -rpath $(DESTDIR)$(pkglibdir) $(scope_level_la_OBJECTS) $(scope_level_la_LIBADD) $(LIBS)
- 
- mostlyclean-compile:
- 	-rm -f *.$(OBJEXT)
 

--- a/libs/alsa-lib/patches/002-ccache.patch
+++ /dev/null
@@ -1,28 +1,1 @@
-diff --git a/configure.in b/configure.in
-index 00fff2b..af39300 100644
---- a/configure.in
-+++ b/configure.in
-@@ -24,22 +24,6 @@ m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
- 
- AC_PREFIX_DEFAULT(/usr)
- 
--dnl Checks for programs.
--
--dnl try to gues cross-compiler if not set
--if test "x$host" != "x$build" -a -z "`echo $CC | grep -e '-gcc'`";
--then
--  AC_MSG_CHECKING(for cross-compiler)
--
--  which ${program_prefix}gcc >/dev/null 2>&1 && CC=${program_prefix}gcc
--  which ${host_cpu}-${host_os}-gcc >/dev/null 2>&1 \
--  && CC=${host_cpu}-${host_os}-gcc
--  which ${host_cpu}-${host_vendor}-${host_os}-gcc >/dev/null 2>&1 \
--  && CC=${host_cpu}-${host_vendor}-${host_os}-gcc
--
--  AC_MSG_RESULT($CC)
--fi
--	    
- CFLAGS="$CFLAGS -D_GNU_SOURCE"
- 
- 
 

file:a/libs/gd/Makefile (deleted)
--- a/libs/gd/Makefile
+++ /dev/null
@@ -1,78 +1,1 @@
-#
-# Copyright (C) 2006-2011 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
 
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=gd
-PKG_VERSION:=2.0.35
-PKG_RELEASE:=1
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_SOURCE_URL:=http://www.libgd.org/releases
-PKG_MD5SUM:=6c6c3dbb7bf079e0bb5fbbfd3bb8a71c
-
-PKG_FIXUP:=autoreconf
-
-PKG_INSTALL:=1
-PKG_BUILD_PARALLEL:=1
-
-include $(INCLUDE_DIR)/package.mk
-
-define Package/libgd
-  SECTION:=libs
-  CATEGORY:=Libraries
-  DEPENDS:=+libjpeg +libpng
-  TITLE:=The GD graphics library
-  URL:=http://www.libgd.org/
-endef
-
-define Package/libgd/description
-  GD is an open source code library for the dynamic creation of images by
-  programmers. GD creates PNG, JPEG and GIF images, among other formats.
-endef
-
-TARGET_CFLAGS += $(FPIC)
-
-CONFIGURE_ARGS += \
-	--enable-shared \
-	--enable-static \
-	--disable-rpath \
-	--without-x \
-	--without-fontconfig \
-	--without-freetype \
-	--with-jpeg=$(STAGING_DIR)/usr \
-	--with-png=$(STAGING_DIR)/usr \
-	--without-xpm \
-	--without-iconv
-
-CONFIGURE_VARS += \
-	LIBPNG12_CONFIG="$(STAGING_DIR)/host/bin/libpng12-config" \
-	ac_cv_header_iconv_h=no
-
-define Build/InstallDev
-	$(INSTALL_DIR) $(1)/usr/bin
-	$(CP) $(PKG_INSTALL_DIR)/usr/bin/gdlib-config $(1)/usr/bin/
-	$(SED) \
-		's,^\(prefix\|exec_prefix\)=.*,\1=$(STAGING_DIR)/usr,g' \
-		$(1)/usr/bin/gdlib-config
-	$(INSTALL_DIR) $(1)/usr/include
-	$(CP) $(PKG_INSTALL_DIR)/usr/include/entities.h $(1)/usr/include/
-	$(CP) $(PKG_INSTALL_DIR)/usr/include/gd{,_io,cache,fontg,fontl,fontmb,fonts,fontt,fx}.h \
-		$(1)/usr/include/
-	$(INSTALL_DIR) $(1)/usr/lib
-	$(CP) $(PKG_INSTALL_DIR)/usr/lib/libgd.{a,la,so*} $(1)/usr/lib/
-	$(INSTALL_DIR) $(2)/bin
-	$(LN) ../../usr/bin/gdlib-config $(2)/bin/
-endef
-
-define Package/libgd/install
-	$(INSTALL_DIR) $(1)/usr/lib
-	$(CP) $(PKG_INSTALL_DIR)/usr/lib/libgd.so.* $(1)/usr/lib/
-endef
-
-$(eval $(call BuildPackage,libgd))
-

--- a/libs/gd/patches/100-configure_fix.patch
+++ /dev/null
@@ -1,31 +1,1 @@
---- a/configure.ac
-+++ b/configure.ac
-@@ -61,7 +61,7 @@ fi
- AC_HEADER_STDC
- AC_CHECK_HEADERS([errno.h limits.h stddef.h stdlib.h string.h unistd.h])
- 
--AM_ICONV
-+m4_pattern_allow([AM_ICONV])
- # if test -n "$LIBICONV" ; then
- #   LIBS="$LIBS $LIBICONV"
- # fi
-@@ -353,14 +353,14 @@ if test "$withval" != no; then
-   AC_PATH_PROG([LIBPNG12_CONFIG], [libpng12-config])
-   AC_PATH_PROG([LIBPNG_CONFIG], [libpng-config])
-   if test -n "$LIBPNG12_CONFIG"; then
--    libpng_CPPFLAGS=`libpng12-config --cflags`
-+    libpng_CPPFLAGS=`$LIBPNG12_CONFIG --cflags`
-     # should be --ldopts, but it's currently broken
--    libpng_LDFLAGS=`libpng12-config --ldflags`
-+    libpng_LDFLAGS=`$LIBPNG12_CONFIG --ldflags`
-     libpng_LDFLAGS=`echo " $libpng_LDFLAGS" | sed 's/ -l[[^ ]][[^ ]]*//g'`
-   elif test -n "$LIBPNG_CONFIG"; then
--    libpng_CPPFLAGS=`libpng-config --cflags`
-+    libpng_CPPFLAGS=`$LIBPNG_CONFIG --cflags`
-     # should be --ldopts, but it's currently broken
--    libpng_LDFLAGS=`libpng-config --ldflags`
-+    libpng_LDFLAGS=`$LIBPNG_CONFIG --ldflags`
-     libpng_LDFLAGS=`echo " $libpng_LDFLAGS" | sed 's/ -l[[^ ]][[^ ]]*//g'`
-   elif test -d "$withval"; then
-     libpng_CPPFLAGS="-I$withval/include"
 

--- a/libs/gd/patches/101-gdlib-config.patch
+++ /dev/null
@@ -1,21 +1,1 @@
---- a/config/gdlib-config.in
-+++ b/config/gdlib-config.in
-@@ -71,7 +71,7 @@ while test $# -gt 0; do
- 	echo @LDFLAGS@
- 	;;
-     --libs)
--	echo @LIBS@ @LIBICONV@
-+	echo @LIBS@
- 	;;
-     --cflags|--includes)
- 	echo -I@includedir@
-@@ -84,7 +84,7 @@ while test $# -gt 0; do
- 	echo "includedir: $includedir"
- 	echo "cflags:     -I@includedir@"
- 	echo "ldflags:    @LDFLAGS@"
--	echo "libs:       @LIBS@ @LIBICONV@"
-+	echo "libs:       @LIBS@"
- 	echo "libdir:     $libdir"
- 	echo "features:   @FEATURES@"
- 	;;
 

file:a/libs/glib2/Makefile (deleted)
--- a/libs/glib2/Makefile
+++ /dev/null
@@ -1,101 +1,1 @@
-#
-# Copyright (C) 2007-2012 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
 
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=glib2
-PKG_VERSION:=2.37.7
-PKG_RELEASE:=1
-
-PKG_SOURCE:=glib-$(PKG_VERSION).tar.xz
-PKG_BUILD_DIR:=$(BUILD_DIR)/glib-$(PKG_VERSION)
-PKG_SOURCE_URL:=@GNOME/glib/2.37
-PKG_MD5SUM:=17a9493e3e2efebc8ab81ec8d4480bfb
-
-PKG_BUILD_DEPENDS:=glib2/host libpthread zlib libintl libffi
-HOST_BUILD_DEPENDS:=libintl/host libiconv/host libffi/host
-PKG_INSTALL:=1
-PKG_USE_MIPS16:=0
-
-HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/glib-$(PKG_VERSION)
-
-include $(INCLUDE_DIR)/host-build.mk
-include $(INCLUDE_DIR)/package.mk
-include $(INCLUDE_DIR)/nls.mk
-
-define Package/glib2
-  SECTION:=libs
-  CATEGORY:=Libraries
-  DEPENDS:=$(ICONV_DEPENDS) $(INTL_DEPENDS) +zlib +libpthread +libffi
-  TITLE:=glib 2.0
-  URL:=http://www.gtk.org/
-endef
-
-define Package/glib2/description
-  The GLib library of C routines
-endef
-
-define Build/Configure
-	$(call Build/Configure/Default, \
-		--enable-shared \
-		--enable-static \
-		--enable-debug=no \
-		--disable-selinux \
-        --disable-fam \
-        $(if $(ICONV_FULL),--with-libiconv=gnu) \
-		, \
-		glib_cv_stack_grows=no \
-		glib_cv_uscore=no \
-		ac_cv_path_GLIB_GENMARSHAL=$(STAGING_DIR_HOST)/bin/glib-genmarshal \
-		ac_cv_func_mmap_fixed_mapped=yes \
-		ac_cv_func_posix_getpwuid_r=yes \
-		ac_cv_func_posix_getgrgid_r=yes \
-	);
-endef
-
-define Build/InstallDev
-	$(INSTALL_DIR) $(1)/usr/include
-	$(CP) \
-		$(PKG_INSTALL_DIR)/usr/include/glib-2.0 \
-		$(1)/usr/include/
-	$(CP) \
-		$(PKG_INSTALL_DIR)/usr/lib/glib-2.0/include/*.h \
-		$(1)/usr/include/glib-2.0/
-	$(CP) \
-		$(PKG_INSTALL_DIR)/usr/include/gio-unix-2.0 \
-		$(1)/usr/include/
-
-	$(INSTALL_DIR) $(1)/usr/lib
-	$(CP) \
-		$(PKG_INSTALL_DIR)/usr/lib/glib-2.0 \
-		$(1)/usr/lib/
-
-	$(CP) \
-		$(PKG_INSTALL_DIR)/usr/lib/*.{so*,a,la} \
-		$(1)/usr/lib/
-
-	$(INSTALL_DIR) $(1)/usr/lib/pkgconfig
-	$(INSTALL_DATA) \
-		$(PKG_INSTALL_DIR)/usr/lib/pkgconfig/*.pc \
-		$(1)/usr/lib/pkgconfig
-
-	$(INSTALL_DIR) $(2)/share/aclocal/
-	$(INSTALL_DATA) \
-		$(PKG_INSTALL_DIR)/usr/share/aclocal/*.m4  \
-		$(2)/share/aclocal/
-endef
-
-define Package/glib2/install
-	$(INSTALL_DIR) $(1)/usr/lib
-	$(CP) \
-		$(PKG_INSTALL_DIR)/usr/lib/*.so* \
-		$(1)/usr/lib/
-endef
-
-$(eval $(call HostBuild))
-$(eval $(call BuildPackage,glib2))
-

file:a/libs/libevent/Makefile (deleted)
--- a/libs/libevent/Makefile
+++ /dev/null
@@ -1,67 +1,1 @@
-#
-# Copyright (C) 2006-2011 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
 
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=libevent
-PKG_VERSION:=1.4.14b
-PKG_RELEASE:=2
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)-stable
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-stable.tar.gz
-PKG_SOURCE_URL:=http://www.monkey.org/~provos/
-PKG_MD5SUM:=a00e037e4d3f9e4fe9893e8a2d27918c
-
-PKG_FIXUP:=autoreconf
-PKG_INSTALL:=1
-PKG_BUILD_PARALLEL:=1
-
-include $(INCLUDE_DIR)/package.mk
-
-define Package/libevent
-  SECTION:=libs
-  CATEGORY:=Libraries
-  TITLE:=Event notification library
-  DEPENDS:=+librt
-  URL:=http://www.monkey.org/~provos/libevent/
-endef
-
-define Package/libevent/description
-	The libevent API provides a mechanism to execute a callback function
-	when a specific event occurs on a file descriptor or after a timeout
-	has been reached. Furthermore, libevent also support callbacks due
-	to signals or regular timeouts.
-
-	libevent is meant to replace the event loop found in event driven
-	network servers. An application just needs to call event_dispatch()
-	and then add or remove events dynamically without having to change
-	the event loop.
-endef
-
-TARGET_CFLAGS += $(FPIC)
-
-CONFIGURE_ARGS += \
-	--enable-shared \
-	--enable-static \
-
-MAKE_FLAGS += \
-	CFLAGS="$(TARGET_CFLAGS)" \
-
-define Build/InstallDev
-	$(INSTALL_DIR) $(1)/usr/include/libevent
-	$(CP) $(PKG_INSTALL_DIR)/usr/include/* $(1)/usr/include/libevent/
-	$(INSTALL_DIR) $(1)/usr/lib/libevent
-	$(CP) $(PKG_INSTALL_DIR)/usr/lib/*.{a,so} $(1)/usr/lib/libevent/
-endef
-
-define Package/libevent/install
-	$(INSTALL_DIR) $(1)/usr/lib
-	$(CP) $(PKG_INSTALL_DIR)/usr/lib/*.so.* $(1)/usr/lib/
-endef
-
-$(eval $(call BuildPackage,libevent))
-

file:a/libs/libffi/Makefile (deleted)
--- a/libs/libffi/Makefile
+++ /dev/null
@@ -1,81 +1,1 @@
-#
-# Copyright (C) 2009-2012 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
 
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=libffi
-PKG_VERSION:=3.0.11
-PKG_RELEASE:=1
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=ftp://sourceware.org/pub/libffi/
-PKG_MD5SUM:=f69b9693227d976835b4857b1ba7d0e3
-
-PKG_LICENSE:=MIT
-PKG_LICENSE_FILES:=LICENSE
-
-PKG_FIXUP:=autoreconf
-PKG_INSTALL:=1
-PKG_USE_MIPS16:=0
-
-include $(INCLUDE_DIR)/package.mk
-include $(INCLUDE_DIR)/host-build.mk
-
-define Package/libffi
-  SECTION:=libs
-  CATEGORY:=Libraries
-  TITLE:=Foreign Function Interface (FFI) library
-  URL:=http://sourceware.org/libffi/
-endef
-
-define Package/libffi/description
-The libffi library provides a portable, high level programming interface to
-various calling conventions. This allows a programmer to call any function
-specified by a call interface description at run-time.
-
-FFI stands for Foreign Function Interface. A foreign function interface is the
-popular name for the interface that allows code written in one language to call
-code written in another language. The libffi library really only provides the
-lowest, machine dependent layer of a fully featured foreign function interface.
-A layer must exist above libffi that handles type conversions for values passed
-between the two languages.
-endef
-
-CONFIGURE_PATH = build
-CONFIGURE_CMD = ../configure
-MAKE_PATH = build
-
-define Build/Configure
-	mkdir -p $(PKG_BUILD_DIR)/build
-	$(Build/Configure/Default)
-endef
-
-define Build/InstallDev
-	$(INSTALL_DIR) $(1)/usr/lib/pkgconfig
-	$(CP) \
-		$(PKG_INSTALL_DIR)/usr/lib/libffi.{so*,a,la} \
-		$(1)/usr/lib/
-	$(CP) \
-		$(PKG_INSTALL_DIR)/usr/lib/pkgconfig/* \
-		$(1)/usr/lib/pkgconfig/
-
-	$(INSTALL_DIR) $(1)/usr/include
-	$(CP) \
-		$(PKG_INSTALL_DIR)/usr/lib/libffi-$(PKG_VERSION)/include/*.h \
-		$(1)/usr/include/
-endef
-
-define Package/libffi/install
-	$(INSTALL_DIR) $(1)/usr/lib
-	$(CP) \
-		$(PKG_INSTALL_DIR)/usr/lib/libffi.so.* \
-		$(1)/usr/lib/
-endef
-
-$(eval $(call HostBuild))
-$(eval $(call BuildPackage,libffi))
-

file:a/libs/liboping/Makefile (deleted)
--- a/libs/liboping/Makefile
+++ /dev/null
@@ -1,83 +1,1 @@
-#
-# Copyright (C) 2009-2012 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
 
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=liboping
-PKG_VERSION:=1.6.2
-PKG_RELEASE:=1
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_SOURCE_URL:=http://verplant.org/liboping/files
-PKG_MD5SUM:=64a6f31310093d2517cfe7f05aa011e0
-
-PKG_FIXUP:=autoreconf
-
-PKG_INSTALL:=1
-
-include $(INCLUDE_DIR)/package.mk
-
-define Package/liboping/Default
-  URL:=http://verplant.org/liboping/
-endef
-
-define Package/liboping
-$(call Package/liboping/Default)
-  SECTION:=libs
-  CATEGORY:=Libraries
-  TITLE:=C library to generate ICMP echo requests.
-endef
-
-define Package/oping
-$(call Package/liboping/Default)
-  SECTION:=net
-  CATEGORY:=Network
-  TITLE:=Send ICMP echo request to network hosts
-  DEPENDS+= +liboping
-endef
-
-define Package/noping
-$(call Package/liboping/Default)
-  SECTION:=net
-  CATEGORY:=Network
-  TITLE:=Ncurses application to send ICMP echo request to network hosts
-  DEPENDS+= +liboping +libncurses
-endef
-
-TARGET_CFLAGS += $(FPIC)
-
-CONFIGURE_ARGS += \
-	--without-perl-bindings \
-	--enable-shared \
-	--enable-static
-
-define Build/InstallDev
-	$(INSTALL_DIR) $(1)/usr/include
-	$(CP) $(PKG_INSTALL_DIR)/usr/include/oping.h $(1)/usr/include/
-	$(INSTALL_DIR) $(1)/usr/lib
-	$(CP) $(PKG_INSTALL_DIR)/usr/lib/liboping.{a,so*} $(1)/usr/lib/
-endef
-
-define Package/liboping/install
-	$(INSTALL_DIR) $(1)/usr/lib
-	$(CP) $(PKG_INSTALL_DIR)/usr/lib/liboping.so.* $(1)/usr/lib/
-endef
-
-define Package/oping/install
-	$(INSTALL_DIR) $(1)/usr/bin
-	$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/oping $(1)/usr/bin/
-endef
-
-define Package/noping/install
-	$(INSTALL_DIR) $(1)/usr/bin
-	$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/noping $(1)/usr/bin/
-endef
-
-$(eval $(call BuildPackage,liboping))
-$(eval $(call BuildPackage,oping))
-$(eval $(call BuildPackage,noping))
-

--- a/libs/liboping/patches/01-no-werror.patch
+++ /dev/null
@@ -1,12 +1,1 @@
---- a/src/Makefile.am
-+++ b/src/Makefile.am
-@@ -3,7 +3,7 @@ AUTOMAKE_OPTIONS = foreign no-dependenci
- SUBDIRS = mans
- 
- if COMPILER_IS_GCC
--AM_CFLAGS = -Wall -Werror
-+AM_CFLAGS = -Wall
- endif
- 
- include_HEADERS = oping.h
 

file:a/libs/libpam/Makefile (deleted)
--- a/libs/libpam/Makefile
+++ /dev/null
@@ -1,71 +1,1 @@
-#
-# Copyright (C) 2006-2009 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
 
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=libpam
-PKG_VERSION:=1.1.8
-PKG_RELEASE:=3
-
-PKG_SOURCE:=Linux-PAM-$(PKG_VERSION).tar.bz2
-PKG_SOURCE_URL:=http://www.linux-pam.org/library/
-PKG_MD5SUM:=35b6091af95981b1b2cd60d813b5e4ee
-PKG_INSTALL:=1
-PKG_FIXUP:=autoreconf
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/Linux-PAM-$(PKG_VERSION)
-
-include $(INCLUDE_DIR)/package.mk
-
-define Package/libpam
-  SECTION:=libs
-  CATEGORY:=Libraries
-  TITLE:=free implementation of the following DCE-RFC from Sunsoft.
-  URL:=http://www.kernel.org/pub/linux/libs/pam
-endef
-
-define Package/libpam/description
-	Linux-PAM is a free implementation of the following DCE-RFC from Sunsoft.
-endef
-
-TARGET_CFLAGS += $(FPIC)
-
-define Build/Configure
-	$(call Build/Configure/Default, \
-		--enable-shared \
-		--enable-static \
-		--enable-pamlocking \
-		--disable-prelude \
-		--disable-lckpwdf \
-		--disable-selinux \
-		--disable-nls \
-		--disable-rpath \
-		--enable-db=no \
-	)
-endef
-
-define Build/InstallDev
-	$(INSTALL_DIR) $(1)/lib
-	$(INSTALL_DIR) $(1)/usr/include
-	$(CP) $(PKG_INSTALL_DIR)/lib/* $(1)/lib/
-	$(CP) $(PKG_INSTALL_DIR)/usr/include/* $(1)/usr/include
-endef
-
-define Package/libpam/install
-	$(INSTALL_DIR) $(1)/lib $(1)/lib/security $(1)/lib/security/pam_filter
-	$(INSTALL_DIR) $(1)/etc $(1)/etc/pam.d
-	$(INSTALL_DIR) $(1)/usr/sbin
-	$(CP) $(PKG_INSTALL_DIR)/lib/*.so* $(1)/lib/
-	$(CP) $(PKG_INSTALL_DIR)/lib/security/*.so* $(1)/lib/security/
-	$(CP) $(PKG_INSTALL_DIR)/lib/security/pam_filter/* $(1)/lib/security/pam_filter/
-	$(CP) $(PKG_INSTALL_DIR)/etc/* $(1)/etc/
-	$(CP) ./files/* $(1)/etc/
-	$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/* $(1)/usr/sbin/
-endef
-
-$(eval $(call BuildPackage,libpam))
-

--- a/libs/libpam/files/pam.conf
+++ /dev/null
@@ -1,16 +1,1 @@
-# ---------------------------------------------------------------------------#
-# /etc/pam.conf								     #
-# ---------------------------------------------------------------------------#
-#
-# NOTE
-# ----
-#
-# NOTE: Most program use a file under the /etc/pam.d/ directory to setup their
-# PAM service modules. This file is used only if that directory does not exist.
-# ---------------------------------------------------------------------------#
 
-# Format:
-# serv.	module	   ctrl	      module [path]	...[args..]		     #
-# name	type	   flag							     #
-
-

--- a/libs/libpam/files/pam.d/common-account
+++ /dev/null
@@ -1,21 +1,1 @@
-#
-# /etc/pam.d/common-account - authorization settings common to all services
-#
-# This file is included from other service-specific PAM config files,
-# and should contain a list of the authorization modules that define
-# the central access policy for use on the system.  The default is to
-# only deny service to users whose accounts are expired in /etc/shadow.
-#
 
-# here are the per-package modules (the "Primary" block)
-account	[success=1 new_authtok_reqd=done default=ignore]	pam_unix.so 
-# here's the fallback if no module succeeds
-account	requisite			pam_deny.so
-# prime the stack with a positive return value if there isn't one already;
-# this avoids us returning an error just because nothing sets a success code
-# since the modules above will each just jump around
-account	required			pam_permit.so
-# and here are more per-package modules (the "Additional" block)
-
-# end of pam-auth-update config
-

--- a/libs/libpam/files/pam.d/common-auth
+++ /dev/null
@@ -1,22 +1,1 @@
-#
-# /etc/pam.d/common-auth - authentication settings common to all services
-#
-# This file is included from other service-specific PAM config files,
-# and should contain a list of the authentication modules that define
-# the central authentication scheme for use on the system
-# (e.g., /etc/shadow, LDAP, Kerberos, etc.).  The default is to use the
-# traditional Unix authentication mechanisms.
-#
 
-# here are the per-package modules (the "Primary" block)
-auth	[success=1 default=ignore]	pam_unix.so nullok_secure
-# here's the fallback if no module succeeds
-auth	requisite			pam_deny.so
-# prime the stack with a positive return value if there isn't one already;
-# this avoids us returning an error just because nothing sets a success code
-# since the modules above will each just jump around
-auth	required			pam_permit.so
-# and here are more per-package modules (the "Additional" block)
-
-# end of pam-auth-update config
-

--- a/libs/libpam/files/pam.d/common-password
+++ /dev/null
@@ -1,29 +1,1 @@
-#
-# /etc/pam.d/common-password - password-related modules common to all services
-#
-# This file is included from other service-specific PAM config files,
-# and should contain a list of modules that define the services to be
-# used to change user passwords.  The default is pam_unix.
 
-# Explanation of pam_unix options:
-#
-# The "sha512" option enables salted SHA512 passwords.  Without this option,
-# the default is Unix crypt.  Prior releases used the option "md5".
-#
-# The "obscure" option replaces the old `OBSCURE_CHECKS_ENAB' option in
-# login.defs.
-#
-# See the pam_unix manpage for other options.
-
-# here are the per-package modules (the "Primary" block)
-password	[success=1 default=ignore]	pam_unix.so obscure sha512
-# here's the fallback if no module succeeds
-password	requisite			pam_deny.so
-# prime the stack with a positive return value if there isn't one already;
-# this avoids us returning an error just because nothing sets a success code
-# since the modules above will each just jump around
-password	required			pam_permit.so
-# and here are more per-package modules (the "Additional" block)
-
-# end of pam-auth-update config
-

--- a/libs/libpam/files/pam.d/common-session
+++ /dev/null
@@ -1,26 +1,1 @@
-#
-# /etc/pam.d/common-session - session-related modules common to all services
-#
-# This file is included from other service-specific PAM config files,
-# and should contain a list of modules that define tasks to be performed
-# at the start and end of sessions of *any* kind (both interactive and
-# non-interactive).
-#
 
-# here are the per-package modules (the "Primary" block)
-session	[default=1]			pam_permit.so
-# here's the fallback if no module succeeds
-session	requisite			pam_deny.so
-# prime the stack with a positive return value if there isn't one already;
-# this avoids us returning an error just because nothing sets a success code
-# since the modules above will each just jump around
-session	required			pam_permit.so
-# The pam_umask module will set the umask according to the system default in
-# /etc/login.defs and user settings, solving the problem of different
-# umask settings with different shells, display managers, remote sessions etc.
-# See "man pam_umask".
-session optional			pam_umask.so
-# and here are more per-package modules (the "Additional" block)
-session	required			pam_unix.so 
-# end of pam-auth-update config
-

--- a/libs/libpam/files/pam.d/common-session-noninteractive
+++ /dev/null
@@ -1,26 +1,1 @@
-#
-# /etc/pam.d/common-session-noninteractive - session-related modules
-# common to all non-interactive services
-#
-# This file is included from other service-specific PAM config files,
-# and should contain a list of modules that define tasks to be performed
-# at the start and end of all non-interactive sessions.
-#
 
-# here are the per-package modules (the "Primary" block)
-session	[default=1]			pam_permit.so
-# here's the fallback if no module succeeds
-session	requisite			pam_deny.so
-# prime the stack with a positive return value if there isn't one already;
-# this avoids us returning an error just because nothing sets a success code
-# since the modules above will each just jump around
-session	required			pam_permit.so
-# The pam_umask module will set the umask according to the system default in
-# /etc/login.defs and user settings, solving the problem of different
-# umask settings with different shells, display managers, remote sessions etc.
-# See "man pam_umask".
-session optional			pam_umask.so
-# and here are more per-package modules (the "Additional" block)
-session	required			pam_unix.so 
-# end of pam-auth-update config
-

--- a/libs/libpam/files/pam.d/other
+++ /dev/null
@@ -1,17 +1,1 @@
-#
-# /etc/pam.d/other - specify the PAM fallback behaviour
-#
-# Note that this file is used for any unspecified service; for example
-#if /etc/pam.d/cron  specifies no session modules but cron calls
-#pam_open_session, the session module out of /etc/pam.d/other is
-#used.  If you really want nothing to happen then use pam_permit.so or
-#pam_deny.so as appropriate.
 
-# We fall back to the system default in /etc/pam.d/common-*
-# 
-
-auth       include      common-auth
-account    include      common-account
-password   include      common-password
-session    include      common-session
-

--- a/libs/libpam/patches/000-OE-libpam-xtests.patch
+++ /dev/null
@@ -1,36 +1,1 @@
-This patch is used to create a new sub package libpam-xtests to do more checks.
 
-Upstream-Status: Pending
-
-Signed-off-by: Kang Kai <kai.kang@windriver.com>
---- a/xtests/Makefile.am
-+++ b/xtests/Makefile.am
-@@ -7,7 +7,7 @@ AM_CFLAGS = -DLIBPAM_COMPILE -I$(top_src
- LDADD = $(top_builddir)/libpam/libpam.la \
- 	$(top_builddir)/libpam_misc/libpam_misc.la
- 
--CLEANFILES = *~ $(XTESTS)
-+CLEANFILES = *~
- 
- EXTRA_DIST = run-xtests.sh tst-pam_dispatch1.pamd tst-pam_dispatch2.pamd \
- 	tst-pam_dispatch3.pamd tst-pam_dispatch4.pamd \
-@@ -51,3 +51,18 @@ EXTRA_PROGRAMS = $(XTESTS)
- 
- xtests: $(XTESTS) run-xtests.sh
- 	"$(srcdir)"/run-xtests.sh "$(srcdir)" ${XTESTS} ${NOSRCTESTS}
-+
-+all: $(XTESTS)
-+
-+install: install_xtests
-+
-+install_xtests:
-+	$(INSTALL) -d $(DESTDIR)$(pkgdatadir)/xtests
-+	for file in $(EXTRA_DIST) ; do \
-+		$(INSTALL) $$file $(DESTDIR)$(pkgdatadir)/xtests ; \
-+	done
-+	for file in $(XTESTS); do \
-+		$(INSTALL) .libs/$$file $(DESTDIR)$(pkgdatadir)/xtests ; \
-+	done
-+
-+.PHONY: all install_xtests
-

--- a/libs/libpam/patches/000-OE-pam-no-innetgr.patch
+++ /dev/null
@@ -1,86 +1,1 @@
-innetgr may not be there so make sure that when innetgr is not present
-then we inform about it and not use it.
 
--Khem
---- a/modules/pam_group/pam_group.c
-+++ b/modules/pam_group/pam_group.c
-@@ -656,7 +656,11 @@ static int check_account(pam_handle_t *p
- 	}
- 	/* If buffer starts with @, we are using netgroups */
- 	if (buffer[0] == '@')
-+#ifdef HAVE_INNETGR
- 	  good &= innetgr (&buffer[1], NULL, user, NULL);
-+#else
-+	pam_syslog (pamh, LOG_ERR, "pam_group does not have netgroup support");
-+#endif
- 	/* otherwise, if the buffer starts with %, it's a UNIX group */
- 	else if (buffer[0] == '%')
-           good &= pam_modutil_user_in_group_nam_nam(pamh, user, &buffer[1]);
---- a/modules/pam_time/pam_time.c
-+++ b/modules/pam_time/pam_time.c
-@@ -555,9 +555,13 @@ check_account(pam_handle_t *pamh, const
- 	  }
- 	  /* If buffer starts with @, we are using netgroups */
- 	  if (buffer[0] == '@')
--	    good &= innetgr (&buffer[1], NULL, user, NULL);
-+#ifdef HAVE_INNETGR
-+	       good &= innetgr (&buffer[1], NULL, user, NULL);
-+#else
-+	       pam_syslog (pamh, LOG_ERR, "pam_time does not have netgroup support");
-+#endif
- 	  else
--	    good &= logic_field(pamh, user, buffer, count, is_same);
-+	       good &= logic_field(pamh, user, buffer, count, is_same);
- 	  D(("with user: %s", good ? "passes":"fails" ));
- 
- 	  /* here we get the time field */
---- a/modules/pam_succeed_if/pam_succeed_if.c
-+++ b/modules/pam_succeed_if/pam_succeed_if.c
-@@ -231,18 +231,27 @@ evaluate_notingroup(pam_handle_t *pamh,
- }
- /* Return PAM_SUCCESS if the (host,user) is in the netgroup. */
- static int
--evaluate_innetgr(const char *host, const char *user, const char *group)
-+evaluate_innetgr(const pam_handle_t* pamh, const char *host, const char *user, const char *group)
- {
-+#ifdef HAVE_INNETGR
- 	if (innetgr(group, host, user, NULL) == 1)
- 		return PAM_SUCCESS;
-+#else
-+        pam_syslog (pamh, LOG_ERR, "pam_succeed_if does not have netgroup support");
-+#endif
-+
- 	return PAM_AUTH_ERR;
- }
- /* Return PAM_SUCCESS if the (host,user) is NOT in the netgroup. */
- static int
--evaluate_notinnetgr(const char *host, const char *user, const char *group)
-+evaluate_notinnetgr(const pam_handle_t* pamh, const char *host, const char *user, const char *group)
- {
-+#ifdef HAVE_INNETGR
- 	if (innetgr(group, host, user, NULL) == 0)
- 		return PAM_SUCCESS;
-+#else
-+	pam_syslog (pamh, LOG_ERR, "pam_succeed_if does not have netgroup support");
-+#endif
- 	return PAM_AUTH_ERR;
- }
- 
-@@ -387,14 +396,14 @@ evaluate(pam_handle_t *pamh, int debug,
- 		const void *rhost;
- 		if (pam_get_item(pamh, PAM_RHOST, &rhost) != PAM_SUCCESS)
- 			rhost = NULL;
--		return evaluate_innetgr(rhost, user, right);
-+		return evaluate_innetgr(pamh, rhost, user, right);
- 	}
- 	/* (Rhost, user) is not in this group. */
- 	if (strcasecmp(qual, "notinnetgr") == 0) {
- 		const void *rhost;
- 		if (pam_get_item(pamh, PAM_RHOST, &rhost) != PAM_SUCCESS)
- 			rhost = NULL;
--		return evaluate_notinnetgr(rhost, user, right);
-+		return evaluate_notinnetgr(pamh, rhost, user, right);
- 	}
- 	/* Fail closed. */
- 	return PAM_SERVICE_ERR;
-

--- a/libs/libpam/patches/001-no_nis.patch
+++ /dev/null
@@ -1,69 +1,1 @@
---- a/modules/pam_access/pam_access.c
-+++ b/modules/pam_access/pam_access.c
-@@ -44,7 +44,7 @@
- #include <arpa/inet.h>
- #include <netdb.h>
- #include <sys/socket.h>
--#ifdef HAVE_RPCSVC_YPCLNT_H
-+#ifdef HAVE_RPCSVC_YPCLNT_H && USE_NIS
- #include <rpcsvc/ypclnt.h>
- #endif
- #ifdef HAVE_LIBAUDIT
---- a/modules/pam_unix/pam_unix_passwd.c
-+++ b/modules/pam_unix/pam_unix_passwd.c
-@@ -79,18 +79,18 @@
- #include "passverify.h"
- #include "bigcrypt.h"
- 
--#if (HAVE_YP_GET_DEFAULT_DOMAIN || HAVE_GETDOMAINNAME) && HAVE_YP_MASTER
-+#if (HAVE_YP_GET_DEFAULT_DOMAIN || HAVE_GETDOMAINNAME) && HAVE_YP_MASTER && USE_NIS
- # define HAVE_NIS
- #endif
- 
- #ifdef HAVE_NIS
- # include <rpc/rpc.h>
- 
--# if HAVE_RPCSVC_YP_PROT_H
-+# if HAVE_RPCSVC_YP_PROT_H && USE_NIS
- #  include <rpcsvc/yp_prot.h>
- # endif
- 
--# if HAVE_RPCSVC_YPCLNT_H
-+# if HAVE_RPCSVC_YPCLNT_H && USE_NIS
- #  include <rpcsvc/ypclnt.h>
- # endif
- 
---- a/modules/pam_unix/support.c
-+++ b/modules/pam_unix/support.c
-@@ -19,7 +19,7 @@
- #include <ctype.h>
- #include <syslog.h>
- #include <sys/resource.h>
--#ifdef HAVE_RPCSVC_YPCLNT_H
-+#ifdef HAVE_RPCSVC_YPCLNT_H && USE_NIS
- #include <rpcsvc/ypclnt.h>
- #endif
- 
-@@ -402,7 +402,7 @@ int _unix_getpwnam(pam_handle_t *pamh, c
- 		}
- 	}
- 
--#if defined(HAVE_YP_GET_DEFAULT_DOMAIN) && defined (HAVE_YP_BIND) && defined (HAVE_YP_MATCH) && defined (HAVE_YP_UNBIND)
-+#if defined(HAVE_YP_GET_DEFAULT_DOMAIN) && defined (HAVE_YP_BIND) && defined (HAVE_YP_MATCH) && defined (HAVE_YP_UNBIND) && (USE_NIS)
- 	if (!matched && nis) {
- 		char *userinfo = NULL, *domain = NULL;
- 		int len = 0, i;
---- a/modules/pam_unix/yppasswd_xdr.c
-+++ b/modules/pam_unix/yppasswd_xdr.c
-@@ -15,6 +15,10 @@
- #ifdef HAVE_RPC_RPC_H
- 
- #include <rpc/rpc.h>
-+#ifdef USE_NIS
-+#include <rpcsvc/yp_prot.h>
-+#include <rpcsvc/ypclnt.h>
-+#endif
- #include "yppasswd.h"
- 
- bool_t
 

--- a/libs/libpam/patches/002-no_yywrap.patch
+++ /dev/null
@@ -1,27 +1,1 @@
---- a/conf/pam_conv1/pam_conv_l.c
-+++ b/conf/pam_conv1/pam_conv_l.c
-@@ -534,7 +534,9 @@ void yyset_lineno (int line_number  );
- #ifdef __cplusplus
- extern "C" int yywrap (void );
- #else
--extern int yywrap (void );
-+int yywrap (void ) {
-+	return 1;
-+}
- #endif
- #endif
- 
---- a/doc/specs/parse_l.c
-+++ b/doc/specs/parse_l.c
-@@ -520,7 +520,9 @@ void yyset_lineno (int line_number  );
- #ifdef __cplusplus
- extern "C" int yywrap (void );
- #else
--extern int yywrap (void );
-+int yywrap (void ) {
-+	return 1;
-+}
- #endif
- #endif
- 
 

--- a/libs/libpam/patches/003-no_doc.patch
+++ /dev/null
@@ -1,23 +1,1 @@
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -4,7 +4,7 @@
- 
- AUTOMAKE_OPTIONS = 1.9 gnu dist-bzip2 check-news
- 
--SUBDIRS = libpam tests libpamc libpam_misc modules po conf doc examples xtests
-+SUBDIRS = libpam tests libpamc libpam_misc modules po conf examples xtests
- 
- CLEANFILES = *~
- 
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -288,7 +288,7 @@ top_build_prefix = @top_build_prefix@
- top_builddir = @top_builddir@
- top_srcdir = @top_srcdir@
- AUTOMAKE_OPTIONS = 1.9 gnu dist-bzip2 check-news
--SUBDIRS = libpam tests libpamc libpam_misc modules po conf doc examples xtests
-+SUBDIRS = libpam tests libpamc libpam_misc modules po conf examples xtests
- CLEANFILES = *~
- EXTRA_DIST = pgp.keys.asc CHANGELOG ChangeLog-CVS Copyright Make.xml.rules
- ACLOCAL_AMFLAGS = -I m4
 

--- a/libs/libpam/patches/004-fix_lib64.patch
+++ /dev/null
@@ -1,17 +1,1 @@
---- a/configure.in
-+++ b/configure.in
-@@ -28,12 +28,7 @@ dnl If we use /usr as prefix, use /etc f
-         fi
- 	if test ${libdir} = '${exec_prefix}/lib'
- 	then
--		case "`uname -m`" in
--		    x86_64|ppc64|s390x|sparc64)
--			libdir="/lib64" ;;
--		    *)
--			libdir="/lib" ;;
--		esac
-+		libdir="/lib"
- 	fi
- 	if test ${sbindir} = '${exec_prefix}/sbin'
-         then
 

--- a/libs/libpam/patches/005-fix_ruserok.patch
+++ /dev/null
@@ -1,365 +1,1 @@
---- a/modules/pam_rhosts/pam_rhosts.c
-+++ b/modules/pam_rhosts/pam_rhosts.c
-@@ -43,6 +43,361 @@
- #include <security/pam_modutil.h>
- #include <security/pam_ext.h>
- 
-+#ifdef __UCLIBC__
-+
-+#include <stdio.h>
-+#include <sys/stat.h>
-+
-+
-+int  __check_rhosts_file = 1;
-+
-+/* Extremely paranoid file open function. */
-+static FILE *
-+iruserfopen (const char *file, uid_t okuser)
-+{
-+  struct stat st;
-+  char *cp = NULL;
-+  FILE *res = NULL;
-+
-+  /* If not a regular file, if owned by someone other than user or
-+     root, if writeable by anyone but the owner, or if hardlinked
-+     anywhere, quit.  */
-+  if (lstat (file, &st))
-+    cp = "lstat failed";
-+  else if (!S_ISREG (st.st_mode))
-+    cp = "not regular file";
-+  else
-+    {
-+      res = fopen (file, "r");
-+      if (!res)
-+	cp = "cannot open";
-+      else if (fstat (fileno (res), &st) < 0)
-+	cp = "fstat failed";
-+      else if (st.st_uid && st.st_uid != okuser)
-+	cp = "bad owner";
-+      else if (st.st_mode & (S_IWGRP|S_IWOTH))
-+	cp = "writeable by other than owner";
-+      else if (st.st_nlink > 1)
-+	cp = "hard linked somewhere";
-+    }
-+
-+  /* If there were any problems, quit.  */
-+  if (cp != NULL)
-+    {
-+      if (res)
-+	fclose (res);
-+      return NULL;
-+    }
-+
-+  return res;
-+}
-+
-+/*
-+ * Returns 1 for blank lines (or only comment lines) and 0 otherwise
-+ */
-+static int
-+__isempty(char *p)
-+{
-+    while (*p && isspace (*p)) {
-+	++p;
-+    }
-+
-+    return (*p == '\0' || *p == '#') ? 1 : 0 ;
-+}
-+
-+/* Returns 1 on positive match, 0 on no match, -1 on negative match.  */
-+static int
-+__icheckhost (u_int32_t raddr, char *lhost, const char *rhost)
-+{
-+	struct hostent *hp;
-+	u_int32_t laddr;
-+	int negate=1;    /* Multiply return with this to get -1 instead of 1 */
-+	char **pp;
-+
-+#ifdef __UCLIBC_HAS_REENTRANT_RPC__
-+	int save_errno;
-+	size_t buflen;
-+	char *buffer;
-+	struct hostent hostbuf;
-+	int herr;
-+#endif
-+
-+#ifdef HAVE_NETGROUP
-+	/* Check nis netgroup.  */
-+	if (strncmp ("+@", lhost, 2) == 0)
-+		return innetgr (&lhost[2], rhost, NULL, NULL);
-+
-+	if (strncmp ("-@", lhost, 2) == 0)
-+		return -innetgr (&lhost[2], rhost, NULL, NULL);
-+#endif /* HAVE_NETGROUP */
-+
-+	/* -host */
-+	if (strncmp ("-", lhost,1) == 0) {
-+		negate = -1;
-+		lhost++;
-+	} else if (strcmp ("+",lhost) == 0) {
-+		return 1;                    /* asking for trouble, but ok.. */
-+	}
-+
-+	/* Try for raw ip address first. */
-+	if (isdigit (*lhost) && (laddr = inet_addr (lhost)) != INADDR_NONE)
-+		return negate * (! (raddr ^ laddr));
-+
-+	/* Better be a hostname. */
-+#ifdef __UCLIBC_HAS_REENTRANT_RPC__
-+	buflen = 1024;
-+	buffer = malloc(buflen);
-+	save_errno = errno;
-+
-+	while (gethostbyname_r (lhost, &hostbuf, buffer, buflen, &hp, &herr)
-+	       != 0) {
-+	    free(buffer);
-+	    return (0);
-+	}
-+	free(buffer);
-+	__set_errno (save_errno);
-+#else
-+	hp = gethostbyname(lhost);
-+#endif /* __UCLIBC_HAS_REENTRANT_RPC__ */
-+
-+	if (hp == NULL)
-+		return 0;
-+
-+	/* Spin through ip addresses. */
-+	for (pp = hp->h_addr_list; *pp; ++pp)
-+		if (!memcmp (&raddr, *pp, sizeof (u_int32_t)))
-+			return negate;
-+
-+	/* No match. */
-+	return (0);
-+}
-+
-+/* Returns 1 on positive match, 0 on no match, -1 on negative match.  */
-+static int
-+__icheckuser (const char *luser, const char *ruser)
-+{
-+
-+    /*
-+      luser is user entry from .rhosts/hosts.equiv file
-+      ruser is user id on remote host
-+      */
-+
-+#ifdef HAVE_NETGROUP
-+    /* [-+]@netgroup */
-+    if (strncmp ("+@", luser, 2) == 0)
-+	return innetgr (&luser[2], NULL, ruser, NULL);
-+
-+    if (strncmp ("-@", luser,2) == 0)
-+	return -innetgr (&luser[2], NULL, ruser, NULL);
-+#endif /* HAVE_NETGROUP */
-+
-+    /* -user */
-+    if (strncmp ("-", luser, 1) == 0)
-+	return -(strcmp (&luser[1], ruser) == 0);
-+
-+    /* + */
-+    if (strcmp ("+", luser) == 0)
-+	return 1;
-+
-+    /* simple string match */
-+    return strcmp (ruser, luser) == 0;
-+}
-+
-+/*
-+ * Returns 0 if positive match, -1 if _not_ ok.
-+ */
-+static int
-+__ivaliduser2(FILE *hostf, u_int32_t raddr,	const char *luser,
-+			  const char *ruser, const char *rhost)
-+{
-+    register const char *user;
-+    register char *p;
-+    int hcheck, ucheck;
-+    char *buf = NULL;
-+    size_t bufsize = 0;
-+    int retval = -1;
-+
-+    while (getline (&buf, &bufsize, hostf) > 0) {
-+	buf[bufsize - 1] = '\0'; /* Make sure it's terminated.  */
-+        p = buf;
-+
-+	/* Skip empty or comment lines */
-+	if (__isempty (p)) {
-+	    continue;
-+	}
-+
-+	/* Skip lines that are too long. */
-+	if (strchr (p, '\n') == NULL) {
-+	    int ch = getc_unlocked (hostf);
-+
-+	    while (ch != '\n' && ch != EOF)
-+	      ch = getc_unlocked (hostf);
-+	    continue;
-+	}
-+
-+	for (;*p && !isspace(*p); ++p) {
-+	    *p = tolower (*p);
-+	}
-+
-+	/* Next we want to find the permitted name for the remote user.  */
-+	if (*p == ' ' || *p == '\t') {
-+	    /* <nul> terminate hostname and skip spaces */
-+	    for (*p++='\0'; *p && isspace (*p); ++p);
-+
-+	    user = p;                   /* this is the user's name */
-+	    while (*p && !isspace (*p))
-+		++p;                    /* find end of user's name */
-+	} else
-+	    user = p;
-+
-+	*p = '\0';              /* <nul> terminate username (+host?) */
-+
-+	/* buf -> host(?) ; user -> username(?) */
-+
-+	/* First check host part */
-+	hcheck = __icheckhost (raddr, buf, rhost);
-+
-+	if (hcheck < 0)
-+	    break;
-+
-+	if (hcheck) {
-+	    /* Then check user part */
-+	    if (! (*user))
-+		user = luser;
-+
-+	    ucheck = __icheckuser (user, ruser);
-+
-+	    /* Positive 'host user' match? */
-+	    if (ucheck > 0) {
-+		retval = 0;
-+		break;
-+	    }
-+
-+	    /* Negative 'host -user' match? */
-+	    if (ucheck < 0)
-+		break;
-+
-+	    /* Neither, go on looking for match */
-+	}
-+    }
-+
-+    free (buf);
-+
-+    return retval;
-+}
-+
-+static int
-+iruserok2 (u_int32_t raddr, int superuser, const char *ruser, const char *luser,
-+		   const char *rhost)
-+{
-+	FILE *hostf = NULL;
-+	int isbad = -1;
-+
-+	if (!superuser)
-+		hostf = iruserfopen (_PATH_HEQUIV, 0);
-+
-+	if (hostf) {
-+		isbad = __ivaliduser2 (hostf, raddr, luser, ruser, rhost);
-+		fclose (hostf);
-+
-+		if (!isbad)
-+			return 0;
-+	}
-+
-+	if (__check_rhosts_file || superuser) {
-+		char *pbuf;
-+		struct passwd *pwd;
-+		size_t dirlen;
-+		uid_t uid;
-+
-+#ifdef __UCLIBC_HAS_REENTRANT_RPC__
-+		size_t buflen = sysconf (_SC_GETPW_R_SIZE_MAX);
-+		struct passwd pwdbuf;
-+		char *buffer = stack_heap_alloc(buflen);
-+
-+		if (getpwnam_r (luser, &pwdbuf, buffer,
-+			    buflen, &pwd) != 0 || pwd == NULL)
-+		{
-+			stack_heap_free(buffer);
-+			return -1;
-+		}
-+		stack_heap_free(buffer);
-+#else
-+		if ((pwd = getpwnam(luser)) == NULL)
-+			return -1;
-+#endif
-+
-+		dirlen = strlen (pwd->pw_dir);
-+		pbuf = malloc (dirlen + sizeof "/.rhosts");
-+		strcpy (pbuf, pwd->pw_dir);
-+		strcat (pbuf, "/.rhosts");
-+
-+		/* Change effective uid while reading .rhosts.  If root and
-+		   reading an NFS mounted file system, can't read files that
-+		   are protected read/write owner only.  */
-+		uid = geteuid ();
-+		seteuid (pwd->pw_uid);
-+		hostf = iruserfopen (pbuf, pwd->pw_uid);
-+		free(pbuf);
-+
-+		if (hostf != NULL) {
-+			isbad = __ivaliduser2 (hostf, raddr, luser, ruser, rhost);
-+			fclose (hostf);
-+		}
-+
-+		seteuid (uid);
-+		return isbad;
-+	}
-+	return -1;
-+}
-+
-+int ruserok(const char *rhost, int superuser, const char *ruser,
-+			const char *luser)
-+{
-+        struct hostent *hp;
-+	u_int32_t addr;
-+	char **ap;
-+#ifdef __UCLIBC_HAS_REENTRANT_RPC__
-+	size_t buflen;
-+	char *buffer;
-+	int herr;
-+	struct hostent hostbuf;
-+#endif
-+
-+#ifdef __UCLIBC_HAS_REENTRANT_RPC__
-+	buflen = 1024;
-+	buffer = stack_heap_alloc(buflen);
-+
-+	while (gethostbyname_r (rhost, &hostbuf, buffer,
-+		    buflen, &hp, &herr) != 0 || hp == NULL)
-+	{
-+	    if (herr != NETDB_INTERNAL || errno != ERANGE) {
-+		stack_heap_free(buffer);
-+		return -1;
-+	    } else
-+	    {
-+		/* Enlarge the buffer.  */
-+		buflen *= 2;
-+		stack_heap_free(buffer);
-+		buffer = stack_heap_alloc(buflen);
-+	    }
-+	}
-+	stack_heap_free(buffer);
-+#else
-+	if ((hp = gethostbyname(rhost)) == NULL) {
-+		return -1;
-+	}
-+#endif
-+	for (ap = hp->h_addr_list; *ap; ++ap) {
-+		memmove(&addr, *ap, sizeof(addr));
-+		if (iruserok2(addr, superuser, ruser, luser, rhost) == 0)
-+			return 0;
-+	}
-+	return -1;
-+}
-+
-+#endif /* __UCLIBC__ */
-+
- PAM_EXTERN
- int pam_sm_authenticate (pam_handle_t *pamh, int flags, int argc,
- 			 const char **argv)
 

--- a/libs/libpam/patches/006-fix_xdr.patch
+++ /dev/null
@@ -1,272 +1,1 @@
---- a/modules/pam_unix/yppasswd_xdr.c
-+++ b/modules/pam_unix/yppasswd_xdr.c
-@@ -21,6 +21,268 @@
- #endif
- #include "yppasswd.h"
- 
-+#ifdef __UCLIBC__
-+
-+static const char xdr_zero[BYTES_PER_XDR_UNIT] = {0, 0, 0, 0};
-+
-+/*
-+ * XDR integers
-+ */
-+bool_t
-+xdr_int (XDR *xdrs, int *ip)
-+{
-+
-+#if INT_MAX < LONG_MAX
-+  long l;
-+
-+  switch (xdrs->x_op)
-+    {
-+    case XDR_ENCODE:
-+      l = (long) *ip;
-+      return XDR_PUTLONG (xdrs, &l);
-+
-+    case XDR_DECODE:
-+      if (!XDR_GETLONG (xdrs, &l))
-+	{
-+	  return FALSE;
-+	}
-+      *ip = (int) l;
-+    case XDR_FREE:
-+      return TRUE;
-+    }
-+  return FALSE;
-+#elif INT_MAX == LONG_MAX
-+  return xdr_long (xdrs, (long *) ip);
-+#elif INT_MAX == SHRT_MAX
-+  return xdr_short (xdrs, (short *) ip);
-+#else
-+#error unexpected integer sizes in xdr_int()
-+#endif
-+}
-+
-+/*
-+ * XDR null terminated ASCII strings
-+ * xdr_string deals with "C strings" - arrays of bytes that are
-+ * terminated by a NULL character.  The parameter cpp references a
-+ * pointer to storage; If the pointer is null, then the necessary
-+ * storage is allocated.  The last parameter is the max allowed length
-+ * of the string as specified by a protocol.
-+ */
-+bool_t
-+xdr_string (XDR *xdrs, char **cpp, u_int maxsize)
-+{
-+  char *sp = *cpp;	/* sp is the actual string pointer */
-+  u_int size;
-+  u_int nodesize;
-+
-+  /*
-+   * first deal with the length since xdr strings are counted-strings
-+   */
-+  switch (xdrs->x_op)
-+    {
-+    case XDR_FREE:
-+      if (sp == NULL)
-+	{
-+	  return TRUE;		/* already free */
-+	}
-+      /* fall through... */
-+    case XDR_ENCODE:
-+      if (sp == NULL)
-+	return FALSE;
-+      size = strlen (sp);
-+      break;
-+    case XDR_DECODE:
-+      break;
-+    }
-+  if (!xdr_u_int (xdrs, &size))
-+    {
-+      return FALSE;
-+    }
-+  if (size > maxsize)
-+    {
-+      return FALSE;
-+    }
-+  nodesize = size + 1;
-+
-+  /*
-+   * now deal with the actual bytes
-+   */
-+  switch (xdrs->x_op)
-+    {
-+    case XDR_DECODE:
-+      if (nodesize == 0)
-+	{
-+	  return TRUE;
-+	}
-+      if (sp == NULL)
-+	*cpp = sp = (char *) mem_alloc (nodesize);
-+      if (sp == NULL)
-+	{
-+#ifdef USE_IN_LIBIO
-+	  if (_IO_fwide (stderr, 0) > 0)
-+	    (void) fwprintf (stderr, L"%s",
-+			       _("xdr_string: out of memory\n"));
-+	  else
-+#endif
-+	    (void) fputs (_("xdr_string: out of memory\n"), stderr);
-+	  return FALSE;
-+	}
-+      sp[size] = 0;
-+      /* fall into ... */
-+
-+    case XDR_ENCODE:
-+      return xdr_opaque (xdrs, sp, size);
-+
-+    case XDR_FREE:
-+      mem_free (sp, nodesize);
-+      *cpp = NULL;
-+      return TRUE;
-+    }
-+  return FALSE;
-+}
-+
-+/*
-+ * XDR long integers
-+ * The definition of xdr_long() is kept for backward
-+ * compatibility. Instead xdr_int() should be used.
-+ */
-+bool_t
-+xdr_long (XDR *xdrs, long *lp)
-+{
-+  if (xdrs->x_op == XDR_ENCODE
-+      && (sizeof (int32_t) == sizeof (long)
-+	  || (int32_t) *lp == *lp))
-+    return XDR_PUTLONG (xdrs, lp);
-+
-+  if (xdrs->x_op == XDR_DECODE)
-+    return XDR_GETLONG (xdrs, lp);
-+
-+  if (xdrs->x_op == XDR_FREE)
-+    return TRUE;
-+
-+  return FALSE;
-+}
-+
-+/*
-+ * XDR unsigned integers
-+ */
-+bool_t
-+xdr_u_int (XDR *xdrs, u_int *up)
-+{
-+#if UINT_MAX < ULONG_MAX
-+  u_long l;
-+
-+  switch (xdrs->x_op)
-+    {
-+    case XDR_ENCODE:
-+      l = (u_long) * up;
-+      return XDR_PUTLONG (xdrs, (long *) &l);
-+
-+    case XDR_DECODE:
-+      if (!XDR_GETLONG (xdrs, (long *) &l))
-+	{
-+	  return FALSE;
-+	}
-+      *up = (u_int) l;
-+    case XDR_FREE:
-+      return TRUE;
-+    }
-+  return FALSE;
-+#elif UINT_MAX == ULONG_MAX
-+  return xdr_u_long (xdrs, (u_long *) up);
-+#elif UINT_MAX == USHRT_MAX
-+  return xdr_short (xdrs, (short *) up);
-+#else
-+#error unexpected integer sizes in xdr_u_int()
-+#endif
-+}
-+
-+/*
-+ * XDR opaque data
-+ * Allows the specification of a fixed size sequence of opaque bytes.
-+ * cp points to the opaque object and cnt gives the byte length.
-+ */
-+bool_t
-+xdr_opaque (XDR *xdrs, caddr_t cp, u_int cnt)
-+{
-+  u_int rndup;
-+  static char crud[BYTES_PER_XDR_UNIT];
-+
-+  /*
-+   * if no data we are done
-+   */
-+  if (cnt == 0)
-+    return TRUE;
-+
-+  /*
-+   * round byte count to full xdr units
-+   */
-+  rndup = cnt % BYTES_PER_XDR_UNIT;
-+  if (rndup > 0)
-+    rndup = BYTES_PER_XDR_UNIT - rndup;
-+
-+  switch (xdrs->x_op)
-+    {
-+    case XDR_DECODE:
-+      if (!XDR_GETBYTES (xdrs, cp, cnt))
-+	{
-+	  return FALSE;
-+	}
-+      if (rndup == 0)
-+	return TRUE;
-+      return XDR_GETBYTES (xdrs, (caddr_t)crud, rndup);
-+
-+    case XDR_ENCODE:
-+      if (!XDR_PUTBYTES (xdrs, cp, cnt))
-+	{
-+	  return FALSE;
-+	}
-+      if (rndup == 0)
-+	return TRUE;
-+      return XDR_PUTBYTES (xdrs, xdr_zero, rndup);
-+
-+    case XDR_FREE:
-+      return TRUE;
-+    }
-+  return FALSE;
-+}
-+
-+/*
-+ * XDR unsigned long integers
-+ * The definition of xdr_u_long() is kept for backward
-+ * compatibility. Instead xdr_u_int() should be used.
-+ */
-+bool_t
-+xdr_u_long (XDR *xdrs, u_long *ulp)
-+{
-+  switch (xdrs->x_op)
-+    {
-+    case XDR_DECODE:
-+      {
-+	long int tmp;
-+
-+	if (XDR_GETLONG (xdrs, &tmp) == FALSE)
-+	  return FALSE;
-+
-+	*ulp = (uint32_t) tmp;
-+	return TRUE;
-+      }
-+
-+    case XDR_ENCODE:
-+      if (sizeof (uint32_t) != sizeof (u_long)
-+	  && (uint32_t) *ulp != *ulp)
-+	return FALSE;
-+
-+      return XDR_PUTLONG (xdrs, (long *) ulp);
-+
-+    case XDR_FREE:
-+      return TRUE;
-+    }
-+  return FALSE;
-+}
-+
-+#endif /* UCLIBC */
-+
- bool_t
- xdr_xpasswd(XDR * xdrs, xpasswd * objp)
- {
 

--- a/libs/libsndfile/Makefile
+++ /dev/null
@@ -1,65 +1,1 @@
-#
-# Copyright (C) 2007-2010 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
 
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=libsndfile
-PKG_VERSION:=1.0.25
-PKG_RELEASE:=2
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=http://www.mega-nerd.com/libsndfile/files/
-PKG_MD5SUM:=e2b7bb637e01022c7d20f95f9c3990a2
-
-PKG_LICENSE:=LGPLv2.1
-PKG_LICENSE_FILES:=COPYING
-
-PKG_FIXUP:=autoreconf
-PKG_INSTALL:=1
-
-include $(INCLUDE_DIR)/package.mk
-
-define Package/libsndfile
-  SECTION:=libs
-  CATEGORY:=Libraries
-  TITLE:=Library for reading/writing audio files
-  URL:=http://www.mega-nerd.com/libsndfile/
-  DEPENDS:=@!avr32
-endef
-
-define Package/libsndfile/description
- libsndfile is a library of C routines for reading and writing files
- containing sampled audio data.
-endef
-
-CONFIGURE_ARGS+= \
-	--disable-alsa \
-	--disable-external-libs \
-	--disable-sqlite
-
-CONFIGURE_VARS += \
-	ac_cv_sys_file_offset_bits=64 \
-	ac_cv_sys_large_files=yes \
-	ac_cv_sys_largefile_CFLAGS=-D_LARGFILE_SOURCE \
-	ac_cv_sys_largefile_LDFLAGS= \
-	ac_cv_sys_largefile_LIBS= \
-	ac_cv_sys_largefile_source=yes
-
-TARGET_CFLAGS += $(FPIC)
-
-define Build/InstallDev
-	$(INSTALL_DIR) $(1)
-	$(CP) $(PKG_INSTALL_DIR)/* $(1)/
-endef
-
-define Package/libsndfile/install
-	$(INSTALL_DIR) $(1)/usr/lib
-	$(CP) $(PKG_INSTALL_DIR)/usr/lib/libsndfile.so.* $(1)/usr/lib/
-endef
-
-$(eval $(call BuildPackage,libsndfile))
-

--- a/libs/libsndfile/patches/001-automake-compat.patch
+++ /dev/null
@@ -1,11 +1,1 @@
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -1,5 +1,7 @@
- ## Process this file with automake to produce Makefile.in
- 
-+ACLOCAL_AMFLAGS = -I M4
-+
- DISTCHECK_CONFIGURE_FLAGS = --enable-gcc-werror
- 
- if BUILD_OCTAVE_MOD
 

file:a/libs/liburcu/Makefile (deleted)
--- a/libs/liburcu/Makefile
+++ /dev/null
@@ -1,50 +1,1 @@
-#
-# Copyright (C) 2013 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
 
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=liburcu
-PKG_VERSION:=0.7.6
-PKG_RELEASE:=1
-
-PKG_SOURCE:=userspace-rcu-$(PKG_VERSION).tar.bz2
-PKG_SOURCE_URL:=https://lttng.org/files/urcu/
-PKG_MD5SUM:=4c1ecb4bdcd43e36dfdffdd297023c8b
-PKG_BUILD_DIR:=$(BUILD_DIR)/userspace-rcu-$(PKG_VERSION)
-
-PKG_BUILD_PARALLEL:=1
-PKG_INSTALL:=1
-PKG_USE_MIPS16:=0
-
-include $(INCLUDE_DIR)/package.mk
-
-define Package/liburcu
-  SECTION:=libs
-  CATEGORY:=Libraries
-  DEPENDS:=+libpthread
-  TITLE:=User-space Read-Copy-Update library
-  URL:=https://lttng.org/
-endef
-
-define Package/liburcu/description
-   Userspace Read-Copy-Update library.
-endef
-
-define Build/InstallDev
-	$(INSTALL_DIR) $(1)/usr/include
-	$(CP) $(PKG_INSTALL_DIR)/usr/include/urcu* $(1)/usr/include/
-	$(INSTALL_DIR) $(1)/usr/lib
-	$(CP) $(PKG_INSTALL_DIR)/usr/lib/liburcu*.{a,so*} $(1)/usr/lib/
-endef
-
-define Package/liburcu/install
-	$(INSTALL_DIR) $(1)/usr/lib
-	$(CP) $(PKG_INSTALL_DIR)/usr/lib/liburcu*.so.* $(1)/usr/lib/
-endef
-
-$(eval $(call BuildPackage,liburcu))
-

file:a/libs/pcre/Makefile (deleted)
--- a/libs/pcre/Makefile
+++ /dev/null
@@ -1,90 +1,1 @@
-#
-# Copyright (C) 2006-2011 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
 
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=pcre
-PKG_VERSION:=8.11
-PKG_RELEASE:=2
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_SOURCE_URL:=@SF/pcre
-PKG_MD5SUM:=ef907b8792ec7f90f0dcd773848f0b3b
-
-PKG_LICENSE:=BSD-3c
-PKG_LICENSE_FILES:=LICENCE
-
-PKG_FIXUP:=autoreconf
-
-PKG_INSTALL:=1
-
-include $(INCLUDE_DIR)/package.mk
-
-define Package/libpcre/default
-  SECTION:=libs
-  CATEGORY:=Libraries
-  URL:=http://www.pcre.org/
-endef
-
-define Package/libpcre
-  $(call Package/libpcre/default)
-  TITLE:=A Perl Compatible Regular Expression library
-endef
-
-define Package/libpcrecpp
-  $(call Package/libpcre/default)
-  TITLE:=C++ wrapper for Perl Compatible Regular Expression library
-  DEPENDS:=+libpcre +libstdcpp
-endef
-
-
-TARGET_CFLAGS += $(FPIC)
-
-CONFIGURE_ARGS += \
-	--enable-utf8 \
-	--enable-unicode-properties \
-
-ifneq ($(CONFIG_PACKAGE_libpcrecpp),)
-  CONFIGURE_ARGS+= --enable-cpp
-else
-  CONFIGURE_ARGS+= --disable-cpp
-endif
-
-MAKE_FLAGS += \
-	CFLAGS="$(TARGET_CFLAGS)"
-
-define Build/InstallDev
-	$(INSTALL_DIR) $(1)/usr/bin
-	$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/pcre-config $(1)/usr/bin/
-
-	$(INSTALL_DIR) $(2)/bin
-	$(LN) $(STAGING_DIR)/usr/bin/pcre-config $(2)/bin
-
-	$(INSTALL_DIR) $(1)/usr/include
-	$(CP) $(PKG_INSTALL_DIR)/usr/include/pcre*.h $(1)/usr/include/
-
-	$(INSTALL_DIR) $(1)/usr/lib
-	$(CP) $(PKG_INSTALL_DIR)/usr/lib/libpcre*.{a,so*} $(1)/usr/lib//
-
-	$(INSTALL_DIR) $(1)/usr/lib/pkgconfig
-	$(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libpcre*.pc $(1)/usr/lib/pkgconfig/
-
-endef
-
-define Package/libpcre/install
-	$(INSTALL_DIR) $(1)/usr/lib
-	$(CP) $(PKG_INSTALL_DIR)/usr/lib/libpcre{,posix}.so.* $(1)/usr/lib/
-endef
-
-define Package/libpcrecpp/install
-	$(INSTALL_DIR) $(1)/usr/lib
-	$(CP) $(PKG_INSTALL_DIR)/usr/lib/libpcrecpp.so.* $(1)/usr/lib/
-endef
-
-$(eval $(call BuildPackage,libpcre))
-$(eval $(call BuildPackage,libpcrecpp))
-

--- a/libs/pcre/patches/750-pcre_config_cross.patch
+++ /dev/null
@@ -1,27 +1,1 @@
---- a/pcre-config.in
-+++ b/pcre-config.in
-@@ -24,6 +24,10 @@ case `uname -s` in
-   libR=" -Wl,-R@libdir@"
-   ;;
- esac
-+libS=
-+if test @libdir@ != /usr/lib ; then
-+  libS=-L@libdir@
-+fi
- 
- while test $# -gt 0; do
-   case "$1" in
-@@ -58,10 +62,10 @@ while test $# -gt 0; do
-       echo $includes @PCRE_STATIC_CFLAG@
-       ;;
-     --libs-posix)
--      echo -L@libdir@$libR -lpcreposix -lpcre
-+      echo $libS$libR -lpcreposix -lpcre
-       ;;
-     --libs)
--      echo -L@libdir@$libR -lpcre
-+      echo $libS$libR -lpcre
-       ;;
-     --libs-cpp)
-       if test @enable_cpp@ = yes ; then
 

--- a/libs/postgresql/Makefile
+++ /dev/null
@@ -1,253 +1,1 @@
-#
-# Copyright (C) 2006-2012 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
 
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=postgresql
-PKG_VERSION:=9.0.15
-PKG_RELEASE:=1
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_SOURCE_URL:=\
-	http://ftp9.us.postgresql.org/pub/mirrors/postgresql/source/v$(PKG_VERSION) \
-	http://ftp.be.postgresql.org/postgresql/source/v$(PKG_VERSION) \
-	ftp://ftp-archives.postgresql.org/pub/source/v$(PKG_VERSION)
-PKG_MD5SUM:=1bd7f659c4f68e5fc23511c6952b494b
-PKG_BUILD_PARALLEL:=1
-PKG_USE_MIPS16:=0
-PKG_FIXUP:=autoreconf
-
-include $(INCLUDE_DIR)/package.mk
-
-define Package/libpq
-  SECTION:=libs
-  CATEGORY:=Libraries
-  DEPENDS:=+zlib +libreadline +libpthread +libncurses +shadow-su
-  TITLE:=PostgreSQL client library
-  URL:=http://www.postgresql.org/
-  SUBMENU:=database
-endef
-
-define Package/libpq/description
-PostgreSQL client library.
-endef
-
-define Package/pgsql-cli
-  SECTION:=utils
-  CATEGORY:=Utilities
-  DEPENDS:=+libpq
-  TITLE:=Command Line Interface (CLI) to PostgreSQL databases
-  URL:=http://www.postgresql.org/
-  SUBMENU:=database
-endef
-
-define Package/pgsql-cli/description
-Command Line Interface (CLI) to PostgreSQL databases.
-endef
-
-define Package/pgsql-server
-  SECTION:=utils
-  CATEGORY:=Utilities
-  DEPENDS:=+libpq
-  TITLE:=PostgreSQL databases Server
-  URL:=http://www.postgresql.org/
-  SUBMENU:=database
-endef
-
-define Package/pgsql-server/description
-PostgreSQL databases Server.
-endef
-
-# Need a native ecpg ,pg_config, and zic for build
-define Build/Configure
-	(cd $(PKG_BUILD_DIR); rm -f config.cache; \
-		./configure \
-			--prefix=/usr \
-			--exec-prefix=/usr \
-			--bindir=/usr/bin \
-			--datadir=/usr/share \
-			--includedir=/usr/include \
-			--infodir=/usr/share/info \
-			--libdir=/usr/lib \
-			--libexecdir=/usr/lib \
-			--localstatedir=/var \
-			--mandir=/usr/share/man \
-			--sbindir=/usr/sbin \
-			--sysconfdir=/etc \
-			$(DISABLE_NLS) \
-			--enable-shared \
-			--enable-static \
-			--disable-integer-datetimes \
-			--disable-rpath \
-			--without-java \
-			--without-krb4 \
-			--without-krb5 \
-			--without-openssl \
-			--without-pam \
-			--without-perl \
-			--without-python \
-			--without-readline \
-			--without-rendezvous \
-			--without-tcl \
-			--without-tk \
-			--with-zlib="yes" \
-			--enable-depend \
-			--with-system-timezone=/tmp \
-	);
-	$(MAKE) -C $(PKG_BUILD_DIR)/src/interfaces/ecpg/preproc CC="$(HOSTCC)" CFLAGS+="-I../../libpq"
-	mv $(PKG_BUILD_DIR)/src/interfaces/ecpg/preproc/ecpg \
-		$(PKG_BUILD_DIR)/src/interfaces/ecpg/preproc/ecpg.host
-	$(MAKE) -C $(PKG_BUILD_DIR)/src/timezone CC="$(HOSTCC)"
-	mv $(PKG_BUILD_DIR)/src/timezone/zic $(PKG_BUILD_DIR)/host-zic
-	$(INSTALL_DIR) $(STAGING_DIR)/host/bin/
-	$(CP) $(PKG_BUILD_DIR)/host-zic $(STAGING_DIR)/host/bin/zic
-	$(MAKE) -C $(PKG_BUILD_DIR)/src/bin/pg_config CC="$(HOSTCC)"
-	mv $(PKG_BUILD_DIR)/src/bin/pg_config/pg_config \
-		$(PKG_BUILD_DIR)/src/bin/pg_config/pg_config.host
-	$(MAKE) -C $(PKG_BUILD_DIR) distclean
-
-	(cd $(PKG_BUILD_DIR); rm -f config.cache; \
-		$(TARGET_CONFIGURE_OPTS) \
-		CFLAGS="$(TARGET_CFLAGS)" \
-		CPPFLAGS="$$$$CPPFLAGS $(TARGET_CPPFLAGS)" \
-		LDFLAGS="$(TARGET_LDFLAGS)" \
-		./configure \
-			--target=$(GNU_TARGET_NAME) \
-			--host=$(GNU_TARGET_NAME) \
-			--build=$(GNU_HOST_NAME) \
-			--program-prefix="" \
-			--program-suffix="" \
-			--prefix=/usr \
-			--exec-prefix=/usr \
-			--bindir=/usr/bin \
-			--datadir=/usr/share \
-			--includedir=/usr/include \
-			--infodir=/usr/share/info \
-			--libdir=/usr/lib \
-			--libexecdir=/usr/lib \
-			--localstatedir=/var \
-			--mandir=/usr/share/man \
-			--sbindir=/usr/sbin \
-			--sysconfdir=/etc \
-			$(DISABLE_NLS) \
-			$(DISABLE_LARGEFILE) \
-			--enable-shared \
-			--enable-static \
-			--disable-integer-datetimes \
-			--disable-rpath \
-			--without-java \
-			--without-krb4 \
-			--without-krb5 \
-			--without-openssl \
-			--without-pam \
-			--without-perl \
-			--without-python \
-			--without-rendezvous \
-			--without-tcl \
-			--without-tk \
-			--with-zlib="yes" \
-			--enable-depend \
-			$(if $(CONFIG_TARGET_avr32),--disable-spinlocks) \
-	);
-	$(SED) 's@ECPG = ../../preproc/ecpg@ECPG = ../../preproc/ecpg.host@' $(PKG_BUILD_DIR)/src/interfaces/ecpg/test/Makefile.regress
-endef
-
-TARGET_CFLAGS += $(FPIC) -lpthread
-
-# because PROFILE means something else in the project Makefile
-unexport PROFILE
-
-define Build/Compile
-	+$(MAKE) $(PKG_JOBS) -C "$(PKG_BUILD_DIR)" \
-		DESTDIR="$(PKG_INSTALL_DIR)" \
-		all
-	+$(MAKE) $(PKG_JOBS) -C "$(PKG_BUILD_DIR)" \
-		DESTDIR="$(PKG_INSTALL_DIR)" \
-		install
-endef
-
-define Package/libpq/install
-	$(INSTALL_DIR) $(1)/usr/lib
-	$(CP) $(PKG_INSTALL_DIR)/usr/lib/libpq.so.* $(1)/usr/lib/
-endef
-
-define Package/pgsql-cli/install
-	$(INSTALL_DIR) $(1)/usr/bin
-	$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/psql $(1)/usr/bin/
-endef
-
-define Package/pgsql-server/install
-	$(INSTALL_DIR) $(1)/usr/bin
-	$(INSTALL_DIR) $(1)/usr/share/postgresql
-	$(INSTALL_DIR) $(1)/usr/lib
-	$(INSTALL_DIR) $(1)/etc/init.d
-	$(INSTALL_DIR) $(1)/etc/config
-	$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/* $(1)/usr/bin
-	ln -sf postgres $(1)/usr/bin/postmaster
-
-	$(INSTALL_BIN) ./files/postgresql.init $(1)/etc/init.d/postgresql
-
-	$(CP) -r $(PKG_INSTALL_DIR)/usr/share/postgresql/* \
-		$(1)/usr/share/postgresql
-
-	$(INSTALL_DATA) ./files/postgresql.config $(1)/etc/config/postgresql
-
-	$(CP) -r \
-		$(PKG_INSTALL_DIR)/usr/lib/postgresql \
-		$(1)/usr/lib
-endef
-
-define Package/pgsql-server/conffiles
-/etc/config/postgresql
-endef
-
-define Package/pgsql-server/postinst
-#!/bin/sh
-grep -q '^postgres:' /etc/passwd && exit 0
-group=$$(grep '^postgres:' /etc/group | cut -f3 -d:)
-if [ -z "$${group}" ] ; then
-	group=1000
-	tst=$$(cat /etc/group | grep ":$${group}:")
-	while [ -n "$${tst}" ] ; do
-		group=$$(($${group}+1))
-		tst=$$(cat /etc/group | grep ":$${group}:")
-	done
-	echo "postgres:x:$${group}:" >>/etc/group
-fi
-
-user=$$(cat /etc/passwd | grep "^postgres:")
-if [ -z "$${user}" ] ; then
-	num="$${group}"
-	tst=$$(cat /etc/passwd | grep ":.*:$${num}:")
-	while [ -n "$${tst}" ] ; do
-		num=$$(($${num}+1))
-		tst=$$(cat /etc/passwd | grep ":.*:$${num}:")
-	done
-	echo "postgres:*:$${num}:$${group}:PostgreSQL administrator:/tmp:/bin/ash" >>/etc/passwd
-fi
-endef
-
-define Build/InstallDev
-	$(INSTALL_DIR) $(1)/usr/bin
-	$(INSTALL_BIN) $(PKG_BUILD_DIR)/src/bin/pg_config/pg_config.host $(1)/usr/bin/pg_config
-	$(INSTALL_DIR) $(1)/usr/include
-	$(CP) $(PKG_INSTALL_DIR)/usr/include/libpq $(1)/usr/include/
-	$(CP) $(PKG_INSTALL_DIR)/usr/include/libpq-fe.h $(1)/usr/include/
-	$(CP) $(PKG_INSTALL_DIR)/usr/include/pg_config.h $(1)/usr/include/
-	$(CP) $(PKG_INSTALL_DIR)/usr/include/pg_config_manual.h $(1)/usr/include/
-	$(CP) $(PKG_INSTALL_DIR)/usr/include/postgres_ext.h $(1)/usr/include/
-	$(CP) $(PKG_INSTALL_DIR)/usr/include/postgresql $(1)/usr/include/
-	$(INSTALL_DIR) $(1)/usr/lib
-	$(CP) $(PKG_INSTALL_DIR)/usr/lib/libpq.{a,so*} $(1)/usr/lib/
-	$(CP) $(PKG_BUILD_DIR)/src/interfaces/ecpg/preproc/ecpg.host $(1)/usr/bin/ecpg
-	$(CP) $(PKG_BUILD_DIR)/host-zic $(1)/usr/bin/zic
-endef
-
-$(eval $(call BuildPackage,libpq))
-$(eval $(call BuildPackage,pgsql-cli))
-$(eval $(call BuildPackage,pgsql-server))
-

--- a/libs/postgresql/files/postgresql.config
+++ /dev/null
@@ -1,6 +1,1 @@
-config postgresql config
-	option PGUSER	postgres
-	option PGDATA	/var/postgresql/data
-	option PGLOG	/var/postgresql/data/postgresql.log
-	option PG_CTL	/usr/bin/pg_ctl
 

--- a/libs/postgresql/files/postgresql.init
+++ /dev/null
@@ -1,94 +1,1 @@
-#!/bin/sh /etc/rc.common
-# Copyright (C) 2006 OpenWrt.org
-START=50
 
-EXTRA_COMMANDS="status reload"
-
-config_load "postgresql"
-config_get pgdata config PGDATA
-config_get pguser config PGUSER
-config_get pgctl config PG_CTL
-config_get pglog config PGLOG
-
-start() {
-    if [ ! -e /usr/bin/su ]; then
-        echo "The su command is requred to run postgres"
-        exit 1
-    fi
-
-    if [ ! -d ${pgdata} ]; then
-        echo "Create the data directory (${pgdata}) and try again"
-        exit 1
-    fi
-
-    echo "starting postgres..."
-    # make sure localhost (without a dot) is in /etc/hosts
-    grep -q 'localhost$' /etc/hosts || echo '127.0.0.1 localhost' >> /etc/hosts
-
-    # for whatever reason, /dev/null gets wrong perms
-    chmod a+w /dev/null
-
-    if [ -f ${pgdata}/postmaster.pid ]; then
-        rm ${pgdata}/postmaster.pid
-    fi
-
-    config_get pgopts config PGOPTS
-    if [ -n "${pgopts}" ]; then
-        pgopts="-o ${pgopts}"
-    fi
-    /usr/bin/su ${pguser} -c "/usr/bin/postmaster -D '${pgdata}' &" >> ${pglog} 2>&1
-
-    while :
-    do
-        cnt=$((${cnt} + 1))
-        if [ -f "${pgdata}/postmaster.pid" ]; then
-            ret=0
-            break
-        fi
-
-        if [ ${cnt} -eq 30 ]; then
-            echo "Postgres failed to start.  See ${pglog} for details"
-            ret=1
-            break
-        fi
-        sleep 1
-    done
-
-    echo "ok"
-    return ${ret}
-}
-
-stop() {
-    echo "stopping postgres..."
-    /usr/bin/su ${pguser} -c "${pgctl} stop -D '${pgdata}' -s -m fast"
-    ret=$?
-    if [ -f ${pgdata}/postmaster.pid ]; then
-        rm ${pgdata}/postmaster.pid
-    fi
-    echo "ok"
-    return ${ret}
-}
-
-restart() {
-    echo "restarting postgres..."
-    /usr/bin/su ${pguser} -c "${pgctl} stop -D '${pgdata}' -s -m fast -w"
-    if [ -f ${pgdata}/postmaster.pid ]; then
-        rm ${pgdata}/postmaster.pid
-    fi
-    /usr/bin/su ${pguser} -c "/usr/bin/postmaster -D '${pgdata}' &" >> ${pglog} 2>&1
-    echo "ok"
-    return $?
-}
-
-reload() {
-    echo "reloading postgres..."
-    /usr/bin/su ${pguser} -c "${pgctl} reload -D '${pgdata}' -s"
-    echo "ok"
-}
-
-status() {
-    echo "status postgres..."
-    /usr/bin/su ${pguser} -c "${pgctl} status -D '${pgdata}'"
-    echo "ok"
-}
-

--- a/libs/postgresql/patches/200-ranlib.patch
+++ /dev/null
@@ -1,11 +1,1 @@
---- a/src/port/Makefile
-+++ b/src/port/Makefile
-@@ -53,6 +53,7 @@ uninstall:
- 
- libpgport.a: $(OBJS)
- 	$(AR) $(AROPT) $@ $^
-+	$(RANLIB) libpgport.a
- 
- # thread.o needs PTHREAD_CFLAGS (but thread_srv.o does not)
- thread.o: thread.c
 

--- a/libs/postgresql/patches/800-busybox-default-pager.patch
+++ /dev/null
@@ -1,14 +1,1 @@
---- a/src/bin/psql/print.h
-+++ b/src/bin/psql/print.h
-@@ -171,10 +171,6 @@ extern void printQuery(const PGresult *r
- extern void setDecimalLocale(void);
- extern const printTextFormat *get_line_style(const printTableOpt *opt);
- 
--#ifndef __CYGWIN__
--#define DEFAULT_PAGER "more"
--#else
- #define DEFAULT_PAGER "less"
--#endif
- 
- #endif   /* PRINT_H */
 

file:a/libs/protobuf/Makefile (deleted)
--- a/libs/protobuf/Makefile
+++ /dev/null
@@ -1,75 +1,1 @@
-#
-# Copyright (C) 2007 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
 
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=protobuf
-PKG_VERSION:=2.4.1
-PKG_RELEASE:=1
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_SOURCE_URL:=http://protobuf.googlecode.com/files
-PKG_MD5SUM:=ed436802019c9e1f40cc750eaf78f318
-
-PKG_BUILD_DEPENDS:=protobuf/host
-
-PKG_INSTALL:=1
-
-include $(INCLUDE_DIR)/package.mk
-include $(INCLUDE_DIR)/host-build.mk
-
-define Package/protobuf
-  SECTION:=libs
-  CATEGORY:=Libraries
-  TITLE:=A structured data encoding library
-  URL:=http://code.google.com/p/protobuf/
-  DEPENDS:=+zlib +libpthread +libstdcpp
-  MAINTAINER:=Obinou <obconseil@gmail.com>
-endef
-
-define Package/protobuf/description
- Protocol Buffers are a way of encoding structured data in an efficient
- yet extensible format. Google uses Protocol Buffers for almost all
- of its internal RPC protocols and file formats.
-endef
-
-CONFIGURE_ARGS += --with-protoc=$(STAGING_DIR_HOST)/bin/protoc
-
-define Build/InstallDev
-	$(INSTALL_DIR) \
-		$(1)/usr/lib \
-		$(1)/usr/include
-
-	$(CP) \
-		$(PKG_INSTALL_DIR)/usr/include/* \
-		$(1)/usr/include/
-
-	$(CP) \
-		$(PKG_INSTALL_DIR)/usr/lib/* \
-		$(1)/usr/lib/
-endef
-
-define Package/protobuf/install
-	$(INSTALL_DIR) \
-		$(1)/usr/lib
-
-	$(CP) \
-		$(PKG_INSTALL_DIR)/usr/lib/libprotoc.so*  \
-		$(1)/usr/lib/
-
-	$(CP) \
-		$(PKG_INSTALL_DIR)/usr/lib/libprotobuf-lite.so* \
-		$(1)/usr/lib/
-
-	$(CP) \
-		$(PKG_INSTALL_DIR)/usr/lib/libprotobuf.so* \
-		$(1)/usr/lib/
-endef
-
-$(eval $(call BuildPackage,protobuf))
-$(eval $(call HostBuild))
-

file:a/libs/speex/Makefile (deleted)
--- a/libs/speex/Makefile
+++ /dev/null
@@ -1,104 +1,1 @@
-#
-# Copyright (C) 2006-2010 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
 
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=speex
-PKG_VERSION:=1.2rc1
-PKG_RELEASE:=1
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=http://downloads.us.xiph.org/releases/speex/
-PKG_MD5SUM:=c4438b22c08e5811ff10e2b06ee9b9ae
-
-PKG_FIXUP:=autoreconf
-
-include $(INCLUDE_DIR)/package.mk
-
-define Package/libspeex
-  SECTION:=libs
-  CATEGORY:=Libraries
-  TITLE:=Open source speech compression codec library
-  URL:=http://www.speex.org/
-endef
-
-define Package/libspeexdsp
-  SECTION:=libs
-  CATEGORY:=Libraries
-  TITLE:=Open source speech compression codec library output to DSP
-  URL:=http://www.speex.org/
-endef
-
-define Package/libspeex/description
-	Open source patent-free speech compression codec library.
-	Speex is an Open Source/Free Software patent-free audio compression
-	format designed for speech. The Speex Project aims to lower the
-	barrier of entry for voice applications by providing a free
-	alternative to expensive proprietary speech codecs. Moreover, Speex
-	is well-adapted to Internet applications and provides useful features
-	that are not present in most other codecs.
-
-	This package contains the shared codec library, needed by other programs.
-endef
-
-TARGET_CFLAGS += $(FPIC)
-
-define Package/libspeexdsp/description
-	Open source patent-free speech compression codec library.
-	Speex is an Open Source/Free Software patent-free audio compression
-	format designed for speech. The Speex Project aims to lower the
-	barrier of entry for voice applications by providing a free
-	alternative to expensive proprietary speech codecs. Moreover, Speex
-	is well-adapted to Internet applications and provides useful features
-	that are not present in most other codecs.
-
-	This package contains the shared dsp library, needed by other programs.
-endef
-
-define Build/Configure
-	$(call Build/Configure/Default, \
-		--enable-shared \
-		--enable-static \
-		--enable-fixed-point \
-		--disable-oggtest \
-		--disable-float-api \
-		--disable-vbr \
-		--with-ogg=$(STAGING_DIR)/usr \
-	)
-endef
-
-define Build/Compile
-	$(MAKE) -C $(PKG_BUILD_DIR) \
-		DESTDIR="$(PKG_INSTALL_DIR)" \
-		bin_PROGRAMS="" \
-		all install
-endef
-
-define Build/InstallDev
-	$(INSTALL_DIR) $(1)/usr/include
-	$(CP) $(PKG_INSTALL_DIR)/usr/include/speex $(1)/usr/include/
-	$(INSTALL_DIR) $(1)/usr/lib
-	$(CP) $(PKG_INSTALL_DIR)/usr/lib/libspeex.{a,so*} $(1)/usr/lib/
-	$(CP) $(PKG_INSTALL_DIR)/usr/lib/libspeexdsp.{a,so*} $(1)/usr/lib/
-	$(INSTALL_DIR) $(1)/usr/lib/pkgconfig
-	$(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/speex.pc $(1)/usr/lib/pkgconfig/
-	$(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/speexdsp.pc $(1)/usr/lib/pkgconfig/
-endef
-
-define Package/libspeex/install
-	$(INSTALL_DIR) $(1)/usr/lib
-	$(CP) $(PKG_INSTALL_DIR)/usr/lib/libspeex.so.* $(1)/usr/lib/
-endef
-
-define Package/libspeexdsp/install
-	$(INSTALL_DIR) $(1)/usr/lib
-	$(CP) $(PKG_INSTALL_DIR)/usr/lib/libspeexdsp.so.* $(1)/usr/lib/
-endef
-
-$(eval $(call BuildPackage,libspeex))
-$(eval $(call BuildPackage,libspeexdsp))
-

--- a/libs/tcp_wrappers/Makefile
+++ /dev/null
@@ -1,65 +1,1 @@
-#
-# Copyright (C) 2006 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
 
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=tcp_wrappers
-PKG_VERSION:=7.6
-PKG_RELEASE:=1
-
-PKG_SOURCE:=$(PKG_NAME)_$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=ftp://ftp.porcupine.org/pub/security
-PKG_MD5SUM:=e6fa25f71226d090f34de3f6b122fb5a
-
-PKG_LICENSE:=BSD
-PKG_LICENE_FILES:=DISCLAIMER
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)_$(PKG_VERSION)
-
-include $(INCLUDE_DIR)/package.mk
-
-define Package/libwrap
-  SECTION:=libs
-  CATEGORY:=Libraries
-  TITLE:=Security wrapper library for TCP services
-  URL:=ftp://ftp.porcupine.org/pub/security/index.html
-endef
-
-TARGET_CFLAGS += $(FPIC)
-
-define Build/Compile	
-	$(MAKE) -C $(PKG_BUILD_DIR) \
-		$(TARGET_CONFIGURE_OPTS) \
-		OPT_CFLAGS="$(TARGET_CFLAGS)" \
-		LIBS=-lnsl \
-		NETGROUP= \
-		VSYSLOG= \
-		BUGS= \
-		EXTRA_CFLAGS="-DSYS_ERRLIST_DEFINED -DHAVE_STRERROR -DHAVE_WEAKSYMS -D_REENTRANT -DINET6=1 \
-			-Dss_family=__ss_family -Dss_len=__ss_len" \
-		FACILITY=LOG_DAEMON \
-		SEVERITY=LOG_INFO \
-		REAL_DAEMON_DIR=/usr/sbin \
-		STYLE="-DPROCESS_OPTIONS" \
-		tidy all
-endef
-
-define Build/InstallDev	
-	$(INSTALL_DIR) $(1)/usr/include
-	$(CP) $(PKG_BUILD_DIR)/tcpd.h $(1)/usr/include/
-	$(INSTALL_DIR) $(1)/usr/lib
-	$(CP) $(PKG_BUILD_DIR)/libwrap.a $(1)/usr/lib/
-	$(CP) $(PKG_BUILD_DIR)/shared/libwrap.so* $(1)/usr/lib/
-endef
-
-define Package/libwrap/install	
-	$(INSTALL_DIR) $(1)/usr/lib
-	$(CP) $(PKG_BUILD_DIR)/shared/libwrap.so.* $(1)/usr/lib/
-endef
-	
-$(eval $(call BuildPackage,libwrap))
-

--- a/libs/tcp_wrappers/patches/001-debian_subset.patch
+++ /dev/null
@@ -1,937 +1,1 @@
---- a/hosts_access.c
-+++ b/hosts_access.c
-@@ -240,6 +240,26 @@ struct request_info *request;
-     }
- }
- 
-+/* hostfile_match - look up host patterns from file */
-+
-+static int hostfile_match(path, host)
-+char   *path;
-+struct hosts_info *host;
-+{
-+    char    tok[BUFSIZ];
-+    int     match = NO;
-+    FILE   *fp;
-+
-+    if ((fp = fopen(path, "r")) != 0) {
-+        while (fscanf(fp, "%s", tok) == 1 && !(match = host_match(tok, host)))
-+            /* void */ ;
-+        fclose(fp);
-+    } else if (errno != ENOENT) {
-+        tcpd_warn("open %s: %m", path);
-+    }
-+    return (match);
-+}
-+
- /* host_match - match host name and/or address against pattern */
- 
- static int host_match(tok, host)
-@@ -267,6 +287,8 @@ struct host_info *host;
- 	tcpd_warn("netgroup support is disabled");	/* not tcpd_jump() */
- 	return (NO);
- #endif
-+    } else if (tok[0] == '/') {                         /* /file hack */
-+        return (hostfile_match(tok, host));
-     } else if (STR_EQ(tok, "KNOWN")) {		/* check address and name */
- 	char   *name = eval_hostname(host);
- 	return (STR_NE(eval_hostaddr(host), unknown) && HOSTNAME_KNOWN(name));
---- a/tcpd.h
-+++ b/tcpd.h
-@@ -4,6 +4,25 @@
-   * Author: Wietse Venema, Eindhoven University of Technology, The Netherlands.
-   */
- 
-+#ifndef _TCPWRAPPERS_TCPD_H
-+#define _TCPWRAPPERS_TCPD_H
-+
-+/* someone else may have defined this */
-+#undef  __P
-+
-+/* use prototypes if we have an ANSI C compiler or are using C++ */
-+#if defined(__STDC__) || defined(__cplusplus)
-+#define __P(args)       args
-+#else
-+#define __P(args)       ()
-+#endif
-+
-+/* Need definitions of struct sockaddr_in and FILE. */
-+#include <netinet/in.h>
-+#include <stdio.h>
-+
-+__BEGIN_DECLS
-+
- /* Structure to describe one communications endpoint. */
- 
- #define STRING_LENGTH	128		/* hosts, users, processes */
-@@ -25,10 +44,10 @@ struct request_info {
-     char    pid[10];			/* access via eval_pid(request) */
-     struct host_info client[1];		/* client endpoint info */
-     struct host_info server[1];		/* server endpoint info */
--    void  (*sink) ();			/* datagram sink function or 0 */
--    void  (*hostname) ();		/* address to printable hostname */
--    void  (*hostaddr) ();		/* address to printable address */
--    void  (*cleanup) ();		/* cleanup function or 0 */
-+    void  (*sink) __P((int));		/* datagram sink function or 0 */
-+    void  (*hostname) __P((struct host_info *)); /* address to printable hostname */
-+    void  (*hostaddr) __P((struct host_info *)); /* address to printable address */
-+    void  (*cleanup) __P((struct request_info *)); /* cleanup function or 0 */
-     struct netconfig *config;		/* netdir handle */
- };
- 
-@@ -61,25 +80,30 @@ extern char paranoid[];
- /* Global functions. */
- 
- #if defined(TLI) || defined(PTX) || defined(TLI_SEQUENT)
--extern void fromhost();			/* get/validate client host info */
-+extern void fromhost __P((struct request_info *));	/* get/validate client host info */
- #else
- #define fromhost sock_host		/* no TLI support needed */
- #endif
- 
--extern int hosts_access();		/* access control */
--extern void shell_cmd();		/* execute shell command */
--extern char *percent_x();		/* do %<char> expansion */
--extern void rfc931();			/* client name from RFC 931 daemon */
--extern void clean_exit();		/* clean up and exit */
--extern void refuse();			/* clean up and exit */
--extern char *xgets();			/* fgets() on steroids */
--extern char *split_at();		/* strchr() and split */
--extern unsigned long dot_quad_addr();	/* restricted inet_addr() */
-+extern void shell_cmd __P((char *));	/* execute shell command */
-+extern char *percent_x __P((char *, int, char *, struct request_info *)); /* do %<char> expansion */
-+extern void rfc931 __P((struct sockaddr_in *, struct sockaddr_in *, char *)); /* client name from RFC 931 daemon */
-+extern void clean_exit __P((struct request_info *)); /* clean up and exit */
-+extern void refuse __P((struct request_info *));	/* clean up and exit */
-+extern char *xgets __P((char *, int, FILE *));	/* fgets() on steroids */
-+extern char *split_at __P((char *, int));	/* strchr() and split */
-+extern unsigned long dot_quad_addr __P((char *)); /* restricted inet_addr() */
- 
- /* Global variables. */
- 
-+#ifdef HAVE_WEAKSYMS
-+extern int allow_severity __attribute__ ((weak)); /* for connection logging */
-+extern int deny_severity __attribute__ ((weak)); /* for connection logging */
-+#else
- extern int allow_severity;		/* for connection logging */
- extern int deny_severity;		/* for connection logging */
-+#endif
-+
- extern char *hosts_allow_table;		/* for verification mode redirection */
- extern char *hosts_deny_table;		/* for verification mode redirection */
- extern int hosts_access_verbose;	/* for verbose matching mode */
-@@ -92,9 +116,14 @@ extern int resident;			/* > 0 if residen
-   */
- 
- #ifdef __STDC__
-+extern int hosts_access(struct request_info *request);
-+extern int hosts_ctl(char *daemon, char *client_name, char *client_addr, 
-+                     char *client_user);
- extern struct request_info *request_init(struct request_info *,...);
- extern struct request_info *request_set(struct request_info *,...);
- #else
-+extern int hosts_access();
-+extern int hosts_ctl();
- extern struct request_info *request_init();	/* initialize request */
- extern struct request_info *request_set();	/* update request structure */
- #endif
-@@ -117,27 +146,31 @@ extern struct request_info *request_set(
-   * host_info structures serve as caches for the lookup results.
-   */
- 
--extern char *eval_user();		/* client user */
--extern char *eval_hostname();		/* printable hostname */
--extern char *eval_hostaddr();		/* printable host address */
--extern char *eval_hostinfo();		/* host name or address */
--extern char *eval_client();		/* whatever is available */
--extern char *eval_server();		/* whatever is available */
-+extern char *eval_user __P((struct request_info *));	/* client user */
-+extern char *eval_hostname __P((struct host_info *));	/* printable hostname */
-+extern char *eval_hostaddr __P((struct host_info *));	/* printable host address */
-+extern char *eval_hostinfo __P((struct host_info *));	/* host name or address */
-+extern char *eval_client __P((struct request_info *));	/* whatever is available */
-+extern char *eval_server __P((struct request_info *));	/* whatever is available */
- #define eval_daemon(r)	((r)->daemon)	/* daemon process name */
- #define eval_pid(r)	((r)->pid)	/* process id */
- 
- /* Socket-specific methods, including DNS hostname lookups. */
- 
--extern void sock_host();		/* look up endpoint addresses */
--extern void sock_hostname();		/* translate address to hostname */
--extern void sock_hostaddr();		/* address to printable address */
-+/* look up endpoint addresses */
-+extern void sock_host __P((struct request_info *));
-+/* translate address to hostname */
-+extern void sock_hostname __P((struct host_info *));
-+/* address to printable address */
-+extern void sock_hostaddr __P((struct host_info *));
-+
- #define sock_methods(r) \
- 	{ (r)->hostname = sock_hostname; (r)->hostaddr = sock_hostaddr; }
- 
- /* The System V Transport-Level Interface (TLI) interface. */
- 
- #if defined(TLI) || defined(PTX) || defined(TLI_SEQUENT)
--extern void tli_host();			/* look up endpoint addresses etc. */
-+extern void tli_host __P((struct request_info *));	/* look up endpoint addresses etc. */
- #endif
- 
-  /*
-@@ -178,7 +211,7 @@ extern struct tcpd_context tcpd_context;
-   * behavior.
-   */
- 
--extern void process_options();		/* execute options */
-+extern void process_options __P((char *, struct request_info *)); /* execute options */
- extern int dry_run;			/* verification flag */
- 
- /* Bug workarounds. */
-@@ -217,3 +250,7 @@ extern char *fix_strtok();
- #define strtok	my_strtok
- extern char *my_strtok();
- #endif
-+
-+__END_DECLS
-+
-+#endif /* tcpd.h */
---- a/Makefile
-+++ b/Makefile
-@@ -1,5 +1,10 @@
-+GLIBC=$(shell grep -s -c __GLIBC__ /usr/include/features.h)
-+
- # @(#) Makefile 1.23 97/03/21 19:27:20
- 
-+# unset the HOSTNAME environment variable
-+HOSTNAME =
-+
- what:
- 	@echo
- 	@echo "Usage: edit the REAL_DAEMON_DIR definition in the Makefile then:"
-@@ -19,7 +24,7 @@ what:
- 	@echo "	generic (most bsd-ish systems with sys5 compatibility)"
- 	@echo "	386bsd aix alpha apollo bsdos convex-ultranet dell-gcc dgux dgux543"
- 	@echo "	dynix epix esix freebsd hpux irix4 irix5 irix6 isc iunix"
--	@echo "	linux machten mips(untested) ncrsvr4 netbsd next osf power_unix_211"
-+	@echo "	linux gnu machten mips(untested) ncrsvr4 netbsd next osf power_unix_211"
- 	@echo "	ptx-2.x ptx-generic pyramid sco sco-nis sco-od2 sco-os5 sinix sunos4"
- 	@echo "	sunos40 sunos5 sysv4 tandem ultrix unicos7 unicos8 unixware1 unixware2"
- 	@echo "	uts215 uxp"
-@@ -43,8 +48,8 @@ what:
- # Ultrix 4.x SunOS 4.x ConvexOS 10.x Dynix/ptx
- #REAL_DAEMON_DIR=/usr/etc
- #
--# SysV.4 Solaris 2.x OSF AIX
--#REAL_DAEMON_DIR=/usr/sbin
-+# SysV.4 Solaris 2.x OSF AIX Linux
-+REAL_DAEMON_DIR=/usr/sbin
- #
- # BSD 4.4
- #REAL_DAEMON_DIR=/usr/libexec
-@@ -141,10 +146,21 @@ freebsd:
- 	LIBS= RANLIB=ranlib ARFLAGS=rv AUX_OBJ= NETGROUP= TLI= \
- 	EXTRA_CFLAGS=-DSYS_ERRLIST_DEFINED VSYSLOG= all
- 
-+ifneq ($(GLIBC),0)
-+MYLIB=-lnsl
-+endif
-+
- linux:
- 	@make REAL_DAEMON_DIR=$(REAL_DAEMON_DIR) STYLE=$(STYLE) \
--	LIBS= RANLIB=ranlib ARFLAGS=rv AUX_OBJ=setenv.o \
--	NETGROUP= TLI= EXTRA_CFLAGS="-DBROKEN_SO_LINGER" all
-+	LIBS=$(MYLIB) RANLIB=ranlib ARFLAGS=rv AUX_OBJ=weak_symbols.o \
-+	NETGROUP=-DNETGROUP TLI= VSYSLOG= BUGS= all \
-+	EXTRA_CFLAGS="-DSYS_ERRLIST_DEFINED -DHAVE_WEAKSYMS -D_REENTRANT"
-+
-+gnu:
-+	@make REAL_DAEMON_DIR=$(REAL_DAEMON_DIR) STYLE=$(STYLE) \
-+	LIBS=$(MYLIB) RANLIB=ranlib ARFLAGS=rv AUX_OBJ=weak_symbols.o \
-+	NETGROUP=-DNETGROUP TLI= VSYSLOG= BUGS= all \
-+	EXTRA_CFLAGS="-DHAVE_STRERROR -DHAVE_WEAKSYMS -D_REENTRANT"
- 
- # This is good for many SYSV+BSD hybrids with NIS, probably also for HP-UX 7.x.
- hpux hpux8 hpux9 hpux10:
-@@ -391,7 +407,7 @@ AR	= ar
- # the ones provided with this source distribution. The environ.c module
- # implements setenv(), getenv(), and putenv().
- 
--AUX_OBJ= setenv.o
-+#AUX_OBJ= setenv.o
- #AUX_OBJ= environ.o
- #AUX_OBJ= environ.o strcasecmp.o
- 
-@@ -454,7 +470,8 @@ AUX_OBJ= setenv.o
- # host name aliases. Compile with -DSOLARIS_24_GETHOSTBYNAME_BUG to work
- # around this. The workaround does no harm on other Solaris versions.
- 
--BUGS = -DGETPEERNAME_BUG -DBROKEN_FGETS -DLIBC_CALLS_STRTOK
-+BUGS =
-+#BUGS = -DGETPEERNAME_BUG -DBROKEN_FGETS -DLIBC_CALLS_STRTOK
- #BUGS = -DGETPEERNAME_BUG -DBROKEN_FGETS -DINET_ADDR_BUG
- #BUGS = -DGETPEERNAME_BUG -DBROKEN_FGETS -DSOLARIS_24_GETHOSTBYNAME_BUG
- 
-@@ -464,7 +481,7 @@ BUGS = -DGETPEERNAME_BUG -DBROKEN_FGETS
- # If your system supports NIS or YP-style netgroups, enable the following
- # macro definition. Netgroups are used only for host access control.
- #
--#NETGROUP= -DNETGROUP
-+NETGROUP= -DNETGROUP
- 
- ###############################################################
- # System dependencies: whether or not your system has vsyslog()
-@@ -491,7 +508,7 @@ VSYSLOG	= -Dvsyslog=myvsyslog
- # Uncomment the next definition to turn on the language extensions
- # (examples: allow, deny, banners, twist and spawn).
- # 
--#STYLE	= -DPROCESS_OPTIONS	# Enable language extensions.
-+STYLE	= -DPROCESS_OPTIONS	# Enable language extensions.
- 
- ################################################################
- # Optional: Changing the default disposition of logfile records
-@@ -514,7 +531,7 @@ VSYSLOG	= -Dvsyslog=myvsyslog
- #
- # The LOG_XXX names below are taken from the /usr/include/syslog.h file.
- 
--FACILITY= LOG_MAIL	# LOG_MAIL is what most sendmail daemons use
-+FACILITY= LOG_DAEMON	# LOG_MAIL is what most sendmail daemons use
- 
- # The syslog priority at which successful connections are logged.
- 
-@@ -610,7 +627,7 @@ TABLES	= -DHOSTS_DENY=\"/etc/hosts.deny\
- # Paranoid mode implies hostname lookup. In order to disable hostname
- # lookups altogether, see the next section.
- 
--PARANOID= -DPARANOID
-+#PARANOID= -DPARANOID
- 
- ########################################
- # Optional: turning off hostname lookups
-@@ -623,7 +640,7 @@ PARANOID= -DPARANOID
- # In order to perform selective hostname lookups, disable paranoid
- # mode (see previous section) and comment out the following definition.
- 
--HOSTNAME= -DALWAYS_HOSTNAME
-+#HOSTNAME= -DALWAYS_HOSTNAME
- 
- #############################################
- # Optional: Turning on host ADDRESS checking
-@@ -649,28 +666,46 @@ HOSTNAME= -DALWAYS_HOSTNAME
- # source-routed traffic in the kernel. Examples: 4.4BSD derivatives,
- # Solaris 2.x, and Linux. See your system documentation for details.
- #
--# KILL_OPT= -DKILL_IP_OPTIONS
-+KILL_OPT= -DKILL_IP_OPTIONS
- 
- ## End configuration options
- ############################
- 
- # Protection against weird shells or weird make programs.
- 
-+CC	= gcc
- SHELL	= /bin/sh
--.c.o:;	$(CC) $(CFLAGS) -c $*.c
-+.c.o:;	$(CC) $(CFLAGS) -o $*.o -c $*.c
-+
-+SOMAJOR = 0
-+SOMINOR = 7.6
-+
-+LIB	= libwrap.a
-+SHLIB	= shared/libwrap.so.$(SOMAJOR).$(SOMINOR)
-+SHLIBSOMAJ= shared/libwrap.so.$(SOMAJOR)
-+SHLIBSO	= shared/libwrap.so
-+SHLIBFLAGS = -Lshared -lwrap
- 
--CFLAGS	= -O -DFACILITY=$(FACILITY) $(ACCESS) $(PARANOID) $(NETGROUP) \
-+shared/%.o: %.c
-+	$(CC) $(CFLAGS) $(SHCFLAGS) -c $< -o $@
-+
-+CFLAGS	= -O2 -g -DFACILITY=$(FACILITY) $(ACCESS) $(PARANOID) $(NETGROUP) \
- 	$(BUGS) $(SYSTYPE) $(AUTH) $(UMASK) \
- 	-DREAL_DAEMON_DIR=\"$(REAL_DAEMON_DIR)\" $(STYLE) $(KILL_OPT) \
- 	-DSEVERITY=$(SEVERITY) -DRFC931_TIMEOUT=$(RFC931_TIMEOUT) \
- 	$(UCHAR) $(TABLES) $(STRINGS) $(TLI) $(EXTRA_CFLAGS) $(DOT) \
- 	$(VSYSLOG) $(HOSTNAME)
- 
-+SHLINKFLAGS = -shared -Xlinker -soname -Xlinker libwrap.so.$(SOMAJOR) -lc $(LIBS)
-+SHCFLAGS = -fPIC -shared -D_REENTRANT
-+
- LIB_OBJ= hosts_access.o options.o shell_cmd.o rfc931.o eval.o \
- 	hosts_ctl.o refuse.o percent_x.o clean_exit.o $(AUX_OBJ) \
- 	$(FROM_OBJ) fix_options.o socket.o tli.o workarounds.o \
- 	update.o misc.o diag.o percent_m.o myvsyslog.o
- 
-+SHLIB_OBJ= $(addprefix shared/, $(LIB_OBJ));
-+
- FROM_OBJ= fromhost.o
- 
- KIT	= README miscd.c tcpd.c fromhost.c hosts_access.c shell_cmd.c \
-@@ -684,46 +719,78 @@ KIT	= README miscd.c tcpd.c fromhost.c h
- 	refuse.c tcpdchk.8 setenv.c inetcf.c inetcf.h scaffold.c \
- 	scaffold.h tcpdmatch.8 README.NIS
- 
--LIB	= libwrap.a
--
--all other: config-check tcpd tcpdmatch try-from safe_finger tcpdchk
-+all other: config-check tcpd tcpdmatch try-from safe_finger tcpdchk $(LIB)
- 
- # Invalidate all object files when the compiler options (CFLAGS) have changed.
- 
- config-check:
- 	@set +e; test -n "$(REAL_DAEMON_DIR)" || { make; exit 1; }
--	@set +e; echo $(CFLAGS) >/tmp/cflags.$$$$ ; \
--	if cmp cflags /tmp/cflags.$$$$ ; \
--	then rm /tmp/cflags.$$$$ ; \
--	else mv /tmp/cflags.$$$$ cflags ; \
-+	@set +e; echo $(CFLAGS) >cflags.new ; \
-+	if cmp cflags cflags.new ; \
-+	then rm cflags.new ; \
-+	else mv cflags.new cflags ; \
- 	fi >/dev/null 2>/dev/null
-+	@if [ ! -d shared ]; then mkdir shared; fi
- 
- $(LIB):	$(LIB_OBJ)
- 	rm -f $(LIB)
- 	$(AR) $(ARFLAGS) $(LIB) $(LIB_OBJ)
- 	-$(RANLIB) $(LIB)
- 
--tcpd:	tcpd.o $(LIB)
--	$(CC) $(CFLAGS) -o $@ tcpd.o $(LIB) $(LIBS)
-+$(SHLIB): $(SHLIB_OBJ)
-+	rm -f $(SHLIB)
-+	$(CC) -o $(SHLIB) $(SHLINKFLAGS) $(SHLIB_OBJ)
-+	ln -s $(notdir $(SHLIB)) $(SHLIBSOMAJ)
-+	ln -s $(notdir $(SHLIBSOMAJ)) $(SHLIBSO)
-+
-+tcpd:	tcpd.o $(SHLIB)
-+	$(CC) $(CFLAGS) -o $@ tcpd.o $(SHLIBFLAGS)
- 
--miscd:	miscd.o $(LIB)
--	$(CC) $(CFLAGS) -o $@ miscd.o $(LIB) $(LIBS)
-+miscd:	miscd.o $(SHLIB)
-+	$(CC) $(CFLAGS) -o $@ miscd.o $(SHLIBFLAGS)
- 
--safe_finger: safe_finger.o $(LIB)
--	$(CC) $(CFLAGS) -o $@ safe_finger.o $(LIB) $(LIBS)
-+safe_finger: safe_finger.o $(SHLIB)
-+	$(CC) $(CFLAGS) -o $@ safe_finger.o $(SHLIBFLAGS)
- 
- TCPDMATCH_OBJ = tcpdmatch.o fakelog.o inetcf.o scaffold.o
- 
--tcpdmatch: $(TCPDMATCH_OBJ) $(LIB)
--	$(CC) $(CFLAGS) -o $@ $(TCPDMATCH_OBJ) $(LIB) $(LIBS)
-+tcpdmatch: $(TCPDMATCH_OBJ) $(SHLIB)
-+	$(CC) $(CFLAGS) -o $@ $(TCPDMATCH_OBJ) $(SHLIBFLAGS)
- 
--try-from: try-from.o fakelog.o $(LIB)
--	$(CC) $(CFLAGS) -o $@ try-from.o fakelog.o $(LIB) $(LIBS)
-+try-from: try-from.o fakelog.o $(SHLIB)
-+	$(CC) $(CFLAGS) -o $@ try-from.o fakelog.o $(SHLIBFLAGS)
- 
- TCPDCHK_OBJ = tcpdchk.o fakelog.o inetcf.o scaffold.o
- 
--tcpdchk: $(TCPDCHK_OBJ) $(LIB)
--	$(CC) $(CFLAGS) -o $@ $(TCPDCHK_OBJ) $(LIB) $(LIBS)
-+tcpdchk: $(TCPDCHK_OBJ) $(SHLIB)
-+	$(CC) $(CFLAGS) -o $@ $(TCPDCHK_OBJ) $(SHLIBFLAGS)
-+
-+install: install-lib install-bin install-dev
-+
-+install-lib:
-+	install -o root -g root -m 0644 $(SHLIB) ${DESTDIR}/lib/
-+	ln -s $(notdir $(SHLIB)) ${DESTDIR}/lib/$(notdir $(SHLIBSOMAJ))
-+
-+install-bin:
-+	install -o root -g root -m 0755 tcpd ${DESTDIR}/usr/sbin/
-+	install -o root -g root -m 0755 tcpdchk ${DESTDIR}/usr/sbin/
-+	install -o root -g root -m 0755 tcpdmatch ${DESTDIR}/usr/sbin/
-+	install -o root -g root -m 0755 try-from ${DESTDIR}/usr/sbin/
-+	install -o root -g root -m 0755 safe_finger ${DESTDIR}/usr/sbin/
-+	install -o root -g root -m 0644 tcpd.8 ${DESTDIR}/usr/share/man/man8/
-+	install -o root -g root -m 0644 tcpdchk.8 ${DESTDIR}/usr/share/man/man8/
-+	install -o root -g root -m 0644 tcpdmatch.8 ${DESTDIR}/usr/share/man/man8/
-+	install -o root -g root -m 0644 hosts_access.5 ${DESTDIR}/usr/share/man/man5/
-+	install -o root -g root -m 0644 hosts_options.5 ${DESTDIR}/usr/share/man/man5/
-+
-+install-dev:
-+	ln -s /lib/$(notdir $(SHLIBSOMAJ)) ${DESTDIR}/usr/lib/$(notdir $(SHLIBSO))
-+	install -o root -g root -m 0644 hosts_access.3 ${DESTDIR}/usr/share/man/man3/
-+	install -o root -g root -m 0644 tcpd.h ${DESTDIR}/usr/include/
-+	install -o root -g root -m 0644 $(LIB) ${DESTDIR}/usr/lib/
-+	ln -s hosts_access.3 ${DESTDIR}/usr/share/man/man3/hosts_ctl.3
-+	ln -s hosts_access.3 ${DESTDIR}/usr/share/man/man3/request_init.3
-+	ln -s hosts_access.3 ${DESTDIR}/usr/share/man/man3/request_set.3
- 
- shar:	$(KIT)
- 	@shar $(KIT)
-@@ -739,7 +806,8 @@ archive:
- 
- clean:
- 	rm -f tcpd miscd safe_finger tcpdmatch tcpdchk try-from *.[oa] core \
--	cflags
-+	cflags libwrap*.so*
-+	rm -rf shared
- 
- tidy:	clean
- 	chmod -R a+r .
-@@ -885,5 +953,6 @@ update.o: cflags
- update.o: mystdarg.h
- update.o: tcpd.h
- vfprintf.o: cflags
-+weak_symbols.o: tcpd.h
- workarounds.o: cflags
- workarounds.o: tcpd.h
---- a/hosts_access.5
-+++ b/hosts_access.5
-@@ -8,9 +8,9 @@ name, host name/address) patterns.  Exam
- impatient reader is encouraged to skip to the EXAMPLES section for a
- quick introduction.
- .PP
--An extended version of the access control language is described in the
--\fIhosts_options\fR(5) document. The extensions are turned on at
--program build time by building with -DPROCESS_OPTIONS.
-+The extended version of the access control language is described in the
-+\fIhosts_options\fR(5) document. \fBNote that this language supersedes
-+the meaning of \fIshell_command\fB as documented below.\fR
- .PP
- In the following text, \fIdaemon\fR is the the process name of a
- network daemon process, and \fIclient\fR is the name and/or address of
-@@ -40,7 +40,7 @@ A newline character is ignored when it i
- character. This permits you to break up long lines so that they are
- easier to edit.
- .IP \(bu
--Blank lines or lines that begin with a `#\' character are ignored.
-+Blank lines or lines that begin with a `#' character are ignored.
- This permits you to insert comments and whitespace so that the tables
- are easier to read.
- .IP \(bu
-@@ -69,26 +69,33 @@ checks are case insensitive.
- .SH PATTERNS
- The access control language implements the following patterns:
- .IP \(bu
--A string that begins with a `.\' character. A host name is matched if
-+A string that begins with a `.' character. A host name is matched if
- the last components of its name match the specified pattern.  For
--example, the pattern `.tue.nl\' matches the host name
--`wzv.win.tue.nl\'.
-+example, the pattern `.tue.nl' matches the host name
-+`wzv.win.tue.nl'.
- .IP \(bu
--A string that ends with a `.\' character. A host address is matched if
-+A string that ends with a `.' character. A host address is matched if
- its first numeric fields match the given string.  For example, the
--pattern `131.155.\' matches the address of (almost) every host on the
-+pattern `131.155.' matches the address of (almost) every host on the
- Eind\%hoven University network (131.155.x.x).
- .IP \(bu
--A string that begins with an `@\' character is treated as an NIS
-+A string that begins with an `@' character is treated as an NIS
- (formerly YP) netgroup name. A host name is matched if it is a host
- member of the specified netgroup. Netgroup matches are not supported
- for daemon process names or for client user names.
- .IP \(bu
--An expression of the form `n.n.n.n/m.m.m.m\' is interpreted as a
--`net/mask\' pair. A host address is matched if `net\' is equal to the
--bitwise AND of the address and the `mask\'. For example, the net/mask
--pattern `131.155.72.0/255.255.254.0\' matches every address in the
--range `131.155.72.0\' through `131.155.73.255\'.
-+An expression of the form `n.n.n.n/m.m.m.m' is interpreted as a
-+`net/mask' pair. A host address is matched if `net' is equal to the
-+bitwise AND of the address and the `mask'. For example, the net/mask
-+pattern `131.155.72.0/255.255.254.0' matches every address in the
-+range `131.155.72.0' through `131.155.73.255'.
-+.IP \(bu
-+A string that begins with a `/' character is treated as a file
-+name. A host name or address is matched if it matches any host name
-+or address pattern listed in the named file. The file format is
-+zero or more lines with zero or more host name or address patterns
-+separated by whitespace.  A file name pattern can be used anywhere
-+a host name or address pattern can be used.
- .SH WILDCARDS
- The access control language supports explicit wildcards:
- .IP ALL
-@@ -115,19 +122,19 @@ without -DPARANOID when you want more co
- .ne 6
- .SH OPERATORS
- .IP EXCEPT
--Intended use is of the form: `list_1 EXCEPT list_2\'; this construct
-+Intended use is of the form: `list_1 EXCEPT list_2'; this construct
- matches anything that matches \fIlist_1\fR unless it matches
- \fIlist_2\fR.  The EXCEPT operator can be used in daemon_lists and in
- client_lists. The EXCEPT operator can be nested: if the control
--language would permit the use of parentheses, `a EXCEPT b EXCEPT c\'
--would parse as `(a EXCEPT (b EXCEPT c))\'.
-+language would permit the use of parentheses, `a EXCEPT b EXCEPT c'
-+would parse as `(a EXCEPT (b EXCEPT c))'.
- .br
- .ne 6
- .SH SHELL COMMANDS
- If the first-matched access control rule contains a shell command, that
- command is subjected to %<letter> substitutions (see next section).
- The result is executed by a \fI/bin/sh\fR child process with standard
--input, output and error connected to \fI/dev/null\fR.  Specify an `&\'
-+input, output and error connected to \fI/dev/null\fR.  Specify an `&'
- at the end of the command if you do not want to wait until it has
- completed.
- .PP
-@@ -159,7 +166,7 @@ depending on how much information is ava
- .IP %u
- The client user name (or "unknown").
- .IP %%
--Expands to a single `%\' character.
-+Expands to a single `%' character.
- .PP
- Characters in % expansions that may confuse the shell are replaced by
- underscores.
-@@ -243,9 +250,9 @@ A positive IDENT lookup result (the clie
- less trustworthy. It is possible for an intruder to spoof both the
- client connection and the IDENT lookup, although doing so is much
- harder than spoofing just a client connection. It may also be that
--the client\'s IDENT server is lying.
-+the client's IDENT server is lying.
- .PP
--Note: IDENT lookups don\'t work with UDP services. 
-+Note: IDENT lookups don't work with UDP services. 
- .SH EXAMPLES
- The language is flexible enough that different types of access control
- policy can be expressed with a minimum of fuss. Although the language
-@@ -285,7 +292,7 @@ ALL: LOCAL @some_netgroup
- .br
- ALL: .foobar.edu EXCEPT terminalserver.foobar.edu
- .PP
--The first rule permits access from hosts in the local domain (no `.\'
-+The first rule permits access from hosts in the local domain (no `.'
- in the host name) and from members of the \fIsome_netgroup\fP
- netgroup.  The second rule permits access from all hosts in the
- \fIfoobar.edu\fP domain (notice the leading dot), with the exception of
-@@ -322,8 +329,8 @@ in.tftpd: LOCAL, .my.domain
- /etc/hosts.deny:
- .in +3
- .nf
--in.tftpd: ALL: (/some/where/safe_finger -l @%h | \\
--	/usr/ucb/mail -s %d-%h root) &
-+in.tftpd: ALL: (/usr/sbin/safe_finger -l @%h | \\
-+	/usr/bin/mail -s %d-%h root) &
- .fi
- .PP
- The safe_finger command comes with the tcpd wrapper and should be
-@@ -349,7 +356,7 @@ control rule; when the length of an acce
- capacity of an internal buffer; when an access control rule is not
- terminated by a newline character; when the result of %<letter>
- expansion would overflow an internal buffer; when a system call fails
--that shouldn\'t.  All problems are reported via the syslog daemon.
-+that shouldn't.  All problems are reported via the syslog daemon.
- .SH FILES
- .na
- .nf
---- a/rfc931.c
-+++ b/rfc931.c
-@@ -33,7 +33,7 @@ static char sccsid[] = "@(#) rfc931.c 1.
- 
- int     rfc931_timeout = RFC931_TIMEOUT;/* Global so it can be changed */
- 
--static jmp_buf timebuf;
-+static sigjmp_buf timebuf;
- 
- /* fsocket - open stdio stream on top of socket */
- 
-@@ -62,7 +62,7 @@ int     protocol;
- static void timeout(sig)
- int     sig;
- {
--    longjmp(timebuf, sig);
-+    siglongjmp(timebuf, sig);
- }
- 
- /* rfc931 - return remote user name, given socket structures */
-@@ -99,7 +99,7 @@ char   *dest;
- 	 * Set up a timer so we won't get stuck while waiting for the server.
- 	 */
- 
--	if (setjmp(timebuf) == 0) {
-+	if (sigsetjmp(timebuf,1) == 0) {
- 	    signal(SIGALRM, timeout);
- 	    alarm(rfc931_timeout);
- 
---- a/tcpd.8
-+++ b/tcpd.8
-@@ -94,7 +94,7 @@ configuration files.
- .PP
- The example assumes that the network daemons live in /usr/etc. On some
- systems, network daemons live in /usr/sbin or in /usr/libexec, or have
--no `in.\' prefix to their name.
-+no `in.' prefix to their name.
- .SH EXAMPLE 2
- This example applies when \fItcpd\fR expects that the network daemons
- are left in their original place.
-@@ -110,26 +110,26 @@ finger  stream  tcp  nowait  nobody  /us
- becomes:
- .sp
- .ti +5
--finger  stream  tcp  nowait  nobody  /some/where/tcpd     in.fingerd
-+finger  stream  tcp  nowait  nobody  /usr/sbin/tcpd       in.fingerd
- .sp
- .fi
- .PP
- The example assumes that the network daemons live in /usr/etc. On some
- systems, network daemons live in /usr/sbin or in /usr/libexec, the
--daemons have no `in.\' prefix to their name, or there is no userid
-+daemons have no `in.' prefix to their name, or there is no userid
- field in the inetd configuration file.
- .PP
- Similar changes will be needed for the other services that are to be
--covered by \fItcpd\fR.  Send a `kill -HUP\' to the \fIinetd\fR(8)
-+covered by \fItcpd\fR.  Send a `kill -HUP' to the \fIinetd\fR(8)
- process to make the changes effective. AIX users may also have to
--execute the `inetimp\' command.
-+execute the `inetimp' command.
- .SH EXAMPLE 3
- In the case of daemons that do not live in a common directory ("secret"
- or otherwise), edit the \fIinetd\fR configuration file so that it
- specifies an absolute path name for the process name field. For example:
- .nf
- .sp
--    ntalk  dgram  udp  wait  root  /some/where/tcpd  /usr/local/lib/ntalkd
-+    ntalk  dgram  udp  wait  root  /usr/sbin/tcpd  /usr/sbin/in.ntalkd
- .sp
- .fi
- .PP
---- a/hosts_access.3
-+++ b/hosts_access.3
-@@ -3,7 +3,7 @@
- hosts_access, hosts_ctl, request_init, request_set \- access control library
- .SH SYNOPSIS
- .nf
--#include "tcpd.h"
-+#include <tcpd.h>
- 
- extern int allow_severity;
- extern int deny_severity;
---- a/options.c
-+++ b/options.c
-@@ -473,6 +473,9 @@ static struct syslog_names log_fac[] = {
- #ifdef LOG_CRON
-     "cron", LOG_CRON,
- #endif
-+#ifdef LOG_FTP
-+    "ftp", LOG_FTP,
-+#endif
- #ifdef LOG_LOCAL0
-     "local0", LOG_LOCAL0,
- #endif
---- a/fix_options.c
-+++ b/fix_options.c
-@@ -35,7 +35,12 @@ struct request_info *request;
- #ifdef IP_OPTIONS
-     unsigned char optbuf[BUFFER_SIZE / 3], *cp;
-     char    lbuf[BUFFER_SIZE], *lp;
-+#if !defined(__GLIBC__)
-     int     optsize = sizeof(optbuf), ipproto;
-+#else /* __GLIBC__ */
-+    size_t  optsize = sizeof(optbuf);
-+    int     ipproto;
-+#endif /* __GLIBC__ */
-     struct protoent *ip;
-     int     fd = request->fd;
-     unsigned int opt;
---- a/workarounds.c
-+++ b/workarounds.c
-@@ -163,7 +163,11 @@ int    *fromlen;
- int     fix_getpeername(sock, sa, len)
- int     sock;
- struct sockaddr *sa;
-+#if !defined(__GLIBC__)
- int    *len;
-+#else /* __GLIBC__ */
-+size_t *len;
-+#endif /* __GLIBC__ */
- {
-     int     ret;
-     struct sockaddr_in *sin = (struct sockaddr_in *) sa;
---- a/socket.c
-+++ b/socket.c
-@@ -76,7 +76,11 @@ struct request_info *request;
- {
-     static struct sockaddr_in client;
-     static struct sockaddr_in server;
-+#if !defined (__GLIBC__)
-     int     len;
-+#else /* __GLIBC__ */
-+    size_t  len;
-+#endif /* __GLIBC__ */
-     char    buf[BUFSIZ];
-     int     fd = request->fd;
- 
-@@ -224,7 +228,11 @@ int     fd;
- {
-     char    buf[BUFSIZ];
-     struct sockaddr_in sin;
-+#if !defined(__GLIBC__)
-     int     size = sizeof(sin);
-+#else /* __GLIBC__ */
-+    size_t  size = sizeof(sin);
-+#endif /* __GLIBC__ */
- 
-     /*
-      * Eat up the not-yet received datagram. Some systems insist on a
---- a/safe_finger.c
-+++ b/safe_finger.c
-@@ -26,21 +26,24 @@ static char sccsid[] = "@(#) safe_finger
- #include <stdio.h>
- #include <ctype.h>
- #include <pwd.h>
-+#include <syslog.h>
- 
- extern void exit();
- 
- /* Local stuff */
- 
--char    path[] = "PATH=/bin:/usr/bin:/usr/ucb:/usr/bsd:/etc:/usr/etc:/usr/sbin";
-+char    path[] = "PATH=/bin:/usr/bin:/sbin:/usr/sbin";
- 
- #define	TIME_LIMIT	60		/* Do not keep listinging forever */
- #define	INPUT_LENGTH	100000		/* Do not keep listinging forever */
- #define	LINE_LENGTH	128		/* Editors can choke on long lines */
- #define	FINGER_PROGRAM	"finger"	/* Most, if not all, UNIX systems */
- #define	UNPRIV_NAME	"nobody"	/* Preferred privilege level */
--#define	UNPRIV_UGID	32767		/* Default uid and gid */
-+#define	UNPRIV_UGID	65534		/* Default uid and gid */
- 
- int     finger_pid;
-+int	allow_severity = SEVERITY;
-+int	deny_severity = LOG_WARNING;
- 
- void    cleanup(sig)
- int     sig;
---- a/hosts_options.5
-+++ b/hosts_options.5
-@@ -58,12 +58,12 @@ Notice the leading dot on the domain nam
- Execute, in a child process, the specified shell command, after
- performing the %<letter> expansions described in the hosts_access(5)
- manual page.  The command is executed with stdin, stdout and stderr
--connected to the null device, so that it won\'t mess up the
-+connected to the null device, so that it won't mess up the
- conversation with the client host. Example:
- .sp
- .nf
- .ti +3
--spawn (/some/where/safe_finger -l @%h | /usr/ucb/mail root) &
-+spawn (/usr/sbin/safe_finger -l @%h | /usr/bin/mail root) &
- .fi
- .sp
- executes, in a background child process, the shell command "safe_finger
---- a/tcpdchk.c
-+++ b/tcpdchk.c
-@@ -350,6 +350,8 @@ char   *pat;
- {
-     if (pat[0] == '@') {
- 	tcpd_warn("%s: daemon name begins with \"@\"", pat);
-+    } else if (pat[0] == '/') {
-+        tcpd_warn("%s: daemon name begins with \"/\"", pat);
-     } else if (pat[0] == '.') {
- 	tcpd_warn("%s: daemon name begins with dot", pat);
-     } else if (pat[strlen(pat) - 1] == '.') {
-@@ -382,6 +384,8 @@ char   *pat;
- {
-     if (pat[0] == '@') {			/* @netgroup */
- 	tcpd_warn("%s: user name begins with \"@\"", pat);
-+    } else if (pat[0] == '/') {
-+        tcpd_warn("%s: user name begins with \"/\"", pat);
-     } else if (pat[0] == '.') {
- 	tcpd_warn("%s: user name begins with dot", pat);
-     } else if (pat[strlen(pat) - 1] == '.') {
-@@ -402,8 +406,13 @@ char   *pat;
- static int check_host(pat)
- char   *pat;
- {
-+    char    buf[BUFSIZ];
-     char   *mask;
-     int     addr_count = 1;
-+    FILE   *fp;
-+    struct tcpd_context saved_context;
-+    char   *cp;
-+    char   *wsp = " \t\r\n";
- 
-     if (pat[0] == '@') {			/* @netgroup */
- #ifdef NO_NETGRENT
-@@ -422,6 +431,21 @@ char   *pat;
- 	tcpd_warn("netgroup support disabled");
- #endif
- #endif
-+    } else if (pat[0] == '/') {                 /* /path/name */
-+        if ((fp = fopen(pat, "r")) != 0) {
-+            saved_context = tcpd_context;
-+            tcpd_context.file = pat;
-+            tcpd_context.line = 0;
-+            while (fgets(buf, sizeof(buf), fp)) {
-+                tcpd_context.line++;
-+                for (cp = strtok(buf, wsp); cp; cp = strtok((char *) 0, wsp))
-+                    check_host(cp);
-+            }
-+            tcpd_context = saved_context;
-+            fclose(fp);
-+        } else if (errno != ENOENT) {
-+            tcpd_warn("open %s: %m", pat);
-+        }
-     } else if (mask = split_at(pat, '/')) {	/* network/netmask */
- 	if (dot_quad_addr(pat) == INADDR_NONE
- 	    || dot_quad_addr(mask) == INADDR_NONE)
---- a/percent_m.c
-+++ b/percent_m.c
-@@ -13,7 +13,7 @@ static char sccsid[] = "@(#) percent_m.c
- #include <string.h>
- 
- extern int errno;
--#ifndef SYS_ERRLIST_DEFINED
-+#if !defined(SYS_ERRLIST_DEFINED) && !defined(HAVE_STRERROR)
- extern char *sys_errlist[];
- extern int sys_nerr;
- #endif
-@@ -29,11 +29,15 @@ char   *ibuf;
- 
-     while (*bp = *cp)
- 	if (*cp == '%' && cp[1] == 'm') {
-+#ifdef HAVE_STRERROR
-+            strcpy(bp, strerror(errno));
-+#else
- 	    if (errno < sys_nerr && errno > 0) {
- 		strcpy(bp, sys_errlist[errno]);
- 	    } else {
- 		sprintf(bp, "Unknown error %d", errno);
- 	    }
-+#endif
- 	    bp += strlen(bp);
- 	    cp += 2;
- 	} else {
---- a/scaffold.c
-+++ b/scaffold.c
-@@ -180,10 +180,12 @@ struct request_info *request;
- 
- /* ARGSUSED */
- 
--void    rfc931(request)
--struct request_info *request;
-+void    rfc931(rmt_sin, our_sin, dest)
-+struct sockaddr_in *rmt_sin;
-+struct sockaddr_in *our_sin;
-+char   *dest;
- {
--    strcpy(request->user, unknown);
-+    strcpy(dest, unknown);
- }
- 
- /* check_path - examine accessibility */
---- /dev/null
-+++ b/weak_symbols.c
-@@ -0,0 +1,11 @@
-+ /*
-+  * @(#) weak_symbols.h 1.5 99/12/29 23:50
-+  * 
-+  * Author: Anthony Towns <ajt@debian.org>
-+  */
-+
-+#ifdef HAVE_WEAKSYMS
-+#include <syslog.h>
-+int deny_severity = LOG_WARNING;
-+int allow_severity = SEVERITY; 
-+#endif
 

--- a/libs/tcp_wrappers/patches/002-opt_cflags.patch
+++ /dev/null
@@ -1,13 +1,1 @@
---- a/Makefile
-+++ b/Makefile
-@@ -689,7 +689,8 @@ SHLIBFLAGS = -Lshared -lwrap
- shared/%.o: %.c
- 	$(CC) $(CFLAGS) $(SHCFLAGS) -c $< -o $@
- 
--CFLAGS	= -O2 -g -DFACILITY=$(FACILITY) $(ACCESS) $(PARANOID) $(NETGROUP) \
-+OPT_CFLAGS = -O2 -g
-+CFLAGS	= $(OPT_CFLAGS) -DFACILITY=$(FACILITY) $(ACCESS) $(PARANOID) $(NETGROUP) \
- 	$(BUGS) $(SYSTYPE) $(AUTH) $(UMASK) \
- 	-DREAL_DAEMON_DIR=\"$(REAL_DAEMON_DIR)\" $(STYLE) $(KILL_OPT) \
- 	-DSEVERITY=$(SEVERITY) -DRFC931_TIMEOUT=$(RFC931_TIMEOUT) \
 

--- a/libs/tcp_wrappers/patches/003-scaffold_malloc.patch
+++ /dev/null
@@ -1,18 +1,1 @@
---- a/scaffold.c
-+++ b/scaffold.c
-@@ -20,13 +20,12 @@ static char sccs_id[] = "@(#) scaffold.c
- #include <syslog.h>
- #include <setjmp.h>
- #include <string.h>
-+#include <stdlib.h>
- 
- #ifndef INADDR_NONE
- #define	INADDR_NONE	(-1)		/* XXX should be 0xffffffff */
- #endif
- 
--extern char *malloc();
--
- /* Application-specific. */
- 
- #include "tcpd.h"
 

--- a/libs/tcp_wrappers/patches/004-ipv4_prefix.patch
+++ /dev/null
@@ -1,73 +1,1 @@
---- a/hosts_access.5
-+++ b/hosts_access.5
-@@ -90,6 +90,9 @@ bitwise AND of the address and the `mask
- pattern `131.155.72.0/255.255.254.0' matches every address in the
- range `131.155.72.0' through `131.155.73.255'.
- .IP \(bu
-+An expression of the form `n.n.n.n/m\' is interpreted as a
-+`net/prefixlen\' pair, as below, for IPv4 addresses.
-+.IP \(bu
- A string that begins with a `/' character is treated as a file
- name. A host name or address is matched if it matches any host name
- or address pattern listed in the named file. The file format is
---- a/tcpd.h
-+++ b/tcpd.h
-@@ -93,6 +93,7 @@ extern void refuse __P((struct request_i
- extern char *xgets __P((char *, int, FILE *));	/* fgets() on steroids */
- extern char *split_at __P((char *, int));	/* strchr() and split */
- extern unsigned long dot_quad_addr __P((char *)); /* restricted inet_addr() */
-+extern unsigned long prefix_to_netmask __P((char *)); /* 0-32 prefix length */
- 
- /* Global variables. */
- 
---- a/misc.c
-+++ b/misc.c
-@@ -14,6 +14,8 @@ static char sccsic[] = "@(#) misc.c 1.2
- #include <arpa/inet.h>
- #include <stdio.h>
- #include <string.h>
-+#include <ctype.h>
-+#include <stdlib.h>
- 
- #include "tcpd.h"
- 
-@@ -85,3 +87,22 @@ char   *str;
-     }
-     return (runs == 4 ? inet_addr(str) : INADDR_NONE);
- }
-+
-+/* prefix_to_netmask - convert prefix (0-32) to netmask */
-+
-+unsigned long prefix_to_netmask(str)
-+char	*str;
-+{
-+    unsigned long prefix;
-+    char *endptr;
-+
-+    if (!isdigit(str[0]))
-+	return INADDR_NONE;
-+
-+    prefix = strtoul(str, &endptr, 10);
-+    if ((endptr == str) || (*endptr != '\0') || (prefix > 32))
-+	return INADDR_NONE;
-+
-+    return htonl(~0UL << (32 - prefix));
-+}
-+
---- a/hosts_access.c
-+++ b/hosts_access.c
-@@ -345,7 +345,12 @@ char   *string;
-     if ((addr = dot_quad_addr(string)) == INADDR_NONE)
- 	return (NO);
-     if ((net = dot_quad_addr(net_tok)) == INADDR_NONE
--	|| (mask = dot_quad_addr(mask_tok)) == INADDR_NONE) {
-+	|| ((mask = dot_quad_addr(mask_tok)) == INADDR_NONE
-+	    && strcmp(mask_tok, "255.255.255.255")
-+	    && (mask = prefix_to_netmask(mask_tok)) == INADDR_NONE
-+	    && strcmp(mask_tok, "32"))) {
-+	/* 255.255.255.255 == INADDR_NONE, separate check needed. TJ. */
-+	/* 32 == INADDR_NONE, separate check needed. philipp */
- 	tcpd_warn("bad net/mask expression: %s/%s", net_tok, mask_tok);
- 	return (NO);				/* not tcpd_jump() */
-     }
 

file:a/mail/dovecot/Makefile (deleted)
--- a/mail/dovecot/Makefile
+++ /dev/null
@@ -1,77 +1,1 @@
-#
-# Copyright (C) 2006-2014 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
 
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=dovecot
-PKG_VERSION:=2.2.13
-PKG_RELEASE:=1
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=http://www.dovecot.org/releases/2.2
-PKG_MD5SUM:=a3eb1c0b1822c4f2b0fe9247776baa71
-
-PKG_BUILD_DEPENDS:=libiconv
-
-PKG_FIXUP:=autoreconf
-PKG_INSTALL:=1
-
-include $(INCLUDE_DIR)/package.mk
-
-define Package/dovecot
-  SECTION:=mail
-  CATEGORY:=Mail
-  DEPENDS:=+libopenssl +librt +zlib +libbz2 +libcap
-  TITLE:=An IMAP and POP3 daemon
-  MAINTAINER:=Peter Wagner <tripolar@gmx.at>
-  URL:=http://www.dovecot.org/
-endef
-
-define Package/dovecot/description
- Dovecot is a program which provides POP3 and IMAP services.
-endef
-
-CONFIGURE_ARGS += \
-	--without-gssapi \
-	--without-pam \
-	--with-moduledir=/usr/lib/dovecot/modules \
-	--with-notify=dnotify \
-	--without-lzma \
-	--without-lz4
-
-CONFIGURE_VARS += \
-	RPCGEN= \
-	i_cv_signed_size_t=no \
-	i_cv_signed_time_t=no \
-	i_cv_gmtime_max_time_t=32 \
-	i_cv_mmap_plays_with_write=yes \
-	i_cv_fd_passing=yes \
-	i_cv_c99_vsnprintf=yes \
-	lib_cv_va_copy=yes \
-	lib_cv_va_copy=yes \
-	lib_cv___va_copy=yes \
-	lib_cv_va_val_copy=yes
-
-define Package/dovecot/install
-	$(INSTALL_DIR)  $(1)/etc/init.d \
-			$(1)/etc/dovecot \
-			$(1)/usr/share/doc/dovecot/example-config \
-			$(1)/usr/lib/dovecot \
-			$(1)/usr/bin \
-			$(1)/usr/sbin
-	$(CP) $(PKG_INSTALL_DIR)/etc/dovecot/* $(1)/etc/dovecot/
-	$(CP) $(PKG_INSTALL_DIR)/usr/lib/dovecot/* $(1)/usr/lib/dovecot/
-	$(CP) $(PKG_INSTALL_DIR)/usr/share/doc/dovecot/example-config $(1)/usr/share/doc/dovecot/example-config
-	$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/doveconf $(1)/usr/bin/
-	$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/* $(1)/usr/sbin/
-	$(INSTALL_BIN) ./files/dovecot.init $(1)/etc/init.d/dovecot
-	rm  $(1)/usr/lib/dovecot/dovecot-config
-	find $(1)/usr/lib/dovecot/ -name "*.a" -o -name "*.la" | xargs rm
-endef
-
-$(eval $(call BuildPackage,dovecot))
-

--- a/mail/dovecot/files/dovecot.init
+++ /dev/null
@@ -1,19 +1,1 @@
-#!/bin/sh /etc/rc.common
-# Copyright (C) 2006-2013 OpenWrt.org
 
-START=75
-STOP=75
-
-USE_PROCD=1
-
-start_service() {
-	user_exists dovecot 59 || user_add dovecot 59
-	group_exists dovecot 59 || group_add dovecot 59
-	mkdir -p -m 0755 /var/lib/dovecot
-	mkdir -p -m 0755 /var/run/dovecot
-	chmod 0750 /var/lib/dovecot
-	procd_open_instance
-	procd_set_param command /usr/sbin/dovecot -F
-	procd_close_instance
-}
-

--- a/mail/dovecot/patches/001-configure_in.patch
+++ /dev/null
@@ -1,32 +1,1 @@
---- a/configure.ac
-+++ b/configure.ac
-@@ -504,9 +504,9 @@ have_ioloop=no
- 
- if test "$ioloop" = "best" || test "$ioloop" = "epoll"; then
-   AC_CACHE_CHECK([whether we can use epoll],i_cv_epoll_works,[
--    AC_TRY_RUN([
-+    AC_TRY_LINK([
-       #include <sys/epoll.h>
--  
-+    ], [
-       int main()
-       {
- 	return epoll_create(5) < 1;
-@@ -675,7 +675,7 @@ fi
- dnl * Old glibcs have broken posix_fallocate(). Make sure not to use it.
- dnl * It may also be broken in AIX.
- AC_CACHE_CHECK([whether posix_fallocate() works],i_cv_posix_fallocate_works,[
--  AC_TRY_RUN([
-+  AC_TRY_LINK([
-     #define _XOPEN_SOURCE 600
-     #include <stdio.h>
-     #include <stdlib.h>
-@@ -684,6 +684,7 @@ AC_CACHE_CHECK([whether posix_fallocate(
-     #if defined(__GLIBC__) && (__GLIBC__ < 2 || __GLIBC_MINOR__ < 7)
-       possibly broken posix_fallocate
-     #endif
-+  ], [
-     int main() {
-       int fd = creat("conftest.temp", 0600);
-       int ret;
 

--- a/multimedia/crtmpserver/Makefile
+++ /dev/null
@@ -1,86 +1,1 @@
-#
-# Copyright (C) 2010-2014 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
 
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=crtmpserver
-PKG_REV:=726
-PKG_VERSION:=r$(PKG_REV)
-PKG_RELEASE:=2
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_SOURCE_URL:=--username=anonymous --password= https://svn.rtmpd.com/crtmpserver/trunk
-PKG_SOURCE_SUBDIR:=crtmpserver-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=$(PKG_REV)
-PKG_SOURCE_PROTO:=svn
-
-include $(INCLUDE_DIR)/package.mk
-
-define Package/crtmpserver
-  SECTION:=multimedia
-  CATEGORY:=Multimedia
-  DEPENDS:=+libopenssl +libstdcpp +liblua
-  TITLE:=C++ RTMP Server
-  URL:=http://www.rtmpd.com/
-endef
-
-define Package/crtmpserver/description
-C++ RTMP Server it is a high performance streaming server able to
-stream (live or recorded) in the following technologies:
- * To and from Flash (RTMP,RTMPE, RTMPS, RTMPT, RTMPTE)
- * To and from embedded devices: iPhone, Android
- * From surveillance cameras
- * IP-TV using MPEG-TS and RTSP/RTCP/RTP protocols
-
-Also, crtmpserver can be used as a high performance rendes-vous
-server. For example, it enables you to do:
- * Audio/Video conferencing
- * Online gaming
- * Online collaboration
- * Simple/complex chat applications
-endef
-
-# XXX: this hack handles the usr/bin vs bin difference of backfire and trunk
-TS_BASE:=$(wildcard $(TOOLCHAIN_DIR)/bin/$(TARGET_CC))
-TS_BASE:=$(dir $(if $(TS_BASE),$(TS_BASE),$(wildcard $(TOOLCHAIN_DIR)/usr/bin/$(TARGET_CC))))
-
-define Build/Configure
-	(cd $(PKG_BUILD_DIR)/builders/make; \
-		cp linux.mk linux-openwrt-uclibc.mk; \
-		$(SED) 's,^TOOLCHAIN_BASE[[:space:]]*=.*,TOOLCHAIN_BASE=$(TS_BASE),' \
-			-e 's,^TOOLCHAIN_PREFIX[[:space:]]*=.*,TOOLCHAIN_PREFIX=$(TARGET_CROSS),' \
-			-e 's,^CCOMPILER[[:space:]]*=.*,CCOMPILER=$(TARGET_CC),' \
-			-e 's,^CXXCOMPILER[[:space:]]*=.*,CXXCOMPILER=$(TARGET_CXX),' \
-			-e 's,^OPTIMIZATIONS[[:space:]]*=.*,OPTIMIZATIONS=-O2,' \
-			-e 's,^SSL_BASE[[:space:]]*=.*,SSL_BASE=$(STAGING_DIR)/usr,' \
-			linux-openwrt-uclibc.mk)
-endef
-
-define Build/Compile
-	+$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR)/builders/make \
-		CFLAGS="$(TARGET_CFLAGS)" \
-		PLATFORM=linux-openwrt-uclibc
-endef
-
-define Package/crtmpserver/install
-	$(INSTALL_DIR) $(1)/usr/bin
-	$(INSTALL_BIN) $(PKG_BUILD_DIR)/builders/make/output/dynamic/crtmpserver $(1)/usr/bin/
-	$(INSTALL_DIR) $(1)/usr/lib/crtmpserver
-	$(INSTALL_BIN) $(PKG_BUILD_DIR)/builders/make/output/dynamic/*.so $(1)/usr/lib/crtmpserver/
-	$(foreach app,flvplayback samplefactory admin stresstest appselector vptests applestreamingclient proxypublish, \
-		$(INSTALL_DIR) $(1)/usr/lib/crtmpserver/$(app); \
-		$(INSTALL_BIN) $(PKG_BUILD_DIR)/builders/make/output/dynamic/applications/$(app)/lib$(app).so \
-			$(1)/usr/lib/crtmpserver/$(app)/; \
-	)
-	$(INSTALL_DIR) $(1)/etc
-	$(INSTALL_DATA) $(PKG_BUILD_DIR)/builders/make/output/dynamic/crtmpserver.lua $(1)/etc/
-	$(INSTALL_DIR) $(1)/usr/share/crtmpserver/appselector
-	$(INSTALL_DIR) $(1)/usr/share/crtmpserver/media
-endef
-
-$(eval $(call BuildPackage,crtmpserver))
-

--- a/multimedia/crtmpserver/patches/010-link-crypt-for-lua.patch
+++ /dev/null
@@ -1,12 +1,1 @@
---- a/builders/make/compile.mk
-+++ b/builders/make/compile.mk
-@@ -67,7 +67,7 @@ TINYXML_OBJS = $(TINYXML_SRCS:.cpp=.tiny
- 
- #common
- COMMON_INCLUDE=$(LUA_INCLUDE) $(TINYXML_INCLUDE) $(SSL_INCLUDE) -I$(PROJECT_BASE_PATH)/sources/common/include
--COMMON_LIBS=$(SSL_LIB) -L$(OUTPUT_DYNAMIC) -llua -ltinyxml
-+COMMON_LIBS=$(SSL_LIB) -L$(OUTPUT_DYNAMIC) -llua -ltinyxml -lcrypt
- COMMON_SRCS = $(shell find $(PROJECT_BASE_PATH)/sources/common/src -type f -name "*.cpp")
- COMMON_OBJS = $(COMMON_SRCS:.cpp=.common.o)
- 
 

--- a/multimedia/crtmpserver/patches/020-add-rpath.patch
+++ /dev/null
@@ -1,14 +1,1 @@
---- a/builders/make/linux.mk
-+++ b/builders/make/linux.mk
-@@ -31,8 +31,8 @@ OPTIMIZATIONS = -O3
- COMPILE_FLAGS = $(FPIC) $(OPTIMIZATIONS) $(CFLAGS)
- 
- #linking flags
--dynamic_lib_flags = $(FPIC) $(OPTIMIZATIONS) -Wl,-soname,$(DYNAMIC_LIB_PREFIX)$(1)$(DYNAMIC_LIB_SUFIX) -Wl,-rpath,"\$$ORIGIN"
--dynamic_exec_flags = $(FPIC) $(OPTIMIZATIONS) -Wl,-rpath,"\$$ORIGIN"
-+dynamic_lib_flags = $(FPIC) $(OPTIMIZATIONS) -Wl,-soname,$(DYNAMIC_LIB_PREFIX)$(1)$(DYNAMIC_LIB_SUFIX) -Wl,-rpath,/usr/lib/crtmpserver
-+dynamic_exec_flags = $(FPIC) $(OPTIMIZATIONS) -Wl,-rpath,/usr/lib/crtmpserver
- 
- #compile switches
- PLATFORM_DEFINES = \
 

--- a/multimedia/crtmpserver/patches/030-default-config.patch
+++ /dev/null
@@ -1,52 +1,1 @@
---- a/builders/cmake/crtmpserver/crtmpserver.lua
-+++ b/builders/cmake/crtmpserver/crtmpserver.lua
-@@ -44,7 +44,7 @@ configuration=
- 	{
- 		-- this is the root directory of all applications
- 		-- usually this is relative to the binary execuable
--		rootDirectory="applications",
-+		rootDirectory="/usr/lib/crtmpserver",
- 		
- 		
- 		--this is where the applications array starts
-@@ -68,7 +68,7 @@ configuration=
- 			-- this is the folder from where the current application gets it's content.
- 			-- It is optional. If not specified, it will be defaulted to:
- 			-- <rootDirectory>/<name>/mediaFolder
--			-- mediaFolder="/some/directory/where/media/files/are/stored"
-+			mediaFolder="/usr/share/crtmpserver/appselector",
- 			-- the application will also be known by that names. It is optional
- 			--aliases=
- 			--{
-@@ -89,13 +89,6 @@ configuration=
- 				},
- 				{
- 					ip="0.0.0.0",
--					port=8081,
--					protocol="inboundRtmps",
--					sslKey="server.key",
--					sslCert="server.crt"
--				},
--				{
--					ip="0.0.0.0",
- 					port=8080,
- 					protocol="inboundRtmpt"
-                 },
-@@ -105,7 +98,7 @@ configuration=
- 			description="FLV Playback Sample",
- 			name="flvplayback",
- 			protocol="dynamiclinklibrary",
--			mediaFolder="/Volumes/android/backup/media/",
-+			mediaFolder="/media/",
- 			aliases=
- 			{
- 				"simpleLive",
-@@ -183,6 +176,7 @@ configuration=
- 			name="samplefactory",
- 			description="asdsadasdsa",
- 			protocol="dynamiclinklibrary",
-+			mediaFolder="/usr/share/ctmpserver/media",
- 			aliases=
- 			{
- 				"httpOutboundTest"
 

--- a/multimedia/crtmpserver/patches/040-use-select.patch
+++ /dev/null
@@ -1,12 +1,1 @@
---- a/builders/make/linux.mk
-+++ b/builders/make/linux.mk
-@@ -38,7 +38,7 @@ dynamic_exec_flags = $(FPIC) $(OPTIMIZAT
- PLATFORM_DEFINES = \
- 	-DLINUX \
- 	-DLITTLE_ENDIAN_BYTE_ALIGNED \
--	-DNET_EPOLL
-+	-DNET_SELECT
- 
- SSL_BASE=/usr/local
- 
 

--- a/multimedia/crtmpserver/patches/050-add-missing-make-defines.patch
+++ /dev/null
@@ -1,21 +1,1 @@
---- a/builders/make/compile.mk
-+++ b/builders/make/compile.mk
-@@ -43,10 +43,16 @@ FEATURES_DEFINES = \
- 	-DHAS_PROTOCOL_RTP \
- 	-DHAS_PROTOCOL_TS \
- 	-DHAS_PROTOCOL_VAR \
-+	-DHAS_PROTOCOL_CLI \
-+	-DHAS_PROTOCOL_HLS \
-+	-DHAS_PROTOCOL_RAWHTTPSTREAM \
- 	-DHAS_LUA \
- 	-DHAS_MEDIA_MP3 \
- 	-DHAS_MEDIA_MP4 \
--	-DHAS_MEDIA_FLV
-+	-DHAS_MEDIA_FLV \
-+	-DHAS_MEDIA_NSV \
-+	-DHAS_SYSLOG
-+	
- 
- 
- DEFINES = $(PLATFORM_DEFINES) $(FEATURES_DEFINES)
 

--- a/multimedia/crtmpserver/patches/060-add-dl-for-crypto.patch
+++ /dev/null
@@ -1,12 +1,1 @@
---- a/builders/make/compile.mk
-+++ b/builders/make/compile.mk
-@@ -59,7 +59,7 @@ DEFINES = $(PLATFORM_DEFINES) $(FEATURES
- 
- #library paths
- SSL_INCLUDE=-I$(SSL_BASE)/include
--SSL_LIB=-L$(SSL_BASE)/lib -lssl -lcrypto
-+SSL_LIB=-L$(SSL_BASE)/lib -lssl -lcrypto -ldl
- 
- #lua
- LUA_INCLUDE=-I$(PROJECT_BASE_PATH)/3rdparty/lua-dev
 

--- a/multimedia/crtmpserver/patches/070-sysconf_unistd.patch
+++ /dev/null
@@ -1,11 +1,1 @@
---- a/sources/common/include/platform/linux/linuxplatform.h
-+++ b/sources/common/include/platform/linux/linuxplatform.h
-@@ -59,6 +59,7 @@
- #include <sys/socket.h>
- #include <string.h>
- #include <stdarg.h>
-+#include <unistd.h>
- using namespace std;
- 
- 
 

file:a/net/ctorrent/Makefile (deleted)
--- a/net/ctorrent/Makefile
+++ /dev/null
@@ -1,85 +1,1 @@
-#
-# Copyright (C) 2006-2008 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
 
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=ctorrent
-PKG_VERSION:=dnh3.3.2
-PKG_RELEASE:=6
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=@SF/dtorrent \
-	http://www.rahul.net/dholmes/ctorrent/
-PKG_MD5SUM:=59b23dd05ff70791cd6449effa7fc3b6
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
-
-include $(INCLUDE_DIR)/uclibc++.mk
-include $(INCLUDE_DIR)/package.mk
-
-define Package/ctorrent/Default
-  SUBMENU:=BitTorrent
-  SECTION:=net
-  CATEGORY:=Network
-  DEPENDS:=$(CXX_DEPENDS)
-  TITLE:=console-based BitTorrent client
-  MAINTAINER:=Peter Wagner <tripolar@gmx.at>
-  URL:=http://www.rahul.net/dholmes/ctorrent/
-endef
-
-define Package/ctorrent/Default/description
-	CTorrent is a BitTorrent client written in the C programming language,
-	known to be a very robust and mature programming language, which produces
-	fast and optimized application.
-endef
-
-define Package/ctorrent
-$(call Package/ctorrent/Default)
-  TITLE+= (with OpenSSL support)
-  DEPENDS+=+libopenssl
-  VARIANT:=ssl
-endef
-
-define Package/ctorrent/description
-$(call Package/ctorrent/Default/description)
- This package is built with OpenSSL support.
-endef
-
-define Package/ctorrent-nossl
-$(call Package/ctorrent/Default)
-  TITLE+= (with builtin SHA-1)
-  VARIANT:=nossl
-endef
-
-define Package/ctorrent-nossl/description
-$(call Package/ctorrent/Default/description)
- This package is built with builtin (Steve Reid's public-domain) SHA-1 support
-endef
-
-CONFIGURE_VARS += \
-	CXXFLAGS="$$$$CXXFLAGS -fno-rtti"
-
-ifeq ($(BUILD_VARIANT),ssl)
-	CONFIGURE_ARGS += \
-		--with-ssl="$(STAGING_DIR)/usr"
-endif
-
-ifeq ($(BUILD_VARIANT),nossl)
-	CONFIGURE_ARGS += \
-		--with-ssl=no
-endif
-
-define Package/ctorrent/install
-	$(INSTALL_DIR) $(1)/usr/bin
-	$(INSTALL_BIN) $(PKG_BUILD_DIR)/$(PKG_NAME) $(1)/usr/bin/$(PKG_NAME)
-endef
-
-Package/ctorrent-nossl/install = $(Package/ctorrent/install)
-
-$(eval $(call BuildPackage,ctorrent))
-$(eval $(call BuildPackage,ctorrent-nossl))
-

--- a/net/ctorrent/patches/100-CVE-2009-1759.patch
+++ /dev/null
@@ -1,365 +1,1 @@
-Patch for CVE-2009-1759.
-Source: Upstream SVN, rev 302 from the dtorrent-3 branch.
 
-Index: a/bencode.h
-===================================================================
---- a/bencode.h	(revision 300)
-+++ b/bencode.h	(revision 302)
-@@ -25,7 +25,7 @@
- size_t decode_list(const char *b,size_t len,const char *keylist);
- size_t decode_rev(const char *b,size_t len,const char *keylist);
- size_t decode_query(const char *b,size_t len,const char *keylist,const char **ps,size_t *pi,int64_t *pl,int method);
--size_t decode_list2path(const char *b, size_t n, char *pathname);
-+size_t decode_list2path(const char *b, size_t n, char *pathname, size_t maxlen);
- size_t bencode_buf(const char *str,size_t len,FILE *fp);
- size_t bencode_str(const char *str, FILE *fp);
- size_t bencode_int(const uint64_t integer, FILE *fp);
-Index: a/bencode.cpp
-===================================================================
---- a/bencode.cpp	(revision 300)
-+++ b/bencode.cpp	(revision 302)
-@@ -233,22 +233,28 @@
-   return bencode_end_dict_list(fp);
- }
- 
--size_t decode_list2path(const char *b, size_t n, char *pathname)
-+size_t decode_list2path(const char *b, size_t n, char *pathname, size_t maxlen)
- {
-   const char *pb = b;
-   const char *s = (char *) 0;
-+  const char *endmax = pathname + maxlen - 1;
-   size_t r,q;
- 
-   if( 'l' != *pb ) return 0;
-   pb++;
-   n--;
-   if( !n ) return 0;
--  for(; n;){
-+  while( n && pathname < endmax ){
-     if(!(r = buf_str(pb, n, &s, &q)) ) return 0;
-+    if( q >= maxlen ) return 0;
-     memcpy(pathname, s, q);
-     pathname += q;
--    pb += r; n -= r; 
--    if( 'e' != *pb ){*pathname = PATH_SP, pathname++;} else break;
-+    maxlen -= q;
-+    pb += r;
-+    n -= r; 
-+    if( 'e' == *pb ) break;
-+    if( pathname >= endmax ) return 0;
-+    *pathname++ = PATH_SP;
-   }
-   *pathname = '\0';
-   return (pb - b + 1);
-Index: a/btfiles.cpp
-===================================================================
---- a/btfiles.cpp	(revision 300)
-+++ b/btfiles.cpp	(revision 302)
-@@ -449,7 +449,8 @@
-   return 0;
- }
- 
--int btFiles::BuildFromMI(const char *metabuf, const size_t metabuf_len, const char *saveas)
-+int btFiles::BuildFromMI(const char *metabuf, const size_t metabuf_len,
-+  const char *saveas, unsigned char exam_only)
- {
-   char path[MAXPATHLEN];
-   const char *s, *p;
-@@ -458,11 +459,19 @@
-   int f_warned = 0;
- 
-   if( !decode_query(metabuf, metabuf_len, "info|name", &s, &q, (int64_t*)0,
--      QUERY_STR) || MAXPATHLEN <= q )
-+        QUERY_STR) || MAXPATHLEN <= q ){
-+    errno = EINVAL;
-     return -1;
-+  }
- 
-   memcpy(path, s, q);
-   path[q] = '\0';
-+  if( !exam_only &&
-+      (PATH_SP == path[0] || '/' == path[0] || 0==strncmp("..", path, 2)) ){
-+    CONSOLE.Warning(1, "error, unsafe path \"%s\" in torrent data", path);
-+    errno = EINVAL;
-+    return -1;
-+  }
- 
-   r = decode_query(metabuf, metabuf_len, "info|files", (const char**)0, &q,
-                    (int64_t*)0, QUERY_POS);
-@@ -471,21 +480,31 @@
-     BTFILE *pbf_last = (BTFILE*) 0; 
-     BTFILE *pbf = (BTFILE*) 0;
-     size_t dl;
-+    unsigned long nfiles = 0;
-+
-     if( decode_query(metabuf,metabuf_len,"info|length",
--                    (const char**) 0,(size_t*) 0,(int64_t*) 0,QUERY_LONG) )
-+                    (const char**) 0,(size_t*) 0,(int64_t*) 0,QUERY_LONG) ){
-+      errno = EINVAL;
-       return -1;
-+    }
- 
-     if( saveas ){
-       m_directory = new char[strlen(saveas) + 1];
- #ifndef WINDOWS
--      if(!m_directory) return -1;
-+      if( !m_directory ){
-+        errno = ENOMEM;
-+        return -1;
-+      }
- #endif
-       strcpy(m_directory,saveas);
-     }else{
-       int f_conv;
-       char *tmpfn = new char[strlen(path)*2+5];
- #ifndef WINDOWS
--      if( !tmpfn ) return -1;
-+      if( !tmpfn ){
-+        errno = ENOMEM;
-+        return -1;
-+      }
- #endif
-       if( f_conv = ConvertFilename(tmpfn, path, strlen(path)*2+5) ){
-         if( arg_flg_convert_filenames ){
-@@ -493,6 +512,7 @@
- #ifndef WINDOWS
-           if( !m_directory ){
-             delete []tmpfn;
-+            errno = ENOMEM;
-             return -1;
-           }
- #endif
-@@ -507,7 +527,10 @@
-       if( !f_conv || !arg_flg_convert_filenames ){
-         m_directory = new char[strlen(path) + 1];
- #ifndef WINDOWS
--        if( !m_directory ) return -1;
-+        if( !m_directory ){
-+          errno = ENOMEM;
-+          return -1;
-+        }
- #endif
-         strcpy(m_directory,path);
-       }
-@@ -517,24 +540,50 @@
-     p = metabuf + r + 1; 
-     q--;
-     for(; q && 'e' != *p; p += dl, q -= dl){
--      if(!(dl = decode_dict(p, q, (const char*) 0)) ) return -1;
--      if( !decode_query(p, dl, "length", (const char**) 0,
--                       (size_t*) 0,&t,QUERY_LONG) ) return -1;
-+      if( !(dl = decode_dict(p, q, (const char*) 0)) ||
-+          !decode_query(p, dl, "length", (const char**) 0, (size_t*) 0, &t,
-+                        QUERY_LONG) ){
-+        errno = EINVAL;
-+        return -1;
-+      }
-       pbf = _new_bfnode();
- #ifndef WINDOWS
--      if( !pbf ) return -1;
-+      if( !pbf ){
-+        errno = ENOMEM;
-+        return -1;
-+      }
- #endif
-+      nfiles++;
-       pbf->bf_length = t;
-       m_total_files_length += t;
-       r = decode_query(p, dl, "path", (const char **)0, &n, (int64_t*)0,
-                        QUERY_POS);
--      if( !r ) return -1;
--      if(!decode_list2path(p + r, n, path)) return -1;
-+      if( !r || !decode_list2path(p + r, n, path, sizeof(path)) ){
-+        CONSOLE.Warning(1,
-+          "error, invalid path in torrent data for file %lu at offset %llu",
-+          nfiles, m_total_files_length - t);
-+        delete pbf;
-+        errno = EINVAL;
-+        return -1;
-+      }
-+      if( !exam_only &&
-+          (PATH_SP == path[0] || '/' == path[0] || 0==strncmp("..", path, 2)) ){
-+        CONSOLE.Warning(1,
-+          "error, unsafe path \"%s\" in torrent data for file %lu",
-+          path, nfiles);
-+        delete pbf;
-+        errno = EINVAL;
-+        return -1;
-+      }
- 
-+
-       int f_conv;
-       char *tmpfn = new char[strlen(path)*2+5];
- #ifndef WINDOWS
--      if( !tmpfn ) return -1;
-+      if( !tmpfn ){
-+        errno = ENOMEM;
-+        return -1;
-+      }
- #endif
-       if( f_conv = ConvertFilename(tmpfn, path, strlen(path)*2+5) ){
-         if( arg_flg_convert_filenames ){
-@@ -542,6 +591,7 @@
- #ifndef WINDOWS
-           if( !pbf->bf_filename ){
-             delete []tmpfn;
-+            errno = ENOMEM;
-             return -1;
-           }
- #endif
-@@ -556,7 +606,10 @@
-       if( !f_conv || !arg_flg_convert_filenames ){
-         pbf->bf_filename = new char[strlen(path) + 1];
- #ifndef WINDOWS
--        if( !pbf->bf_filename ) return -1;
-+        if( !pbf->bf_filename ){
-+          errno = ENOMEM;
-+          return -1;
-+        }
- #endif
-         strcpy(pbf->bf_filename, path);
-       }
-@@ -564,30 +617,42 @@
-       pbf_last = pbf;
-     }
-   }else{
--    if( !decode_query(metabuf,metabuf_len,"info|length",
--                     (const char**) 0,(size_t*) 0,&t,QUERY_LONG) )
-+    if( !decode_query(metabuf,metabuf_len, "info|length",
-+                      (const char**)0, (size_t*) 0, &t, QUERY_LONG) ){
-+      errno = EINVAL;
-       return -1;
-+    }
-     m_btfhead = _new_bfnode();
- #ifndef WINDOWS
--    if( !m_btfhead) return -1;
-+    if( !m_btfhead ){
-+      errno = ENOMEM;
-+      return -1;
-+    }
- #endif
-     m_btfhead->bf_length = m_total_files_length = t;
-     if( saveas ){
-       m_btfhead->bf_filename = new char[strlen(saveas) + 1];
- #ifndef WINDOWS
--      if(!m_btfhead->bf_filename ) return -1;
-+      if( !m_btfhead->bf_filename ){
-+        errno = ENOMEM;
-+        return -1;
-+      }
- #endif
-       strcpy(m_btfhead->bf_filename, saveas);
-     }else if( arg_flg_convert_filenames ){
-       char *tmpfn = new char[strlen(path)*2+5];
- #ifndef WINDOWS
--      if( !tmpfn ) return -1;
-+      if( !tmpfn ){
-+        errno = ENOMEM;
-+        return -1;
-+      }
- #endif
-       ConvertFilename(tmpfn, path, strlen(path)*2+5);
-       m_btfhead->bf_filename = new char[strlen(tmpfn) + 1];
- #ifndef WINDOWS
-       if( !m_btfhead->bf_filename ){
-         delete []tmpfn;
-+        errno = ENOMEM;
-         return -1;
-       }
- #endif
-@@ -596,7 +661,10 @@
-     }else{
-       m_btfhead->bf_filename = new char[strlen(path) + 1];
- #ifndef WINDOWS
--      if(!m_btfhead->bf_filename ) return -1;
-+      if( !m_btfhead->bf_filename ){
-+        errno = ENOMEM;
-+        return -1;
-+      }
- #endif
-       strcpy(m_btfhead->bf_filename, path);
-     }
-@@ -694,6 +762,32 @@
- size_t btFiles::FillMetaInfo(FILE* fp)
- {
-   BTFILE *p;
-+  const char *refname, *s;
-+  char path[MAXPATHLEN];
-+
-+  refname = m_directory ? m_directory : m_btfhead->bf_filename;
-+  while( (s = strchr(refname, PATH_SP)) && *(s + 1) ){
-+    refname = s + 1;
-+  }
-+  if( m_directory && '.' == *refname ){
-+    char dir[MAXPATHLEN];
-+    if( getcwd(dir, sizeof(dir)) && 0==chdir(m_directory) ){
-+      if( getcwd(path, sizeof(path)) ){
-+        refname = path;
-+        while( (s = strchr(refname, PATH_SP)) && *(s + 1) ){
-+          refname = s + 1;
-+        }
-+      }
-+      chdir(dir);
-+    }
-+  }
-+  if( '/' == *refname || '\0' == *refname || '.' == *refname ){
-+    CONSOLE.Warning(1, "error, inappropriate file or directory name \"%s\"",
-+      m_directory ? m_directory : m_btfhead->bf_filename);
-+    errno = EINVAL;
-+    return 0;
-+  }
-+
-   if( m_directory ){
-     // multi files
-     if( bencode_str("files", fp) != 1 ) return 0;
-@@ -715,16 +809,15 @@
-     if(bencode_end_dict_list(fp) != 1 ) return 0;
-     
-     if(bencode_str("name", fp) != 1) return 0;
--    return bencode_str(m_directory, fp);
--    
-+    return bencode_str(refname, fp);
-   }else{
-     if( bencode_str("length", fp) != 1 ) return 0;
-     if( bencode_int(m_btfhead->bf_length, fp) != 1) return 0;
-     
-     if( bencode_str("name", fp) != 1 ) return 0;
--    return bencode_str(m_btfhead->bf_filename, fp);
-+    return bencode_str(refname, fp);
-   }
--  return 1;
-+  return 0;
- }
- 
- 
-Index: a/btcontent.cpp
-===================================================================
---- a/btcontent.cpp	(revision 300)
-+++ b/btcontent.cpp	(revision 302)
-@@ -357,7 +357,11 @@
- 
-   cfg_req_queue_length = (m_piece_length / cfg_req_slice_size) * 2 - 1;
- 
--  if( m_btfiles.BuildFromMI(b, flen, saveas) < 0 ) ERR_RETURN();
-+  if( m_btfiles.BuildFromMI(b, flen, saveas, arg_flg_exam_only) < 0 ){
-+    if( EINVAL == errno )
-+      CONSOLE.Warning(1, "Torrent metainfo file data is invalid or unusable.");
-+    ERR_RETURN();
-+  }
- 
-   delete []b;
-   b = (char *)0;
-Index: a/btfiles.h
-===================================================================
---- a/btfiles.h	(revision 300)
-+++ b/btfiles.h	(revision 302)
-@@ -61,7 +61,7 @@
-   
-   int BuildFromFS(const char *pathname);
-   int BuildFromMI(const char *metabuf, const size_t metabuf_len,
--                  const char *saveas);
-+                  const char *saveas, unsigned char exam_only);
- 
-   char *GetDataName() const;
-   uint64_t GetTotalLength() const { return m_total_files_length; }
-

--- a/net/ctorrent/patches/100-negative-ints.patch
+++ /dev/null
@@ -1,14 +1,1 @@
---- a/bencode.cpp
-+++ b/bencode.cpp
-@@ -44,6 +44,10 @@ size_t buf_long(const char *b,size_t len
-     p++; len--;
-   }
- 
-+  if( *p == '-'){
-+    p++; len--;
-+  }
-+
-   for(psave = p; len && isdigit(*p); p++,len--) ;
- 
-   if(!len || MAX_INT_SIZ < (p - psave) || *p != endchar) return 0;
 

file:a/net/etherwake/Makefile (deleted)
--- a/net/etherwake/Makefile
+++ /dev/null
@@ -1,55 +1,1 @@
-#
-# Copyright (C) 2007-2011 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
 
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=etherwake
-PKG_VERSION:=1.09
-PKG_RELEASE:=3
-
-PKG_SOURCE:=$(PKG_NAME)_$(PKG_VERSION).orig.tar.gz
-PKG_SOURCE_URL:=http://ftp.debian.org/debian/pool/main/e/etherwake
-PKG_MD5SUM:=628e8b2a28d47f262e4c26c989402a59
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION).orig
-
-include $(INCLUDE_DIR)/package.mk
-
-define Package/etherwake
-  SECTION:=net
-  CATEGORY:=Network
-  TITLE:=WoL client for magic packets via ethernet frames
-  URL:=http://ftp.debian.org/debian/pool/main/e/etherwake
-endef
-
-define Package/etherwake/description
-	You can wake up WOL compliant Computers which have been powered down to
-	sleep mode or start WOL compliant Computers with a BIOS feature.
-	WOL is an abbreviation for Wake-on-LAN. It is a standard that allows you
-	to turn on a computer from another location over a network connection.
-	ether-wake also supports WOL passwords.
-endef
-
-define Build/Compile
-	$(TARGET_CC) $(TARGET_CFLAGS) -D__UCLIBC__ $(PKG_BUILD_DIR)/ether-wake.c -o $(PKG_BUILD_DIR)/etherwake
-endef
-
-define Package/etherwake/install
-	$(INSTALL_DIR) $(1)/usr/bin
-	$(INSTALL_BIN) $(PKG_BUILD_DIR)/etherwake $(1)/usr/bin/
-	$(INSTALL_DIR) $(1)/etc/config
-	$(INSTALL_DATA) files/$(PKG_NAME).config $(1)/etc/config/$(PKG_NAME)
-	$(INSTALL_DIR) $(1)/etc/init.d
-	$(INSTALL_BIN) files/$(PKG_NAME).init $(1)/etc/init.d/$(PKG_NAME)
-endef
-
-define Package/etherwake/conffiles
-/etc/config/etherwake
-endef
-
-$(eval $(call BuildPackage,etherwake))
-

--- a/net/etherwake/files/etherwake.config
+++ /dev/null
@@ -1,29 +1,1 @@
-config 'etherwake' 'setup'
-	# possible program pathes
-	option 'pathes' '/usr/bin/etherwake /usr/bin/ether-wake'
-	# use sudo, defaults to off
-	option 'sudo' 'off'
-	# interface, defaults to 'eth0'
-	# -i <ifname>
-	option 'interface' ''
-	# send wake-up packet to the broadcast address, defaults to off
-	# -b
-	option 'broadcast' 'off'
 
-config 'target'
-	# name for the target
-	option 'name' 'example'
-	# mac address to wake up
-	option 'mac' '11:22:33:44:55:66'
-	# password in hex without any delimiters
-	option 'password' 'AABBCCDDEEFF'
-	# wake up on system start, defaults to off
-	option 'wakeonboot' 'off'
-
-# To add a new target use:
-#  uci add etherwake target
-#  uci set etherwake.@target[-1].name=example
-#  uci set etherwake.@target[-1].mac=11:22:33:44:55:66
-#  uci set etherwake.@target[-1].password=AABBCCDDEEFF
-#  uci set etherwake.@target[-1].wakeonboot=off
-

--- a/net/etherwake/files/etherwake.init
+++ /dev/null
@@ -1,133 +1,1 @@
-#!/bin/sh /etc/rc.common
-# Copyright (C) 2009 OpenWrt.org
 
-NAME='etherwake'
-START=60
-PROGRAM=''
-
-start()
-{
-	local searchlist=''
-	local section=''
-	local value=''
-
-	config_load "${NAME}"
-
-	# check for available program
-	config_get searchlist 'setup' 'pathes'
-	PROGRAM=$(search_program "${searchlist}")
-	[ -z "${PROGRAM}" ] && {
-		echo "${initscript}: No ${NAME} program installed. Check: opkg list | grep ${NAME}"
-		exit 1
-	}
-
-	# sudo
-	config_get_bool value 'setup' 'sudo' '0'
-	[ "${value}" -ne 0 ] && PROGRAM="sudo ${PROGRAM}"
-
-	# interface
-	config_get value 'setup' 'interface'
-	[ -n "${value}" ] && append PROGRAM "-i ${value}"
-
-	# broadcast
-	config_get_bool value 'setup' 'broadcast' '0'
-	[ "${value}" -ne 0 ] && append PROGRAM '-b'
-
-	# wake up targets
-	config_foreach etherwake_start target $*
-}
-
-etherwake_start()
-{
-	local section="$1"
-	shift
-
-	local names="$*"
-
-	local value=''
-	local target=''
-
-	if [ -z "${names}" ]
-	 then
-		# check if boot target
-		config_get_bool value "${section}" 'wakeonboot' '0'
-		[ "${value}" -eq 0 ] && return 0
-
-		# wake up target
-		do_etherwake "${section}"
-		return $?
-	else
-		# name
-		config_get value "${section}" 'name'
-		[ -z "${value}" ] && return 0
-
-		for target in ${names}
-		 do
-			[ "${value}" != "${target}" ] && continue
-
-			# wake up target
-			do_etherwake "${section}"
-			return $?
-		done
-	fi
-}
-
-# execute etherwake command for target
-do_etherwake()
-{
-	local section="$1"
-	local value=''
-	local password=''
-	local args=''
-
-	# password
-	config_get value "${section}" 'password'
-	[ -n "${value}" ] && {
-		password=$(etherwake_password "${value}")
-		append args "-p ${password}"
-	}
-
-	# mac address
-	config_get value "${section}" 'mac'
-	[ -z "${value}" ] && { echo "${initscript}: Target ${section} has no MAC address"; return 1; }
-	append args "${value}"
-
-	# name
-	config_get value "${section}" 'name'
-	[ -z "${value}" ] && value="{section}"
-
-	# execute command
-	echo "${initscript}: Waking up ${value} via ${PROGRAM}${args:+ ${args}}"
-	${PROGRAM} ${args}
-	return $?
-}
-
-
-# find first available program from searchlist
-search_program()
-{
-	local searchlist="$1"
-	local test=''
-	local program=''
-
-	for test in ${searchlist} ; do
-		[ -x "${test}" ] && {
-			program="${test}"
-			break;
-		}
-	done
-
-	[ -n "${program}" ] && echo "${program}"
-
-	return
-}
-
-# prepare hex password
-etherwake_password()
-{
-	local delimiter=':'
-	local password=`echo "$1" | sed "s/../&${delimiter}/g"`
-	echo "${password%${delimiter}}"
-	return
-}
-

--- a/net/etherwake/patches/100-no_ether_hostton.patch
+++ /dev/null
@@ -1,38 +1,1 @@
---- etherwake-1.09.orig/ether-wake.c	2005-07-10 20:44:25.000000000 +0200
-+++ etherwake-1.09.orig.no_ether_hostton/ether-wake.c	2007-04-29 19:03:41.000000000 +0200
-@@ -15,7 +15,11 @@
- "	an optional password appended.\n"
- "\n"
- "	The single required parameter is the Ethernet MAC (station) address\n"
-+#if !defined(__UCLIBC__)
- "	of the machine to wake or a host ID with known NSS 'ethers' entry.\n"
-+#else
-+"	of the machine to wake.\n"
-+#endif
- "	The MAC address may be found with the 'arp' program while the target\n"
- "	machine is awake.\n"
- "\n"
-@@ -289,16 +293,22 @@
- 		if (debug)
- 			fprintf(stderr, "The target station address is %s.\n",
- 					ether_ntoa(eaddr));
-+#if !defined(__UCLIBC__)
- 	} else if (ether_hostton(hostid, eaddr) == 0) {
- 		if (debug)
- 			fprintf(stderr, "Station address for hostname %s is %s.\n",
- 					hostid, ether_ntoa(eaddr));
-+#endif
- 	} else {
- 		(void)fprintf(stderr,
- 					  "ether-wake: The Magic Packet host address must be "
- 					  "specified as\n"
-+#if !defined(__UCLIBC__)
- 					  "  - a station address, 00:11:22:33:44:55, or\n"
- 					  "  - a hostname with a known 'ethers' entry.\n");
-+#else
-+					  "  - a station address, 00:11:22:33:44:55\n");
-+#endif
- 		return -1;
- 	}
- 	return 0;
 

file:a/net/git/Makefile (deleted)
--- a/net/git/Makefile
+++ /dev/null
@@ -1,71 +1,1 @@
-#
-# Copyright (C) 2009-2014 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
 
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=git
-PKG_VERSION:=2.0.0
-PKG_RELEASE:=1
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_SOURCE_URL:=@KERNEL/software/scm/git/
-PKG_MD5SUM:=0646202ae979e4339f3e47f2375b5773
-
-PKG_INSTALL:=1
-PKG_BUILD_PARALLEL:=1
-
-include $(INCLUDE_DIR)/package.mk
-
-define Package/git
-  SECTION:=net
-  CATEGORY:=Network
-  SUBMENU:=Version Control Systems
-  DEPENDS:=+libopenssl +libpthread
-  TITLE:=The fast version control system
-  URL:=http://git-scm.com
-endef
-
-define Package/git/description
- Git is a free & open source, distributed version control system
- designed to handle everything from small to very large projects
- with speed and efficiency.
-endef
-
-MAKE_FLAGS := \
-	CC="$(TARGET_CC)" \
-	CFLAGS="$(TARGET_CFLAGS)" \
-	CPPFLAGS="$(TARGET_CPPFLAGS)" \
-	LDFLAGS="$(TARGET_LDFLAGS)" \
-	NO_CURL="YesPlease" \
-	NO_EXPAT="YesPlease" \
-	NO_MKSTEMPS="YesPlease" \
-	NO_GETTEXT="YesPlease" \
-	NO_UNIX_SOCKETS="YesPlease" \
-	NO_IPV6="YesPlease" \
-	NO_ICONV="YesPlease" \
-	NO_NSEC="YesPlease" \
-	NO_PERL="YesPlease" \
-	NO_PYTHON="YesPlease" \
-	NO_TCLTK="YesPlease"
-
-define Build/Configure
-	$(MAKE) -C $(PKG_BUILD_DIR) \
-		configure
-
-	( cd $(PKG_BUILD_DIR); \
-		./configure --prefix=/usr \
-	);
-endef
-
-define Package/git/install
-	$(INSTALL_DIR) $(1)
-	$(RM) $(PKG_INSTALL_DIR)/usr/bin/git-cvsserver
-	$(CP) $(PKG_INSTALL_DIR)/* $(1)/
-endef
-
-$(eval $(call BuildPackage,git))
-

--- a/net/git/patches/100-convert_builtin.patch
+++ /dev/null
@@ -1,234 +1,1 @@
---- a/Makefile
-+++ b/Makefile
-@@ -532,16 +532,7 @@ EXTRA_PROGRAMS =
- # ... and all the rest that could be moved out of bindir to gitexecdir
- PROGRAMS += $(EXTRA_PROGRAMS)
- 
--PROGRAM_OBJS += credential-store.o
--PROGRAM_OBJS += daemon.o
--PROGRAM_OBJS += fast-import.o
--PROGRAM_OBJS += http-backend.o
--PROGRAM_OBJS += imap-send.o
--PROGRAM_OBJS += sh-i18n--envsubst.o
--PROGRAM_OBJS += shell.o
--PROGRAM_OBJS += show-index.o
--PROGRAM_OBJS += upload-pack.o
--PROGRAM_OBJS += remote-testsvn.o
-+PROGRAM_OBJS =
- 
- # Binary suffix, set to .exe for Windows builds
- X =
-@@ -1002,6 +993,12 @@ BUILTIN_OBJS += builtin/var.o
- BUILTIN_OBJS += builtin/verify-pack.o
- BUILTIN_OBJS += builtin/verify-tag.o
- BUILTIN_OBJS += builtin/write-tree.o
-+BUILTIN_OBJS += builtin/daemon.o
-+BUILTIN_OBJS += builtin/fast-import.o
-+BUILTIN_OBJS += builtin/http-backend.o
-+BUILTIN_OBJS += builtin/imap-send.o
-+BUILTIN_OBJS += builtin/shell.o
-+BUILTIN_OBJS += builtin/upload-pack.o
- 
- GITLIBS = $(LIB_FILE) $(XDIFF_LIB)
- EXTLIBS =
-@@ -1165,7 +1162,7 @@ endif
- EXTLIBS += -lz
- 
- ifndef NO_OPENSSL
--	OPENSSL_LIBSSL = -lssl
-+	EXTLIBS += -lssl
- 	ifdef OPENSSLDIR
- 		BASIC_CFLAGS += -I$(OPENSSLDIR)/include
- 		OPENSSL_LINK = -L$(OPENSSLDIR)/$(lib) $(CC_LD_DYNPATH)$(OPENSSLDIR)/$(lib)
-@@ -2049,10 +2046,6 @@ endif
- git-%$X: %.o GIT-LDFLAGS $(GITLIBS)
- 	$(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) $(LIBS)
- 
--git-imap-send$X: imap-send.o GIT-LDFLAGS $(GITLIBS)
--	$(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) \
--		$(LIBS) $(OPENSSL_LINK) $(OPENSSL_LIBSSL) $(LIB_4_CRYPTO)
--
- git-http-fetch$X: http.o http-walker.o http-fetch.o GIT-LDFLAGS $(GITLIBS)
- 	$(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) \
- 		$(LIBS) $(CURL_LIBCURL)
-@@ -2364,24 +2357,22 @@ endif
- 	bindir=$$(cd '$(DESTDIR_SQ)$(bindir_SQ)' && pwd) && \
- 	execdir=$$(cd '$(DESTDIR_SQ)$(gitexec_instdir_SQ)' && pwd) && \
- 	{ test "$$bindir/" = "$$execdir/" || \
--	  for p in git$X $(filter $(install_bindir_programs),$(ALL_PROGRAMS)); do \
-+	  for p in $(filter $(install_bindir_programs),$(ALL_PROGRAMS)); do \
- 		$(RM) "$$execdir/$$p" && \
- 		test -z "$(NO_INSTALL_HARDLINKS)$(NO_CROSS_DIRECTORY_HARDLINKS)" && \
--		ln "$$bindir/$$p" "$$execdir/$$p" 2>/dev/null || \
-+		ln -s git "$$execdir/$$p" 2>/dev/null || \
- 		cp "$$bindir/$$p" "$$execdir/$$p" || exit; \
- 	  done; \
- 	} && \
- 	for p in $(filter $(install_bindir_programs),$(BUILT_INS)); do \
- 		$(RM) "$$bindir/$$p" && \
- 		test -z "$(NO_INSTALL_HARDLINKS)" && \
--		ln "$$bindir/git$X" "$$bindir/$$p" 2>/dev/null || \
- 		ln -s "git$X" "$$bindir/$$p" 2>/dev/null || \
- 		cp "$$bindir/git$X" "$$bindir/$$p" || exit; \
- 	done && \
- 	for p in $(BUILT_INS); do \
- 		$(RM) "$$execdir/$$p" && \
- 		test -z "$(NO_INSTALL_HARDLINKS)" && \
--		ln "$$execdir/git$X" "$$execdir/$$p" 2>/dev/null || \
- 		ln -s "git$X" "$$execdir/$$p" 2>/dev/null || \
- 		cp "$$execdir/git$X" "$$execdir/$$p" || exit; \
- 	done && \
---- a/builtin.h
-+++ b/builtin.h
-@@ -136,5 +136,11 @@ extern int cmd_verify_pack(int argc, con
- extern int cmd_show_ref(int argc, const char **argv, const char *prefix);
- extern int cmd_pack_refs(int argc, const char **argv, const char *prefix);
- extern int cmd_replace(int argc, const char **argv, const char *prefix);
-+extern int cmd_daemon(int argc, char **argv, const char *prefix);
-+extern int cmd_fast_import(int argc, char **argv, const char *prefix);
-+extern int cmd_http_backend(int argc, char **argv, const char *prefix);
-+extern int cmd_imap_send(int argc, char **argv, const char *prefix);
-+extern int cmd_shell(int argc, char **argv, const char *prefix);
-+extern int cmd_upload_pack(int argc, char **argv, const char *prefix);
- 
- #endif
---- /dev/null
-+++ b/builtin/daemon.c
-@@ -0,0 +1 @@
-+#include "../daemon.c"
---- /dev/null
-+++ b/builtin/fast-import.c
-@@ -0,0 +1 @@
-+#include "../fast-import.c"
---- /dev/null
-+++ b/builtin/http-backend.c
-@@ -0,0 +1 @@
-+#include "../http-backend.c"
---- /dev/null
-+++ b/builtin/imap-send.c
-@@ -0,0 +1 @@
-+#include "../imap-send.c"
---- /dev/null
-+++ b/builtin/shell.c
-@@ -0,0 +1 @@
-+#include "../shell.c"
---- /dev/null
-+++ b/builtin/upload-pack.c
-@@ -0,0 +1 @@
-+#include "../upload-pack.c"
---- a/daemon.c
-+++ b/daemon.c
-@@ -1125,7 +1125,7 @@ static int serve(struct string_list *lis
- 	return service_loop(&socklist);
- }
- 
--int main(int argc, char **argv)
-+int cmd_daemon(int argc, char **argv, const char *prefix)
- {
- 	int listen_port = 0;
- 	struct string_list listen_addr = STRING_LIST_INIT_NODUP;
---- a/fast-import.c
-+++ b/fast-import.c
-@@ -3356,7 +3356,7 @@ static void parse_argv(void)
- 		read_marks();
- }
- 
--int main(int argc, char **argv)
-+int cmd_fast_import(int argc, char **argv, const char *prefix)
- {
- 	unsigned int i;
- 
---- a/git.c
-+++ b/git.c
-@@ -275,11 +275,11 @@ static int handle_alias(int *argcp, cons
- 
- struct cmd_struct {
- 	const char *cmd;
--	int (*fn)(int, const char **, const char *);
-+	int (*fn)(int, char **, const char *);
- 	int option;
- };
- 
--static int run_builtin(struct cmd_struct *p, int argc, const char **argv)
-+static int run_builtin(struct cmd_struct *p, int argc, char **argv)
- {
- 	int status, help;
- 	struct stat st;
-@@ -359,6 +359,7 @@ static struct cmd_struct commands[] = {
- 	{ "config", cmd_config, RUN_SETUP_GENTLY },
- 	{ "count-objects", cmd_count_objects, RUN_SETUP },
- 	{ "credential", cmd_credential, RUN_SETUP_GENTLY },
-+	{ "daemon", cmd_daemon },
- 	{ "describe", cmd_describe, RUN_SETUP },
- 	{ "diff", cmd_diff },
- 	{ "diff-files", cmd_diff_files, RUN_SETUP | NEED_WORK_TREE },
-@@ -377,6 +378,8 @@ static struct cmd_struct commands[] = {
- 	{ "grep", cmd_grep, RUN_SETUP_GENTLY },
- 	{ "hash-object", cmd_hash_object },
- 	{ "help", cmd_help },
-+	{ "http-backend", cmd_http_backend },
-+	{ "imap-send", cmd_imap_send },
- 	{ "index-pack", cmd_index_pack, RUN_SETUP_GENTLY },
- 	{ "init", cmd_init_db },
- 	{ "init-db", cmd_init_db },
-@@ -424,6 +427,7 @@ static struct cmd_struct commands[] = {
- 	{ "revert", cmd_revert, RUN_SETUP | NEED_WORK_TREE },
- 	{ "rm", cmd_rm, RUN_SETUP },
- 	{ "send-pack", cmd_send_pack, RUN_SETUP },
-+	{ "shell", cmd_shell },
- 	{ "shortlog", cmd_shortlog, RUN_SETUP_GENTLY | USE_PAGER },
- 	{ "show", cmd_show, RUN_SETUP },
- 	{ "show-branch", cmd_show_branch, RUN_SETUP },
-@@ -440,6 +444,7 @@ static struct cmd_struct commands[] = {
- 	{ "update-server-info", cmd_update_server_info, RUN_SETUP },
- 	{ "upload-archive", cmd_upload_archive },
- 	{ "upload-archive--writer", cmd_upload_archive_writer },
-+	{ "upload-pack", cmd_upload_pack },
- 	{ "var", cmd_var, RUN_SETUP_GENTLY },
- 	{ "verify-pack", cmd_verify_pack },
- 	{ "verify-tag", cmd_verify_tag, RUN_SETUP },
---- a/http-backend.c
-+++ b/http-backend.c
-@@ -563,7 +563,7 @@ static struct service_cmd {
- 	{"POST", "/git-receive-pack$", service_rpc}
- };
- 
--int main(int argc, char **argv)
-+int cmd_http_backend(int argc, char **argv, const char *prefix)
- {
- 	char *method = getenv("REQUEST_METHOD");
- 	char *dir;
---- a/imap-send.c
-+++ b/imap-send.c
-@@ -1362,7 +1362,7 @@ static int git_imap_config(const char *k
- 	return 0;
- }
- 
--int main(int argc, char **argv)
-+int cmd_imap_send(int argc, char **argv, const char *prefix)
- {
- 	struct strbuf all_msgs = STRBUF_INIT;
- 	struct strbuf msg = STRBUF_INIT;
---- a/shell.c
-+++ b/shell.c
-@@ -142,7 +142,7 @@ static struct commands {
- 	{ NULL },
- };
- 
--int main(int argc, char **argv)
-+int cmd_shell(int argc, char **argv, const char *prefix)
- {
- 	char *prog;
- 	const char **user_argv;
---- a/upload-pack.c
-+++ b/upload-pack.c
-@@ -790,7 +790,7 @@ static int upload_pack_config(const char
- 	return parse_hide_refs_config(var, value, "uploadpack");
- }
- 
--int main(int argc, char **argv)
-+int cmd_upload_pack(int argc, char **argv, const char *prefix)
- {
- 	char *dir;
- 	int i;
 

--- a/net/git/patches/200-disable_fasthash.patch
+++ /dev/null
@@ -1,13 +1,1 @@
---- a/config.mak.uname
-+++ b/config.mak.uname
-@@ -17,9 +17,6 @@ endif
- # because maintaining the nesting to match is a pain.  If
- # we had "elif" things would have been much nicer...
- 
--ifeq ($(uname_M),x86_64)
--	XDL_FAST_HASH = YesPlease
--endif
- ifeq ($(uname_S),OSF1)
- 	# Need this for u_short definitions et al
- 	BASIC_CFLAGS += -D_OSF_SOURCE
 

file:a/net/irssi/Makefile (deleted)
--- a/net/irssi/Makefile
+++ /dev/null
@@ -1,99 +1,1 @@
-#
-# Copyright (C) 2006-2011 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
 
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=irssi
-PKG_VERSION:=0.8.15
-PKG_RELEASE:=2
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_SOURCE_URL:=http://irssi.org/files/
-PKG_MD5SUM:=1dcb3f511b88df94b0c996f36668c7da
-
-PKG_FIXUP:=autoreconf
-PKG_INSTALL:=1
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
-
-include $(INCLUDE_DIR)/package.mk
-include $(INCLUDE_DIR)/nls.mk
-
-define Package/irssi/Default
-  SUBMENU:=Instant Messaging
-  SECTION:=net
-  CATEGORY:=Network
-  DEPENDS:=+glib2 +libncurses +libpthread
-  TITLE:=Console IRC client
-  MAINTAINER:=Peter Wagner <tripolar@gmx.at>
-  URL:=http://irssi.org/
-endef
-
-define Package/irssi/Default/description
-	Irssi is a terminal based IRC client for UNIX systems.
-endef
-
-define Package/irssi
-$(call Package/irssi/Default)
-  TITLE+= (with OpenSSL support)
-  DEPENDS+= +libopenssl
-  VARIANT:=ssl
-endef
-
-define Package/irssi/description
-$(call Package/irssi/Default/description)
- This package is built with OpenSSL support.
-endef
-
-define Package/irssi-nossl
-$(call Package/irssi/Default)
-  TITLE+= (without OpenSSL support)
-  VARIANT:=nossl
-endef
-
-define Package/irssi-nossl/description
-$(call Package/irssi/Default/description)
- This package is built without OpenSSL support.
-endef
-
-CONFIGURE_ARGS += \
-	--with-perl=no \
-	--with-glib-prefix="$(STAGING_DIR)/usr" \
-	--with-textui \
-	--without-terminfo \
-	--without-bot \
-	--disable-proxy
-
-EXTRA_CFLAGS+=$(TARGET_CPPFLAGS)
-EXTRA_LDFLAGS+=-lncurses
-
-ifeq ($(BUILD_VARIANT),ssl)
-	CONFIGURE_ARGS += \
-		--with-ssl="$(STAGING_DIR)/usr"
-endif
-
-ifeq ($(BUILD_VARIANT),nossl)
-	CONFIGURE_ARGS += \
-		--without-ssl \
-		--disable-ssl
-endif
-
-define Build/InstallDev
-	$(INSTALL_DIR) $(1)/usr/include/irssi
-	$(CP) $(PKG_INSTALL_DIR)/usr/include/irssi/* $(1)/usr/include/irssi/
-endef
-
-define Package/irssi/install
-	$(INSTALL_DIR) $(1)/usr/bin
-	$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/$(PKG_NAME) $(1)/usr/bin/$(PKG_NAME)
-endef
-
-Package/irssi-nossl/install = $(Package/irssi/install)
-
-$(eval $(call BuildPackage,irssi))
-$(eval $(call BuildPackage,irssi-nossl))
-

file:a/net/net-snmp/Makefile (deleted)
--- a/net/net-snmp/Makefile
+++ /dev/null
@@ -1,263 +1,1 @@
-#
-# Copyright (C) 2006-2012 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
 
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=net-snmp
-PKG_VERSION:=5.4.2.1
-PKG_RELEASE:=5
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=@SF/net-snmp
-PKG_MD5SUM:=984932520143f0c8bf7b7ce1fc9e1da1
-
-PKG_FIXUP = patch-libtool
-
-include $(INCLUDE_DIR)/package.mk
-
-define Package/net-snmp/Default
-  SECTION:=net
-  CATEGORY:=Network
-  URL:=http://www.net-snmp.org/
-endef
-
-define Package/net-snmp/Default/description
- Simple Network Management Protocol (SNMP) is a widely used protocol for
- monitoring the health and welfare of network equipment (eg. routers),
- computer equipment and even devices like UPSs. Net-SNMP is a suite of
- applications used to implement SNMP v1, SNMP v2c and SNMP v3 using both
- IPv4 and IPv6.
-endef
-
-
-define Package/libnetsnmp
-$(call Package/net-snmp/Default)
-  SECTION:=libs
-  CATEGORY:=Libraries
-  DEPENDS:=+libelf1
-  TITLE:=Open source SNMP implementation (libraries)
-endef
-
-define Package/libnetsnmp/description
-$(call Package/net-snmp/Default/description)
- .
- This package contains shared libraries, needed by other programs.
-endef
-
-
-define Package/snmp-utils
-$(call Package/net-snmp/Default)
-  DEPENDS:=+libnetsnmp
-  TITLE:=Open source SNMP implementation (utilities)
-endef
-
-define Package/snmp-utils/description
-$(call Package/net-snmp/Default/description)
- .
- This package contains SNMP client utilities.
-endef
-
-
-define Package/snmpd
-$(call Package/net-snmp/Default)
-  DEPENDS:=+libnetsnmp
-  TITLE:=Open source SNMP implementation (daemon)
-endef
-
-define Package/snmpd/description
-$(call Package/net-snmp/Default/description)
- .
- This package contains the SNMP agent, dynamically linked.
-endef
-
-
-define Package/snmpd-static
-$(call Package/net-snmp/Default)
-  TITLE:=Open source SNMP implementation (daemon)
-  DEPENDS:=+libelf1
-endef
-
-define Package/snmpd-static/description
-$(call Package/net-snmp/Default/description)
- .
- This package contains the SNMP agent, statically linked.
-endef
-
-
-SNMP_MIB_MODULES_INCLUDED = \
-	host/hr_device \
-	host/hr_disk \
-	host/hr_filesys \
-	host/hr_network \
-	host/hr_partition \
-	host/hr_proc \
-	host/hr_storage \
-	host/hr_system \
-	ieee802dot11 \
-	if-mib/ifXTable \
-	mibII/at \
-	mibII/icmp \
-	mibII/ifTable \
-	mibII/ip \
-	mibII/snmp_mib \
-	mibII/sysORTable \
-	mibII/system_mib \
-	mibII/tcp \
-	mibII/udp \
-	mibII/vacm_context \
-	mibII/vacm_vars \
-	snmpv3/snmpEngine \
-	snmpv3/snmpMPDStats \
-	snmpv3/usmConf \
-	snmpv3/usmStats \
-	snmpv3/usmUser \
-	tunnel \
-	ucd-snmp/disk \
-	ucd-snmp/dlmod \
-	ucd-snmp/extensible \
-	ucd-snmp/loadave \
-	ucd-snmp/memory \
-	ucd-snmp/pass \
-	ucd-snmp/proc \
-	ucd-snmp/vmstat \
-	util_funcs \
-	utilities/execute \
-
-SNMP_MIB_MODULES_EXCLUDED = \
-	agent_mibs \
-	agentx \
-	disman/event \
-	disman/schedule \
-	hardware \
-	host \
-	if-mib \
-	mibII \
-	notification \
-	notification-log-mib \
-	snmpv3mibs \
-	target \
-	tcp-mib \
-	ucd_snmp \
-	udp-mib \
-	utilities \
-
-SNMP_TRANSPORTS_INCLUDED = Callback UDP
-
-SNMP_TRANSPORTS_EXCLUDED = TCP TCPIPv6 Unix
-
-TARGET_CFLAGS += $(FPIC)
-
-CONFIGURE_ARGS += \
-	--enable-mfd-rewrites \
-	--enable-shared \
-	--enable-static \
-	--with-endianness=$(if $(CONFIG_BIG_ENDIAN),big,little) \
-	--with-logfile=/var/log/snmpd.log \
-	--with-persistent-directory=/usr/lib/snmp/ \
-	--with-default-snmp-version=1 \
-	--with-sys-contact=root@localhost \
-	--with-sys-location=Unknown \
-	--enable-applications \
-	--disable-debugging \
-	--disable-manuals \
-	--disable-mibs \
-	--disable-scripts \
-	--with-out-mib-modules="$(SNMP_MIB_MODULES_EXCLUDED)" \
-	--with-mib-modules="$(SNMP_MIB_MODULES_INCLUDED)" \
-	--with-out-transports="$(SNMP_TRANSPORTS_EXCLUDED)" \
-	--with-transports="$(SNMP_TRANSPORTS_INCLUDED)" \
-	--without-openssl \
-	--without-libwrap \
-	--without-rpm \
-	--without-zlib \
-	 $(call autoconf_bool,CONFIG_IPV6,ipv6) \
-
-ifeq ($(CONFIG_IPV6),y)
-SNMP_TRANSPORTS_INCLUDED+= UDPIPv6
-endif
-
-TARGET_LDFLAGS += -L$(TOOLCHAIN_DIR)/usr/lib
-
-ifdef CONFIG_PACKAGE_snmpd-static
-  define Build/Compile/static
-	$(MAKE) -C $(PKG_BUILD_DIR)/agent \
-		LDFLAGS="$(TARGET_LDFLAGS) -lm -static" \
-		EXEEXT="-static" \
-		snmpd-static
-  endef
-endif
-
-define Build/Compile
-	$(MAKE) -C $(PKG_BUILD_DIR) \
-		INSTALL_PREFIX="$(PKG_INSTALL_DIR)" \
-		LDFLAGS="$(TARGET_LDFLAGS) -lm -lc" \
-		all install
-	$(Build/Compile/static)
-endef
-
-define Build/InstallDev
-	$(INSTALL_DIR) $(2)/bin
-	$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/net-snmp-config $(2)/bin/
-	$(SED) 's,=/usr,=$(STAGING_DIR)/usr,g' $(2)/bin/net-snmp-config
-
-	$(INSTALL_DIR) $(1)/usr/include
-	$(CP) $(PKG_INSTALL_DIR)/usr/include/net-snmp $(1)/usr/include/
-	$(INSTALL_DIR) $(1)/usr/lib
-	$(CP) $(PKG_INSTALL_DIR)/usr/lib/libnetsnmp{,agent,helpers,mibs}.{a,so*} $(1)/usr/lib/
-endef
-
-define Package/libnetsnmp/install
-	$(INSTALL_DIR) $(1)/usr/lib
-	$(CP) $(PKG_INSTALL_DIR)/usr/lib/libnetsnmp{,agent,helpers,mibs}.so.* $(1)/usr/lib/
-endef
-
-define Package/snmpd/conffiles
-/etc/default/snmpd
-/etc/config/snmpd
-endef
-
-define Package/snmpd/install
-	$(INSTALL_DIR) $(1)/etc/config
-	$(INSTALL_DATA) ./files/snmpd.conf $(1)/etc/config/snmpd
-	$(INSTALL_DIR) $(1)/etc/snmp
-	ln -sf /var/run/snmpd.conf $(1)/etc/snmp/
-	$(INSTALL_DIR) $(1)/etc/default
-	$(INSTALL_DATA) ./files/snmpd.default $(1)/etc/default/snmpd
-	$(INSTALL_DIR) $(1)/etc/init.d
-	$(INSTALL_BIN) ./files/snmpd.init $(1)/etc/init.d/snmpd
-	$(INSTALL_DIR) $(1)/usr/sbin
-	$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/snmpd $(1)/usr/sbin/snmpd
-endef
-
-define Package/snmpd-static/conffiles
-/etc/default/snmpd
-/etc/config/snmpd
-endef
-
-define Package/snmpd-static/install
-	$(INSTALL_DIR) $(1)/etc/config
-	$(INSTALL_DATA) ./files/snmpd.conf $(1)/etc/config/snmpd
-	$(INSTALL_DIR) $(1)/etc/snmp
-	ln -sf /var/run/snmpd.conf $(1)/etc/snmp/
-	$(INSTALL_DIR) $(1)/etc/default
-	$(INSTALL_DATA) ./files/snmpd.default $(1)/etc/default/snmpd
-	$(INSTALL_DIR) $(1)/etc/init.d
-	$(INSTALL_BIN) ./files/snmpd.init $(1)/etc/init.d/snmpd
-	$(INSTALL_DIR) $(1)/usr/sbin
-	$(INSTALL_BIN) $(PKG_BUILD_DIR)/agent/snmpd-static $(1)/usr/sbin/snmpd
-endef
-
-define Package/snmp-utils/install
-	$(INSTALL_DIR) $(1)/usr/bin
-	$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/snmp{get,set,status,test,trap,walk} $(1)/usr/bin/
-endef
-
-$(eval $(call BuildPackage,libnetsnmp))
-$(eval $(call BuildPackage,snmp-utils))
-$(eval $(call BuildPackage,snmpd))
-$(eval $(call BuildPackage,snmpd-static))
-

--- a/net/net-snmp/files/snmpd.conf
+++ /dev/null
@@ -1,83 +1,1 @@
-config agent
-	option agentaddress UDP:161
 
-config com2sec public
-	option secname ro
-	option source default
-	option community public
-
-config com2sec private
-	option secname rw
-	option source localhost
-	option community private
-
-config group public_v1
-	option group public
-	option version v1
-	option secname ro
-
-config group public_v2c
-	option group public
-	option version v2c
-	option secname ro
-
-config group public_usm
-	option group public
-	option version usm
-	option secname ro
-
-config group private_v1
-	option group private
-	option version v1
-	option secname rw
-
-config group private_v2c
-	option group private
-	option version v2c
-	option secname rw
-
-config group private_usm
-	option group private
-	option version usm
-	option secname rw
-
-config view all
-	option viewname all
-	option type included
-	option oid .1
-
-config access public_access
-	option group public
-	option context none
-	option version any
-	option level noauth
-	option prefix exact
-	option read all
-	option write none
-	option notify none
-
-config access private_access
-	option group private
-	option context none
-	option version any
-	option level noauth
-	option prefix exact
-	option read all
-	option write all
-	option notify all
-
-config system
-	option sysLocation	'office'
-	option sysContact	'bofh@example.com'
-	option sysName		'HeartOfGold'
-#	option sysServices	72
-#	option sysDescr		'adult playground'
-#	option sysObjectID	'1.2.3.4'
-
-config exec
-	option name	filedescriptors
-	option prog	/bin/cat
-	option args	/proc/sys/fs/file-nr
-#	option miboid	1.2.3.4
-
-

--- a/net/net-snmp/files/snmpd.default
+++ /dev/null
@@ -1,2 +1,1 @@
-OPTIONS="-Lf /dev/null -p /var/run/snmpd.pid"
 

--- a/net/net-snmp/files/snmpd.init
+++ /dev/null
@@ -1,147 +1,1 @@
-#!/bin/sh /etc/rc.common
-# Copyright (C) 2008 OpenWrt.org
-START=50
 
-DEFAULT=/etc/default/snmpd
-LIB_D=/var/lib/snmp
-LOG_D=/var/log
-RUN_D=/var/run
-PID_F=$RUN_D/snmpd.pid
-RUN_C=$RUN_D/snmpd.conf
-
-snmpd_agent_add() {
-	local cfg="$1"
-
-	config_get agentaddress "$cfg" agentaddress
-	[ -n "$agentaddress" ] || return 0
-	echo "agentaddress $agentaddress" >> $RUN_C
-}
-snmpd_system_add() {
-	local cfg="$1"
-	config_get syslocation "$cfg" sysLocation
-	[ -n "$syslocation" ] && echo "sysLocation $syslocation" >> $RUN_C
-	config_get syscontact "$cfg" sysContact
-	[ -n "$syscontact" ] && echo "sysContact $syscontact" >> $RUN_C
-	config_get sysname "$cfg" sysName
-	[ -n "$sysname" ] && echo "sysName $sysname" >> $RUN_C
-	config_get sysservice "$cfg" sysService
-	[ -n "$sysservice" ] && echo "sysService $sysservice" >> $RUN_C
-	config_get sysdescr "$cfg" sysDescr
-	[ -n "$sysdescr" ] && echo "sysDescr $sysdescr" >> $RUN_C
-	config_get sysobjectid "$cfg" sysObjectID
-	[ -n "$sysobjectid" ] && echo "sysObjectID $sysobjectid" >> $RUN_C
-}
-snmpd_com2sec_add() {
-	local cfg="$1"
-	config_get secname "$cfg" secname
-	[ -n "$secname" ] || return 0
-	config_get source "$cfg" source
-	[ -n "$source" ] || return 0
-	config_get community "$cfg" community
-	[ -n "$community" ] || return 0
-	echo "com2sec $secname $source $community" >> $RUN_C
-}
-snmpd_com2sec6_add() {
-	local cfg="$1"
-	config_get secname "$cfg" secname
-	[ -n "$secname" ] || return 0
-	config_get source "$cfg" source
-	[ -n "$source" ] || return 0
-	config_get community "$cfg" community
-	[ -n "$community" ] || return 0
-	echo "com2sec6 $secname $source $community" >> $RUN_C
-}
-snmpd_group_add() {
-	local cfg="$1"
-	config_get group "$cfg" group
-	[ -n "$group" ] || return 0
-	config_get version "$cfg" version
-	[ -n "$version" ] || return 0
-	config_get secname "$cfg" secname
-	[ -n "$secname" ] || return 0
-	echo "group $group $version $secname" >> $RUN_C
-}
-snmpd_view_add() {
-	local cfg="$1"
-	config_get viewname "$cfg" viewname
-	[ -n "$viewname" ] || return 0
-	config_get type "$cfg" type
-	[ -n "$type" ] || return 0
-	config_get oid "$cfg" oid
-	[ -n "$oid" ] || return 0
-	# optional mask
-	config_get mask "$cfg" mask
-	echo "view $viewname $type $oid $mask" >> $RUN_C
-}
-snmpd_access_add() {
-	local cfg="$1"
-	config_get group "$cfg" group
-	[ -n "$group" ] || return 0
-	config_get context "$cfg" context
-	[ -n $context ] || return 0
-	[ "$context" == "none" ] && context='""'
-	config_get version "$cfg" version
-	[ -n "$version" ] || return 0
-	config_get level "$cfg" level
-	[ -n "$level" ] || return 0
-	config_get prefix "$cfg" prefix
-	[ -n "$prefix" ] || return 0
-	config_get read "$cfg" read
-	[ -n "$read" ] || return 0
-	config_get write "$cfg" write
-	[ -n "$write" ] || return 0
-	config_get notify "$cfg" notify
-	[ -n "$notify" ] || return 0
-	echo "access $group $context $version $level $prefix $read $write $notify" >> $RUN_C
-}
-snmpd_pass_add() {
-	local cfg="$1"
-	local pass='pass'
-
-	config_get miboid "$cfg" miboid
-	[ -n "$miboid" ] || return 0
-	config_get prog "$cfg" prog
-	[ -n "$prog" ] || return 0
-	config_get_bool persist "$cfg" persist 0
-	[ $persist -ne 0 ] && pass='pass_persist'
-	config_get priority "$cfg" priority
-	priority=${priority:+-p $priority}
-	echo "$pass $priority $miboid $prog" >> $RUN_C
-}
-snmpd_exec_add() {
-	local cfg="$1"
-
-	config_get name "$cfg" name
-	[ -n "$name" ] || return 0
-	config_get prog "$cfg" prog
-	[ -n "$prog" ] || return 0
-	config_get args "$cfg" args
-	config_get miboid "$cfg" miboid
-	echo "exec $miboid $name $prog $args" >> $RUN_C
-}
-start() {
-	[ -d $LIB_D ] || mkdir -p $LIB_D
-	[ -d $LOG_D ] || mkdir -p $LOG_D
-	[ -d $RUN_D ] || mkdir -p $RUN_D
-	[ -f $RUN_C ] && rm -f $RUN_C
-
-	config_load snmpd
-
-	config_foreach snmpd_agent_add agent
-	config_foreach snmpd_system_add system
-	config_foreach snmpd_com2sec_add com2sec
-	config_foreach snmpd_com2sec6_add com2sec6
-	config_foreach snmpd_group_add group
-	config_foreach snmpd_view_add view
-	config_foreach snmpd_access_add access
-	config_foreach snmpd_pass_add pass
-	config_foreach snmpd_exec_add exec
-
-	[ -f $DEFAULT ] && . $DEFAULT
-	$DEBUG /usr/sbin/snmpd $OPTIONS
-}
-stop() {
-	[ -f $PID_F ] && kill $(cat $PID_F)
-	[ -f $RUN_C ] && rm -f $RUN_C
-}
-

--- a/net/net-snmp/patches/100-debian-statistics.patch
+++ /dev/null
@@ -1,23 +1,1 @@
---- a/agent/mibgroup/mibII/interfaces.c
-+++ b/agent/mibgroup/mibII/interfaces.c
-@@ -1550,6 +1550,10 @@ Interface_Scan_Init(void)
-         struct ifnet   *nnew;
-         char           *stats, *ifstart = line;
- 
-+	/* Ignore interfaces with no statistics. */
-+	if (strstr(line, "No statistics available."))
-+	    continue;
-+
-         if (line[strlen(line) - 1] == '\n')
-             line[strlen(line) - 1] = '\0';
- 
-@@ -1583,7 +1587,7 @@ Interface_Scan_Init(void)
-                                                &coll) != 5)) {
-             if ((scan_line_to_use == scan_line_2_2)
-                 && !strstr(line, "No statistics available"))
--                snmp_log(LOG_ERR,
-+                snmp_log(LOG_DEBUG,
-                          "/proc/net/dev data format error, line ==|%s|",
-                          line);
-             continue;
 

--- a/net/net-snmp/patches/110-debian-makefiles.patch
+++ /dev/null
@@ -1,41 +1,1 @@
---- a/local/Makefile.in
-+++ b/local/Makefile.in
-@@ -100,7 +100,7 @@ tkmib.made: $(srcdir)/tkmib
- 
- mib2c.made: $(srcdir)/mib2c
- 	if test "x$(PERL)" != "x" ; then \
--	  $(PERL) -p -e 's%^#!.*/perl.*%#!$(PERL)%;s#/usr/local/share/snmp#$(snmplibdir)#;' ${srcdir}/mib2c > mib2c.made; \
-+	  $(PERL) -p -e 's%^#!.*/perl.*%#!$(PERL)%;s#/usr/local/share/snmp#$(snmplibdir)#;s#/usr/local/etc/snmp#$(SNMPCONFPATH)#;' ${srcdir}/mib2c > mib2c.made; \
- 	else \
- 	  touch mib2c.made; \
-         fi
---- a/mibs/Makefile.in
-+++ b/mibs/Makefile.in
-@@ -48,11 +48,15 @@ NETSNMPMIBS = NET-SNMP-TC.txt NET-SNMP-M
- UCDMIBS = UCD-SNMP-MIB.txt UCD-DEMO-MIB.txt UCD-IPFWACC-MIB.txt \
- 	UCD-DLMOD-MIB.txt UCD-DISKIO-MIB.txt
- 
-+EXTRAMIBS = BGP4-MIB.txt BRIDGE-MIB.txt GNOME-SMI.txt OSPF-MIB.txt \
-+	OSPF-TRAP-MIB.txt RIPv2-MIB.txt SOURCE-ROUTING-MIB.txt \
-+	LM-SENSORS-MIB.txt
-+
- DEFAULTMIBS = @default_mibs_install@
- 
- MIBS	= $(V1MIBS) $(V2MIBS) $(V3MIBS) $(RFCMIBS) \
- 	$(AGENTMIBS) $(IANAMIBS) \
--	$(NETSNMPMIBS) $(UCDMIBS) $(DEFAULTMIBS)
-+	$(NETSNMPMIBS) $(UCDMIBS) $(DEFAULTMIBS) $(EXTRAMIBS)
- 
- all: standardall
- 
---- a/Makefile.top
-+++ b/Makefile.top
-@@ -26,6 +26,7 @@ man8dir		= $(mandir)/man8
- snmplibdir	= $(datadir)/snmp
- mibdir		= $(snmplibdir)/mibs
- persistentdir	= @PERSISTENT_DIRECTORY@
-+sysconfdir	= @sysconfdir@
- DESTDIR         = @INSTALL_PREFIX@
- INSTALL_PREFIX  = $(DESTDIR)
- 
 

--- a/net/net-snmp/patches/120-debian-searchdirs.patch
+++ /dev/null
@@ -1,15 +1,1 @@
---- a/local/mib2c
-+++ b/local/mib2c
-@@ -60,8 +60,9 @@ $currentlevel = -1;
- if($ENV{MIB2C_DIR}) {
-    push @def_search_dirs, split(/:/, $ENV{MIB2C_DIR});
- }
--push @def_search_dirs, "/usr/local/share/snmp/";
--push @def_search_dirs, "/usr/local/share/snmp/mib2c-data";
-+push @def_search_dirs, "/etc/snmp/";
-+push @def_search_dirs, "/usr/share/snmp/";
-+push @def_search_dirs, "/usr/share/snmp/mib2c-data";
- push @def_search_dirs, "./mib2c-conf.d";
- 
- sub usage {
 

--- a/net/net-snmp/patches/130-debian-extramibs.patch
+++ /dev/null
@@ -1,6262 +1,1 @@
---- /dev/null
-+++ b/mibs/BGP4-MIB.txt
-@@ -0,0 +1,929 @@
-+    BGP4-MIB DEFINITIONS ::= BEGIN
-+
-+        IMPORTS
-+            MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE,
-+            IpAddress, Integer32, Counter32, Gauge32, mib-2
-+                FROM SNMPv2-SMI
-+            MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP
-+                FROM SNMPv2-CONF;
-+
-+        bgp MODULE-IDENTITY
-+            LAST-UPDATED "9902100000Z"
-+            ORGANIZATION "IETF IDR Working Group"
-+            CONTACT-INFO "E-mail:  idr@merit.net
-+
-+                          Susan Hares  (Editor)
-+                          Merit Network
-+                          4251 Plymouth Road
-+                          Suite C
-+                          Ann Arbor, MI 48105-2785
-+                          Tel: +1 734 936 2095
-+                          Fax: +1 734 647 3185
-+                          E-mail: skh@merit.edu
-+
-+                          Jeff Johnson (Editor)
-+                          RedBack Networks, Inc.
-+                          1389 Moffett Park Drive
-+                          Sunnyvale, CA  94089-1134
-+                          Tel: +1 408 548 3516
-+                          Fax: +1 408 548 3599
-+                          E-mail: jeff@redback.com"
-+            DESCRIPTION
-+                    "The MIB module for BGP-4."
-+            REVISION    "9902100000Z"
-+            DESCRIPTION
-+                    "Corrected duplicate OBJECT IDENTIFIER
-+                     assignment in the conformance information."
-+            REVISION    "9601080000Z"
-+            DESCRIPTION
-+                    "1) Fixed the definitions of the traps to
-+                     make them equivalent to their initial
-+                     definition in RFC 1269.
-+                     2) Added compliance and conformance info."
-+            ::= { mib-2 15 }
-+
-+        bgpVersion OBJECT-TYPE
-+            SYNTAX     OCTET STRING (SIZE (1..255))
-+            MAX-ACCESS read-only
-+            STATUS     current
-+            DESCRIPTION
-+                    "Vector of supported BGP protocol version
-+                    numbers.  Each peer negotiates the version
-+                    from this vector.  Versions are identified
-+                    via the string of bits contained within this
-+                    object.  The first octet contains bits 0 to
-+                    7, the second octet contains bits 8 to 15,
-+                    and so on, with the most significant bit
-+                    referring to the lowest bit number in the
-+                    octet (e.g., the MSB of the first octet
-+                    refers to bit 0).  If a bit, i, is present
-+                    and set, then the version (i+1) of the BGP
-+                    is supported."
-+            ::= { bgp 1 }
-+
-+        bgpLocalAs OBJECT-TYPE
-+            SYNTAX     INTEGER (0..65535)
-+            MAX-ACCESS read-only
-+            STATUS     current
-+            DESCRIPTION
-+                    "The local autonomous system number."
-+            ::= { bgp 2 }
-+
-+
-+
-+        -- BGP Peer table.  This table contains, one entry per BGP
-+        -- peer, information about the BGP peer.
-+
-+        bgpPeerTable OBJECT-TYPE
-+            SYNTAX     SEQUENCE OF BgpPeerEntry
-+            MAX-ACCESS not-accessible
-+            STATUS     current
-+            DESCRIPTION
-+                    "BGP peer table.  This table contains,
-+                    one entry per BGP peer, information about the
-+                    connections with BGP peers."
-+            ::= { bgp 3 }
-+
-+        bgpPeerEntry OBJECT-TYPE
-+            SYNTAX     BgpPeerEntry
-+            MAX-ACCESS not-accessible
-+            STATUS     current
-+            DESCRIPTION
-+                    "Entry containing information about the
-+                    connection with a BGP peer."
-+            INDEX { bgpPeerRemoteAddr }
-+            ::= { bgpPeerTable 1 }
-+
-+        BgpPeerEntry ::= SEQUENCE {
-+                bgpPeerIdentifier
-+                    IpAddress,
-+                bgpPeerState
-+                    INTEGER,
-+                bgpPeerAdminStatus
-+                    INTEGER,
-+                bgpPeerNegotiatedVersion
-+                    Integer32,
-+                bgpPeerLocalAddr
-+                    IpAddress,
-+                bgpPeerLocalPort
-+                    INTEGER,
-+                bgpPeerRemoteAddr
-+                    IpAddress,
-+                bgpPeerRemotePort
-+                    INTEGER,
-+                bgpPeerRemoteAs
-+                    INTEGER,
-+                bgpPeerInUpdates
-+                    Counter32,
-+                bgpPeerOutUpdates
-+                    Counter32,
-+                bgpPeerInTotalMessages
-+                    Counter32,
-+                bgpPeerOutTotalMessages
-+                    Counter32,
-+                bgpPeerLastError
-+                    OCTET STRING,
-+                bgpPeerFsmEstablishedTransitions
-+                    Counter32,
-+                bgpPeerFsmEstablishedTime
-+                    Gauge32,
-+                bgpPeerConnectRetryInterval
-+                    INTEGER,
-+                bgpPeerHoldTime
-+                    INTEGER,
-+                bgpPeerKeepAlive
-+                    INTEGER,
-+                bgpPeerHoldTimeConfigured
-+                    INTEGER,
-+                bgpPeerKeepAliveConfigured
-+                    INTEGER,
-+                bgpPeerMinASOriginationInterval
-+                    INTEGER,
-+                bgpPeerMinRouteAdvertisementInterval
-+                    INTEGER,
-+                bgpPeerInUpdateElapsedTime
-+                    Gauge32
-+                }
-+
-+        bgpPeerIdentifier OBJECT-TYPE
-+            SYNTAX     IpAddress
-+            MAX-ACCESS read-only
-+            STATUS     current
-+            DESCRIPTION
-+                    "The BGP Identifier of this entry's BGP peer."
-+            ::= { bgpPeerEntry 1 }
-+
-+        bgpPeerState OBJECT-TYPE
-+            SYNTAX     INTEGER {
-+                                idle(1),
-+                                connect(2),
-+                                active(3),
-+                                opensent(4),
-+                                openconfirm(5),
-+                                established(6)
-+                       }
-+            MAX-ACCESS read-only
-+            STATUS     current
-+            DESCRIPTION
-+                    "The BGP peer connection state."
-+            ::= { bgpPeerEntry 2 }
-+
-+        bgpPeerAdminStatus OBJECT-TYPE
-+            SYNTAX     INTEGER {
-+                                stop(1),
-+                                start(2)
-+                       }
-+            MAX-ACCESS read-write
-+            STATUS     current
-+            DESCRIPTION
-+                    "The desired state of the BGP connection.  A
-+                    transition from 'stop' to 'start' will cause
-+                    the BGP Start Event to be generated.  A
-+                    transition from 'start' to 'stop' will cause
-+                    the BGP Stop Event to be generated.  This
-+                    parameter can be used to restart BGP peer
-+                    connections.  Care should be used in providing
-+                    write access to this object without adequate
-+                    authentication."
-+            ::= { bgpPeerEntry 3 }
-+
-+        bgpPeerNegotiatedVersion OBJECT-TYPE
-+            SYNTAX     Integer32
-+            MAX-ACCESS read-only
-+            STATUS     current
-+            DESCRIPTION
-+                    "The negotiated version of BGP running between
-+                    the two peers."
-+            ::= { bgpPeerEntry 4 }
-+
-+        bgpPeerLocalAddr OBJECT-TYPE
-+            SYNTAX     IpAddress
-+            MAX-ACCESS read-only
-+            STATUS     current
-+            DESCRIPTION
-+                    "The local IP address of this entry's BGP
-+                    connection."
-+            ::= { bgpPeerEntry 5 }
-+
-+        bgpPeerLocalPort OBJECT-TYPE
-+            SYNTAX     INTEGER (0..65535)
-+            MAX-ACCESS read-only
-+            STATUS     current
-+            DESCRIPTION
-+                    "The local port for the TCP connection between
-+                    the BGP peers."
-+            ::= { bgpPeerEntry 6 }
-+
-+        bgpPeerRemoteAddr OBJECT-TYPE
-+            SYNTAX     IpAddress
-+            MAX-ACCESS read-only
-+            STATUS     current
-+            DESCRIPTION
-+                    "The remote IP address of this entry's BGP
-+                    peer."
-+            ::= { bgpPeerEntry 7 }
-+
-+        bgpPeerRemotePort OBJECT-TYPE
-+            SYNTAX     INTEGER (0..65535)
-+            MAX-ACCESS read-only
-+            STATUS     current
-+            DESCRIPTION
-+                    "The remote port for the TCP connection between
-+                    the BGP peers.  Note that the objects
-+                    bgpPeerLocalAddr, bgpPeerLocalPort,
-+                    bgpPeerRemoteAddr and bgpPeerRemotePort
-+                    provide the appropriate reference to the
-+                    standard MIB TCP connection table."
-+            ::= { bgpPeerEntry 8 }
-+
-+        bgpPeerRemoteAs OBJECT-TYPE
-+            SYNTAX     INTEGER (0..65535)
-+            MAX-ACCESS read-only
-+            STATUS     current
-+            DESCRIPTION
-+                    "The remote autonomous system number."
-+            ::= { bgpPeerEntry 9 }
-+
-+        bgpPeerInUpdates OBJECT-TYPE
-+            SYNTAX     Counter32
-+            MAX-ACCESS read-only
-+            STATUS     current
-+            DESCRIPTION
-+                    "The number of BGP UPDATE messages received on
-+                    this connection.  This object should be
-+                    initialized to zero (0) when the connection is
-+                    established."
-+            ::= { bgpPeerEntry 10 }
-+
-+        bgpPeerOutUpdates OBJECT-TYPE
-+            SYNTAX     Counter32
-+            MAX-ACCESS read-only
-+            STATUS     current
-+            DESCRIPTION
-+                    "The number of BGP UPDATE messages transmitted
-+                    on this connection.  This object should be
-+                    initialized to zero (0) when the connection is
-+                    established."
-+            ::= { bgpPeerEntry 11 }
-+
-+        bgpPeerInTotalMessages OBJECT-TYPE
-+            SYNTAX     Counter32
-+            MAX-ACCESS read-only
-+            STATUS     current
-+            DESCRIPTION
-+                    "The total number of messages received from the
-+                    remote peer on this connection.  This object
-+                    should be initialized to zero when the
-+                    connection is established."
-+            ::= { bgpPeerEntry 12 }
-+
-+        bgpPeerOutTotalMessages OBJECT-TYPE
-+            SYNTAX     Counter32
-+            MAX-ACCESS read-only
-+            STATUS     current
-+            DESCRIPTION
-+                    "The total number of messages transmitted to
-+                    the remote peer on this connection.  This object
-+                    should be initialized to zero when the
-+                    connection is established."
-+            ::= { bgpPeerEntry 13 }
-+
-+        bgpPeerLastError OBJECT-TYPE
-+            SYNTAX     OCTET STRING (SIZE (2))
-+            MAX-ACCESS read-only
-+            STATUS     current
-+            DESCRIPTION
-+                    "The last error code and subcode seen by this
-+                    peer on this connection.  If no error has
-+                    occurred, this field is zero.  Otherwise, the
-+                    first byte of this two byte OCTET STRING
-+                    contains the error code, and the second byte
-+                    contains the subcode."
-+            ::= { bgpPeerEntry 14 }
-+
-+        bgpPeerFsmEstablishedTransitions OBJECT-TYPE
-+            SYNTAX     Counter32
-+            MAX-ACCESS read-only
-+            STATUS     current
-+            DESCRIPTION
-+                    "The total number of times the BGP FSM
-+                    transitioned into the established state."
-+            ::= { bgpPeerEntry 15 }
-+
-+        bgpPeerFsmEstablishedTime OBJECT-TYPE
-+            SYNTAX     Gauge32
-+            MAX-ACCESS read-only
-+            STATUS     current
-+            DESCRIPTION
-+                    "This timer indicates how long (in seconds) this
-+                    peer has been in the Established state or how long
-+                    since this peer was last in the Established state.
-+                    It is set to zero when a new peer is configured or
-+                    the router is booted."
-+            ::= { bgpPeerEntry 16 }
-+
-+        bgpPeerConnectRetryInterval OBJECT-TYPE
-+            SYNTAX     INTEGER (1..65535)
-+            MAX-ACCESS read-write
-+            STATUS     current
-+            DESCRIPTION
-+                    "Time interval in seconds for the ConnectRetry
-+                    timer.  The suggested value for this timer is
-+                    120 seconds."
-+            ::= { bgpPeerEntry 17 }
-+
-+        bgpPeerHoldTime OBJECT-TYPE
-+            SYNTAX     INTEGER  ( 0 | 3..65535 )
-+            MAX-ACCESS read-only
-+            STATUS     current
-+            DESCRIPTION
-+                    "Time interval in seconds for the Hold Timer
-+                    established with the peer.  The value of this
-+                    object is calculated by this BGP speaker by
-+                    using the smaller of the value in
-+                    bgpPeerHoldTimeConfigured and the Hold Time
-+                    received in the OPEN message.  This value
-+                    must be at lease three seconds if it is not
-+                    zero (0) in which case the Hold Timer has
-+                    not been established with the peer, or, the
-+                    value of bgpPeerHoldTimeConfigured is zero (0)."
-+            ::= { bgpPeerEntry 18 }
-+
-+        bgpPeerKeepAlive OBJECT-TYPE
-+            SYNTAX     INTEGER ( 0 | 1..21845 )
-+            MAX-ACCESS read-only
-+            STATUS     current
-+            DESCRIPTION
-+                    "Time interval in seconds for the KeepAlive
-+                    timer established with the peer.  The value of
-+                    this object is calculated by this BGP speaker
-+                    such that, when compared with bgpPeerHoldTime,
-+                    it has the same proportion as what
-+                    bgpPeerKeepAliveConfigured has when compared
-+                    with bgpPeerHoldTimeConfigured.  If the value
-+                    of this object is zero (0), it indicates that
-+                    the KeepAlive timer has not been established
-+                    with the peer, or, the value of
-+                    bgpPeerKeepAliveConfigured is zero (0)."
-+            ::= { bgpPeerEntry 19 }
-+
-+        bgpPeerHoldTimeConfigured OBJECT-TYPE
-+            SYNTAX     INTEGER ( 0 | 3..65535 )
-+            MAX-ACCESS read-write
-+            STATUS     current
-+            DESCRIPTION
-+                    "Time interval in seconds for the Hold Time
-+                    configured for this BGP speaker with this peer.
-+                    This value is placed in an OPEN message sent to
-+                    this peer by this BGP speaker, and is compared
-+                    with the Hold Time field in an OPEN message
-+                    received from the peer when determining the Hold
-+                    Time (bgpPeerHoldTime) with the peer.  This value
-+                    must not be less than three seconds if it is not
-+                    zero (0) in which case the Hold Time is NOT to be
-+                    established with the peer.  The suggested value for
-+                    this timer is 90 seconds."
-+            ::= { bgpPeerEntry 20 }
-+
-+        bgpPeerKeepAliveConfigured OBJECT-TYPE
-+            SYNTAX     INTEGER ( 0 | 1..21845 )
-+            MAX-ACCESS read-write
-+            STATUS     current
-+            DESCRIPTION
-+                    "Time interval in seconds for the KeepAlive timer
-+                    configured for this BGP speaker with this peer.
-+                    The value of this object will only determine the
-+                    KEEPALIVE messages' frequency relative to the value
-+                    specified in bgpPeerHoldTimeConfigured; the actual
-+                    time interval for the KEEPALIVE messages is
-+                    indicated by bgpPeerKeepAlive.  A reasonable
-+                    maximum value for this timer would be configured to
-+                    be one third of that of bgpPeerHoldTimeConfigured.
-+                    If the value of this object is zero (0), no
-+                    periodical KEEPALIVE messages are sent to the peer
-+                    after the BGP connection has been established.  The
-+                    suggested value for this timer is 30 seconds."
-+            ::= { bgpPeerEntry 21 }
-+
-+        bgpPeerMinASOriginationInterval OBJECT-TYPE
-+            SYNTAX     INTEGER (1..65535)
-+            MAX-ACCESS read-write
-+            STATUS     current
-+            DESCRIPTION
-+                    "Time interval in seconds for the
-+                    MinASOriginationInterval timer.
-+                    The suggested value for this timer is 15 seconds."
-+            ::= { bgpPeerEntry 22 }
-+
-+        bgpPeerMinRouteAdvertisementInterval OBJECT-TYPE
-+            SYNTAX     INTEGER (1..65535)
-+            MAX-ACCESS read-write
-+            STATUS     current
-+            DESCRIPTION
-+                    "Time interval in seconds for the
-+                    MinRouteAdvertisementInterval timer.
-+                    The suggested value for this timer is 30 seconds."
-+            ::= { bgpPeerEntry 23 }
-+
-+        bgpPeerInUpdateElapsedTime OBJECT-TYPE
-+            SYNTAX     Gauge32
-+            MAX-ACCESS read-only
-+            STATUS     current
-+            DESCRIPTION
-+                    "Elapsed time in seconds since the last BGP
-+                    UPDATE message was received from the peer.
-+                    Each time bgpPeerInUpdates is incremented,
-+                    the value of this object is set to zero (0)."
-+            ::= { bgpPeerEntry 24 }
-+
-+
-+
-+        bgpIdentifier OBJECT-TYPE
-+            SYNTAX     IpAddress
-+            MAX-ACCESS read-only
-+            STATUS     current
-+            DESCRIPTION
-+                    "The BGP Identifier of local system."
-+            ::= { bgp 4 }
-+
-+
-+
-+        -- Received Path Attribute Table.  This table contains,
-+        -- one entry per path to a network, path attributes
-+        -- received from all peers running BGP version 3 or less.
-+        -- This table is obsolete, having been replaced in
-+        -- functionality with the bgp4PathAttrTable.
-+
-+        bgpRcvdPathAttrTable OBJECT-TYPE
-+            SYNTAX     SEQUENCE OF BgpPathAttrEntry
-+            MAX-ACCESS not-accessible
-+            STATUS     obsolete
-+            DESCRIPTION
-+                    "The BGP Received Path Attribute Table contains
-+                    information about paths to destination networks
-+                    received from all peers running BGP version 3 or
-+                    less."
-+            ::= { bgp 5 }
-+
-+        bgpPathAttrEntry OBJECT-TYPE
-+            SYNTAX     BgpPathAttrEntry
-+            MAX-ACCESS not-accessible
-+            STATUS     obsolete
-+            DESCRIPTION
-+                    "Information about a path to a network."
-+            INDEX { bgpPathAttrDestNetwork,
-+                    bgpPathAttrPeer        }
-+            ::= { bgpRcvdPathAttrTable 1 }
-+
-+        BgpPathAttrEntry ::= SEQUENCE {
-+            bgpPathAttrPeer
-+                 IpAddress,
-+            bgpPathAttrDestNetwork
-+                 IpAddress,
-+            bgpPathAttrOrigin
-+                 INTEGER,
-+            bgpPathAttrASPath
-+                 OCTET STRING,
-+            bgpPathAttrNextHop
-+                 IpAddress,
-+            bgpPathAttrInterASMetric
-+                 Integer32
-+        }
-+
-+        bgpPathAttrPeer OBJECT-TYPE
-+            SYNTAX     IpAddress
-+            MAX-ACCESS read-only
-+            STATUS     obsolete
-+            DESCRIPTION
-+                    "The IP address of the peer where the path
-+                    information was learned."
-+            ::= { bgpPathAttrEntry 1 }
-+
-+        bgpPathAttrDestNetwork OBJECT-TYPE
-+            SYNTAX     IpAddress
-+            MAX-ACCESS read-only
-+            STATUS     obsolete
-+            DESCRIPTION
-+                    "The address of the destination network."
-+            ::= { bgpPathAttrEntry 2 }
-+
-+        bgpPathAttrOrigin OBJECT-TYPE
-+            SYNTAX     INTEGER {
-+                           igp(1),-- networks are interior
-+                           egp(2),-- networks learned via EGP
-+                           incomplete(3) -- undetermined
-+                       }
-+            MAX-ACCESS read-only
-+            STATUS     obsolete
-+            DESCRIPTION
-+                 "The ultimate origin of the path information."
-+            ::= { bgpPathAttrEntry 3 }
-+
-+        bgpPathAttrASPath OBJECT-TYPE
-+            SYNTAX     OCTET STRING (SIZE (2..255))
-+            MAX-ACCESS read-only
-+            STATUS     obsolete
-+            DESCRIPTION
-+                    "The set of ASs that must be traversed to reach
-+                    the network.  This object is probably best
-+                    represented as SEQUENCE OF INTEGER.  For SMI
-+                    compatibility, though, it is represented as
-+                    OCTET STRING.  Each AS is represented as a pair
-+                    of octets according to the following algorithm:
-+
-+                        first-byte-of-pair = ASNumber / 256;
-+                        second-byte-of-pair = ASNumber & 255;"
-+            ::= { bgpPathAttrEntry 4 }
-+
-+        bgpPathAttrNextHop OBJECT-TYPE
-+            SYNTAX     IpAddress
-+            MAX-ACCESS read-only
-+            STATUS     obsolete
-+            DESCRIPTION
-+                    "The address of the border router that should
-+                    be used for the destination network."
-+            ::= { bgpPathAttrEntry 5 }
-+
-+        bgpPathAttrInterASMetric OBJECT-TYPE
-+            SYNTAX     Integer32
-+            MAX-ACCESS read-only
-+            STATUS     obsolete
-+            DESCRIPTION
-+                    "The optional inter-AS metric.  If this
-+                    attribute has not been provided for this route,
-+                    the value for this object is 0."
-+            ::= { bgpPathAttrEntry 6 }
-+
-+
-+
-+        -- BGP-4 Received Path Attribute Table.  This table contains,
-+        -- one entry per path to a network, path attributes
-+        -- received from all peers running BGP-4.
-+
-+        bgp4PathAttrTable OBJECT-TYPE
-+            SYNTAX     SEQUENCE OF Bgp4PathAttrEntry
-+            MAX-ACCESS not-accessible
-+            STATUS     current
-+            DESCRIPTION
-+                    "The BGP-4 Received Path Attribute Table contains
-+                    information about paths to destination networks
-+                    received from all BGP4 peers."
-+            ::= { bgp 6 }
-+
-+        bgp4PathAttrEntry OBJECT-TYPE
-+            SYNTAX     Bgp4PathAttrEntry
-+            MAX-ACCESS not-accessible
-+            STATUS     current
-+            DESCRIPTION
-+                    "Information about a path to a network."
-+            INDEX { bgp4PathAttrIpAddrPrefix,
-+                    bgp4PathAttrIpAddrPrefixLen,
-+                    bgp4PathAttrPeer            }
-+            ::= { bgp4PathAttrTable 1 }
-+
-+        Bgp4PathAttrEntry ::= SEQUENCE {
-+            bgp4PathAttrPeer
-+                 IpAddress,
-+            bgp4PathAttrIpAddrPrefixLen
-+                 INTEGER,
-+            bgp4PathAttrIpAddrPrefix
-+                 IpAddress,
-+            bgp4PathAttrOrigin
-+                 INTEGER,
-+            bgp4PathAttrASPathSegment
-+                 OCTET STRING,
-+            bgp4PathAttrNextHop
-+                 IpAddress,
-+            bgp4PathAttrMultiExitDisc
-+                 INTEGER,
-+            bgp4PathAttrLocalPref
-+                 INTEGER,
-+            bgp4PathAttrAtomicAggregate
-+                 INTEGER,
-+            bgp4PathAttrAggregatorAS
-+                 INTEGER,
-+            bgp4PathAttrAggregatorAddr
-+                 IpAddress,
-+            bgp4PathAttrCalcLocalPref
-+                 INTEGER,
-+            bgp4PathAttrBest
-+                 INTEGER,
-+            bgp4PathAttrUnknown
-+                 OCTET STRING
-+        }
-+
-+        bgp4PathAttrPeer OBJECT-TYPE
-+            SYNTAX     IpAddress
-+            MAX-ACCESS read-only
-+            STATUS     current
-+            DESCRIPTION
-+                    "The IP address of the peer where the path
-+                    information was learned."
-+            ::= { bgp4PathAttrEntry 1 }
-+        bgp4PathAttrIpAddrPrefixLen OBJECT-TYPE
-+            SYNTAX     INTEGER (0..32)
-+            MAX-ACCESS read-only
-+            STATUS     current
-+            DESCRIPTION
-+                    "Length in bits of the IP address prefix in the
-+                    Network Layer Reachability Information field."
-+            ::= { bgp4PathAttrEntry 2 }
-+
-+        bgp4PathAttrIpAddrPrefix OBJECT-TYPE
-+            SYNTAX     IpAddress
-+            MAX-ACCESS read-only
-+            STATUS     current
-+            DESCRIPTION
-+                    "An IP address prefix in the Network Layer
-+                    Reachability Information field.  This object
-+                    is an IP address containing the prefix with
-+                    length specified by bgp4PathAttrIpAddrPrefixLen.
-+                    Any bits beyond the length specified by
-+                    bgp4PathAttrIpAddrPrefixLen are zeroed."
-+            ::= { bgp4PathAttrEntry 3 }
-+
-+        bgp4PathAttrOrigin OBJECT-TYPE
-+            SYNTAX     INTEGER {
-+                                 igp(1),-- networks are interior
-+                                 egp(2),-- networks learned via EGP
-+                                 incomplete(3) -- undetermined
-+                               }
-+            MAX-ACCESS read-only
-+            STATUS     current
-+            DESCRIPTION
-+                    "The ultimate origin of the path information."
-+            ::= { bgp4PathAttrEntry 4 }
-+
-+        bgp4PathAttrASPathSegment OBJECT-TYPE
-+            SYNTAX     OCTET STRING (SIZE (2..255))
-+            MAX-ACCESS read-only
-+            STATUS     current
-+            DESCRIPTION
-+                    "The sequence of AS path segments.  Each AS
-+                    path segment is represented by a triple
-+                    <type, length, value>.
-+
-+                    The type is a 1-octet field which has two
-+                    possible values:
-+                         1      AS_SET: unordered set of ASs a
-+                                     route in the UPDATE message
-+                                     has traversed
-+                         2      AS_SEQUENCE: ordered set of ASs
-+                                     a route in the UPDATE message
-+                                     has traversed.
-+
-+                    The length is a 1-octet field containing the
-+                    number of ASs in the value field.
-+
-+                    The value field contains one or more AS
-+                    numbers, each AS is represented in the octet
-+                    string as a pair of octets according to the
-+                    following algorithm:
-+
-+                        first-byte-of-pair = ASNumber / 256;
-+                        second-byte-of-pair = ASNumber & 255;"
-+            ::= { bgp4PathAttrEntry 5 }
-+
-+        bgp4PathAttrNextHop OBJECT-TYPE
-+            SYNTAX     IpAddress
-+            MAX-ACCESS read-only
-+            STATUS     current
-+            DESCRIPTION
-+                    "The address of the border router that should
-+                    be used for the destination network."
-+            ::= { bgp4PathAttrEntry 6 }
-+
-+        bgp4PathAttrMultiExitDisc OBJECT-TYPE
-+            SYNTAX     INTEGER (-1..2147483647)
-+            MAX-ACCESS read-only
-+            STATUS     current
-+            DESCRIPTION
-+                    "This metric is used to discriminate between
-+                    multiple exit points to an adjacent autonomous
-+                    system.  A value of -1 indicates the absence of
-+                    this attribute."
-+            ::= { bgp4PathAttrEntry 7 }
-+
-+        bgp4PathAttrLocalPref OBJECT-TYPE
-+            SYNTAX     INTEGER (-1..2147483647)
-+            MAX-ACCESS read-only
-+            STATUS     current
-+            DESCRIPTION
-+                    "The originating BGP4 speaker's degree of
-+                    preference for an advertised route.  A value of
-+                    -1 indicates the absence of this attribute."
-+            ::= { bgp4PathAttrEntry 8 }
-+
-+        bgp4PathAttrAtomicAggregate OBJECT-TYPE
-+            SYNTAX     INTEGER {
-+                           lessSpecificRrouteNotSelected(1),
-+                           lessSpecificRouteSelected(2)
-+                       }
-+            MAX-ACCESS read-only
-+            STATUS     current
-+            DESCRIPTION
-+                    "Whether or not a system has selected
-+                    a less specific route without selecting a
-+                    more specific route."
-+            ::= { bgp4PathAttrEntry 9 }
-+
-+        bgp4PathAttrAggregatorAS OBJECT-TYPE
-+            SYNTAX     INTEGER (0..65535)
-+            MAX-ACCESS read-only
-+            STATUS     current
-+            DESCRIPTION
-+                    "The AS number of the last BGP4 speaker that
-+                    performed route aggregation.  A value of zero (0)
-+                    indicates the absence of this attribute."
-+            ::= { bgp4PathAttrEntry 10 }
-+
-+        bgp4PathAttrAggregatorAddr OBJECT-TYPE
-+            SYNTAX     IpAddress
-+            MAX-ACCESS read-only
-+            STATUS     current
-+            DESCRIPTION
-+                    "The IP address of the last BGP4 speaker that
-+                     performed route aggregation.  A value of
-+                     0.0.0.0 indicates the absence of this attribute."
-+            ::= { bgp4PathAttrEntry 11 }
-+
-+        bgp4PathAttrCalcLocalPref OBJECT-TYPE
-+            SYNTAX     INTEGER (-1..2147483647)
-+            MAX-ACCESS read-only
-+            STATUS     current
-+            DESCRIPTION
-+                    "The degree of preference calculated by the
-+                    receiving BGP4 speaker for an advertised route.
-+                    A value of -1 indicates the absence of this
-+                    attribute."
-+            ::= { bgp4PathAttrEntry 12 }
-+
-+        bgp4PathAttrBest OBJECT-TYPE
-+            SYNTAX     INTEGER {
-+                           false(1),-- not chosen as best route
-+                           true(2) -- chosen as best route
-+                       }
-+            MAX-ACCESS read-only
-+            STATUS     current
-+            DESCRIPTION
-+                    "An indication of whether or not this route
-+                    was chosen as the best BGP4 route."
-+            ::= { bgp4PathAttrEntry 13 }
-+
-+        bgp4PathAttrUnknown OBJECT-TYPE
-+            SYNTAX     OCTET STRING (SIZE(0..255))
-+            MAX-ACCESS read-only
-+            STATUS     current
-+            DESCRIPTION
-+                    "One or more path attributes not understood
-+                     by this BGP4 speaker.  Size zero (0) indicates
-+                     the absence of such attribute(s).  Octets
-+                     beyond the maximum size, if any, are not
-+                     recorded by this object."
-+            ::= { bgp4PathAttrEntry 14 }
-+
-+
-+        -- Traps.
-+
-+        -- note that in RFC 1657, bgpTraps was incorrectly
-+        -- assigned a value of { bgp 7 }, and each of the
-+        -- traps had the bgpPeerRemoteAddr object inappropriately
-+        -- removed from their OBJECTS clause.  The following
-+        -- definitions restore the semantics of the traps as
-+        -- they were initially defined in RFC 1269.
-+
-+        -- { bgp 7 } is unused
-+
-+        bgpTraps          OBJECT IDENTIFIER ::= { bgp 0 }
-+
-+        bgpEstablished NOTIFICATION-TYPE
-+            OBJECTS { bgpPeerRemoteAddr,
-+                      bgpPeerLastError,
-+                      bgpPeerState      }
-+            STATUS  current
-+            DESCRIPTION
-+                    "The BGP Established event is generated when
-+                    the BGP FSM enters the ESTABLISHED state."
-+            ::= { bgpTraps 1 }
-+
-+        bgpBackwardTransition NOTIFICATION-TYPE
-+            OBJECTS { bgpPeerRemoteAddr,
-+                      bgpPeerLastError,
-+                      bgpPeerState      }
-+            STATUS  current
-+            DESCRIPTION
-+                    "The BGPBackwardTransition Event is generated
-+                    when the BGP FSM moves from a higher numbered
-+                    state to a lower numbered state."
-+            ::= { bgpTraps 2 }
-+
-+        -- conformance information
-+
-+        bgpMIBConformance OBJECT IDENTIFIER ::= { bgp 8 }
-+        bgpMIBCompliances OBJECT IDENTIFIER ::= { bgpMIBConformance 1 }
-+        bgpMIBGroups      OBJECT IDENTIFIER ::= { bgpMIBConformance 2 }
-+
-+        -- compliance statements
-+
-+        bgpMIBCompliance MODULE-COMPLIANCE
-+            STATUS  current
-+            DESCRIPTION
-+                    "The compliance statement for entities which
-+                     implement the BGP4 mib."
-+            MODULE  -- this module
-+                MANDATORY-GROUPS { bgp4MIBGlobalsGroup,
-+                                   bgp4MIBPeerGroup,
-+                                   bgp4MIBPathAttrGroup,
-+                                   bgp4MIBNotificationGroup }
-+            ::= { bgpMIBCompliances 1 }
-+
-+        -- units of conformance
-+
-+        bgp4MIBGlobalsGroup OBJECT-GROUP
-+            OBJECTS { bgpVersion,
-+                      bgpLocalAs,
-+                      bgpIdentifier }
-+            STATUS  current
-+            DESCRIPTION
-+                    "A collection of objects providing information
-+                     on global BGP state."
-+            ::= { bgpMIBGroups 1 }
-+
-+        bgp4MIBPeerGroup OBJECT-GROUP
-+            OBJECTS { bgpPeerIdentifier,
-+                      bgpPeerState,
-+                      bgpPeerAdminStatus,
-+                      bgpPeerNegotiatedVersion,
-+                      bgpPeerLocalAddr,
-+                      bgpPeerLocalPort,
-+                      bgpPeerRemoteAddr,
-+                      bgpPeerRemotePort,
-+                      bgpPeerRemoteAs,
-+                      bgpPeerInUpdates,
-+                      bgpPeerOutUpdates,
-+                      bgpPeerInTotalMessages,
-+                      bgpPeerOutTotalMessages,
-+                      bgpPeerLastError,
-+                      bgpPeerFsmEstablishedTransitions,
-+                      bgpPeerFsmEstablishedTime,
-+                      bgpPeerConnectRetryInterval,
-+                      bgpPeerHoldTime,
-+                      bgpPeerKeepAlive,
-+                      bgpPeerHoldTimeConfigured,
-+                      bgpPeerKeepAliveConfigured,
-+                      bgpPeerMinASOriginationInterval,
-+                      bgpPeerMinRouteAdvertisementInterval,
-+                      bgpPeerInUpdateElapsedTime }
-+            STATUS  current
-+            DESCRIPTION
-+                    "A collection of objects for managing
-+                     BGP peers."
-+            ::= { bgpMIBGroups 2 }
-+
-+        bgp4MIBRcvdPathAttrGroup OBJECT-GROUP
-+            OBJECTS { bgpPathAttrPeer,
-+                      bgpPathAttrDestNetwork,
-+                      bgpPathAttrOrigin,
-+                      bgpPathAttrASPath,
-+                      bgpPathAttrNextHop,
-+                      bgpPathAttrInterASMetric }
-+            STATUS  obsolete
-+            DESCRIPTION
-+                    "A collection of objects for managing BGP
-+                     path entries.
-+
-+                     This conformance group is obsolete,
-+                     replaced by bgp4MIBPathAttrGroup."
-+            ::= { bgpMIBGroups 3 }
-+
-+        bgp4MIBPathAttrGroup OBJECT-GROUP
-+            OBJECTS { bgp4PathAttrPeer,
-+                      bgp4PathAttrIpAddrPrefixLen,
-+                      bgp4PathAttrIpAddrPrefix,
-+                      bgp4PathAttrOrigin,
-+                      bgp4PathAttrASPathSegment,
-+                      bgp4PathAttrNextHop,
-+                      bgp4PathAttrMultiExitDisc,
-+                      bgp4PathAttrLocalPref,
-+                      bgp4PathAttrAtomicAggregate,
-+                      bgp4PathAttrAggregatorAS,
-+                      bgp4PathAttrAggregatorAddr,
-+                      bgp4PathAttrCalcLocalPref,
-+                      bgp4PathAttrBest,
-+                      bgp4PathAttrUnknown }
-+            STATUS  current
-+            DESCRIPTION
-+                    "A collection of objects for managing
-+                     BGP path entries."
-+            ::= { bgpMIBGroups 4 }
-+
-+        bgp4MIBNotificationGroup NOTIFICATION-GROUP
-+            NOTIFICATIONS { bgpEstablished,
-+                            bgpBackwardTransition }
-+            STATUS  current
-+            DESCRIPTION
-+                    "A collection of notifications for signaling
-+                    changes in BGP peer relationships."
-+            ::= { bgpMIBGroups 5 }
-+
-+    END
---- /dev/null
-+++ b/mibs/BRIDGE-MIB.txt
-@@ -0,0 +1,1075 @@
-+BRIDGE-MIB DEFINITIONS ::= BEGIN
-+
-+IMPORTS
-+           Counter, TimeTicks
-+                   FROM RFC1155-SMI
-+           mib-2
-+                   FROM RFC1213-MIB
-+           OBJECT-TYPE
-+                   FROM RFC-1212
-+           TRAP-TYPE
-+                   FROM RFC-1215;
-+
-+-- All representations of MAC addresses in this MIB Module
-+-- use, as a textual convention (i.e. this convention does
-+-- not affect their encoding), the data type:
-+MacAddress ::= OCTET STRING (SIZE (6))    -- a 6 octet address
-+                                          -- in the
-+                                          -- "canonical"
-+                                          -- order
-+-- defined by IEEE 802.1a, i.e., as if it were transmitted
-+-- least significant bit first, even though 802.5 (in
-+-- contrast to other n802.x protocols) requires MAC
-+-- addresses to be transmitted most significant bit first.
-+--
-+-- 16-bit addresses, if needed, are represented by setting
-+-- their upper 4 octets to all 0's, i.e., AAFF would be
-+-- represented as 00000000AAFF.
-+
-+-- Similarly, all representations of Bridge-Id in this MIB
-+-- Module use, as a textual convention (i.e. this
-+-- convention does not affect their encoding), the data
-+-- type:
-+BridgeId ::= OCTET STRING (SIZE (8))   -- the
-+                                       -- Bridge-Identifier
-+                                       -- as used in the
-+                                       -- Spanning Tree
-+-- Protocol to uniquely identify a bridge.  Its first two
-+-- octets (in network byte order) contain a priority
-+-- value and its last 6 octets contain the MAC address
-+-- used to refer to a bridge in a unique fashion
-+-- (typically, the numerically smallest MAC address
-+-- of all ports on the bridge).
-+
-+-- Several objects in this MIB module represent values of
-+-- timers used by the Spanning Tree Protocol.  In this
-+-- MIB, these timers have values in units of hundreths of
-+-- a second (i.e. 1/100 secs).
-+-- These timers, when stored in a Spanning Tree Protocol's
-+-- BPDU, are in units of 1/256 seconds.  Note, however,
-+-- that 802.1D-1990 specifies a settable granularity of
-+-- no more than 1 second for these timers.  To avoid
-+-- ambiguity, a data type is defined here as a textual
-+-- convention and all representation of these timers
-+-- in this MIB module are defined using this data type.  An
-+-- algorithm is also defined for converting between the
-+-- different units, to ensure a timer's value is not
-+-- distorted by multiple conversions.
-+-- The data type is:
-+
-+Timeout ::= INTEGER -- a STP timer in units of 1/100 seconds
-+
-+-- To convert a Timeout value into a value in units of
-+-- 1/256 seconds, the following algorithm should be used:
-+--
-+--      b  = floor( (n * 256) / 100)
-+--
-+-- where:
-+--      floor   =  quotient [ignore remainder]
-+--      n is the value in 1/100 second units
-+--      b is the value in 1/256 second units
-+--
-+-- To convert the value from 1/256 second units back to
-+-- 1/100 seconds, the following algorithm should be used:
-+--
-+--      n = ceiling( (b * 100) / 256)
-+--
-+-- where:
-+--      ceiling =  quotient [if remainder is 0], or
-+--                 quotient + 1 [if remainder is non-zero]
-+--      n is the value in 1/100 second units
-+--      b is the value in 1/256 second units
-+--
-+-- Note: it is important that the arithmetic operations are
-+-- done in the order specified (i.e., multiply first, divide
-+-- second).
-+
-+   dot1dBridge   OBJECT IDENTIFIER ::= { mib-2 17 }
-+
-+-- groups in the Bridge MIB
-+
-+dot1dBase     OBJECT IDENTIFIER ::= { dot1dBridge 1 }
-+
-+dot1dStp      OBJECT IDENTIFIER ::= { dot1dBridge 2 }
-+
-+dot1dSr       OBJECT IDENTIFIER ::= { dot1dBridge 3 }
-+-- separately documented
-+
-+dot1dTp       OBJECT IDENTIFIER ::= { dot1dBridge 4 }
-+
-+dot1dStatic   OBJECT IDENTIFIER ::= { dot1dBridge 5 }
-+
-+-- the dot1dBase group
-+
-+-- Implementation of the dot1dBase group is mandatory for all
-+-- bridges.
-+
-+dot1dBaseBridgeAddress OBJECT-TYPE
-+    SYNTAX  MacAddress
-+    ACCESS  read-only
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "The MAC address used by this bridge when it must
-+            be referred to in a unique fashion.   It is
-+            recommended that this be the numerically smallest
-+            MAC address of all ports that belong to this
-+            bridge.  However it is only required to be unique.
-+            When concatenated with dot1dStpPriority a unique
-+            BridgeIdentifier is formed which is used in the
-+            Spanning Tree Protocol."
-+    REFERENCE
-+            "IEEE 802.1D-1990: Sections 6.4.1.1.3 and 3.12.5"
-+    ::= { dot1dBase 1 }
-+
-+dot1dBaseNumPorts OBJECT-TYPE
-+    SYNTAX  INTEGER
-+    ACCESS  read-only
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "The number of ports controlled by this bridging
-+            entity."
-+    REFERENCE
-+            "IEEE 802.1D-1990: Section 6.4.1.1.3"
-+    ::= { dot1dBase 2 }
-+
-+dot1dBaseType OBJECT-TYPE
-+    SYNTAX  INTEGER {
-+                unknown(1),
-+                transparent-only(2),
-+                sourceroute-only(3),
-+                srt(4)
-+            }
-+    ACCESS  read-only
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "Indicates what type of bridging this bridge can
-+            perform.  If a bridge is actually performing a
-+            certain type of bridging this will be indicated by
-+            entries in the port table for the given type."
-+    ::= { dot1dBase 3 }
-+
-+-- The Generic Bridge Port Table
-+
-+dot1dBasePortTable OBJECT-TYPE
-+    SYNTAX  SEQUENCE OF Dot1dBasePortEntry
-+    ACCESS  not-accessible
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "A table that contains generic information about
-+            every port that is associated with this bridge.
-+            Transparent, source-route, and srt ports are
-+            included."
-+    ::= { dot1dBase 4 }
-+
-+dot1dBasePortEntry OBJECT-TYPE
-+    SYNTAX  Dot1dBasePortEntry
-+    ACCESS  not-accessible
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "A list of information for each port of the
-+            bridge."
-+    REFERENCE
-+            "IEEE 802.1D-1990: Section 6.4.2, 6.6.1"
-+    INDEX  { dot1dBasePort }
-+    ::= { dot1dBasePortTable 1 }
-+
-+Dot1dBasePortEntry ::=
-+    SEQUENCE {
-+        dot1dBasePort
-+            INTEGER,
-+        dot1dBasePortIfIndex
-+            INTEGER,
-+        dot1dBasePortCircuit
-+
-+            OBJECT IDENTIFIER,
-+        dot1dBasePortDelayExceededDiscards
-+            Counter,
-+        dot1dBasePortMtuExceededDiscards
-+            Counter
-+    }
-+
-+dot1dBasePort OBJECT-TYPE
-+    SYNTAX  INTEGER (1..65535)
-+    ACCESS  read-only
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "The port number of the port for which this entry
-+            contains bridge management information."
-+    ::= { dot1dBasePortEntry 1 }
-+
-+dot1dBasePortIfIndex OBJECT-TYPE
-+    SYNTAX  INTEGER
-+    ACCESS  read-only
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "The value of the instance of the ifIndex object,
-+            defined in MIB-II, for the interface corresponding
-+            to this port."
-+    ::= { dot1dBasePortEntry 2 }
-+
-+dot1dBasePortCircuit OBJECT-TYPE
-+    SYNTAX  OBJECT IDENTIFIER
-+    ACCESS  read-only
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "For a port which (potentially) has the same value
-+            of dot1dBasePortIfIndex as another port on the
-+            same bridge, this object contains the name of an
-+            object instance unique to this port.  For example,
-+            in the case where multiple ports correspond one-
-+            to-one with multiple X.25 virtual circuits, this
-+            value might identify an (e.g., the first) object
-+            instance associated with the X.25 virtual circuit
-+            corresponding to this port.
-+
-+            For a port which has a unique value of
-+            dot1dBasePortIfIndex, this object can have the
-+            value { 0 0 }."
-+    ::= { dot1dBasePortEntry 3 }
-+
-+dot1dBasePortDelayExceededDiscards OBJECT-TYPE
-+    SYNTAX  Counter
-+
-+    ACCESS  read-only
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "The number of frames discarded by this port due
-+            to excessive transit delay through the bridge.  It
-+            is incremented by both transparent and source
-+            route bridges."
-+    REFERENCE
-+             "IEEE 802.1D-1990: Section 6.6.1.1.3"
-+    ::= { dot1dBasePortEntry 4 }
-+
-+dot1dBasePortMtuExceededDiscards OBJECT-TYPE
-+    SYNTAX  Counter
-+    ACCESS  read-only
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "The number of frames discarded by this port due
-+            to an excessive size.  It is incremented by both
-+            transparent and source route bridges."
-+    REFERENCE
-+            "IEEE 802.1D-1990: Section 6.6.1.1.3"
-+    ::= { dot1dBasePortEntry 5 }
-+
-+-- the dot1dStp group
-+
-+-- Implementation of the dot1dStp group is optional.  It is
-+-- implemented by those bridges that support the Spanning Tree
-+-- Protocol.
-+
-+dot1dStpProtocolSpecification OBJECT-TYPE
-+    SYNTAX  INTEGER {
-+                unknown(1),
-+                decLb100(2),
-+                ieee8021d(3)
-+            }
-+    ACCESS  read-only
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "An indication of what version of the Spanning
-+            Tree Protocol is being run.  The value
-+            'decLb100(2)' indicates the DEC LANbridge 100
-+            Spanning Tree protocol.  IEEE 802.1d
-+            implementations will return 'ieee8021d(3)'.  If
-+            future versions of the IEEE Spanning Tree Protocol
-+            are released that are incompatible with the
-+            current version a new value will be defined."
-+
-+    ::= { dot1dStp 1 }
-+
-+dot1dStpPriority OBJECT-TYPE
-+    SYNTAX  INTEGER (0..65535)
-+    ACCESS  read-write
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "The value of the write-able portion of the Bridge
-+            ID, i.e., the first two octets of the (8 octet
-+            long) Bridge ID.  The other (last) 6 octets of the
-+            Bridge ID are given by the value of
-+            dot1dBaseBridgeAddress."
-+    REFERENCE
-+            "IEEE 802.1D-1990: Section 4.5.3.7"
-+    ::= { dot1dStp 2 }
-+
-+dot1dStpTimeSinceTopologyChange OBJECT-TYPE
-+    SYNTAX  TimeTicks
-+    ACCESS  read-only
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "The time (in hundredths of a second) since the
-+            last time a topology change was detected by the
-+            bridge entity."
-+    REFERENCE
-+            "IEEE 802.1D-1990: Section 6.8.1.1.3"
-+    ::= { dot1dStp 3 }
-+
-+dot1dStpTopChanges OBJECT-TYPE
-+    SYNTAX  Counter
-+    ACCESS  read-only
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "The total number of topology changes detected by
-+            this bridge since the management entity was last
-+            reset or initialized."
-+    REFERENCE
-+            "IEEE 802.1D-1990: Section 6.8.1.1.3"
-+    ::= { dot1dStp 4 }
-+
-+dot1dStpDesignatedRoot OBJECT-TYPE
-+    SYNTAX  BridgeId
-+    ACCESS  read-only
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "The bridge identifier of the root of the spanning
-+            tree as determined by the Spanning Tree Protocol
-+            as executed by this node.  This value is used as
-+
-+            the Root Identifier parameter in all Configuration
-+            Bridge PDUs originated by this node."
-+    REFERENCE
-+            "IEEE 802.1D-1990: Section 4.5.3.1"
-+    ::= { dot1dStp 5 }
-+
-+dot1dStpRootCost OBJECT-TYPE
-+    SYNTAX  INTEGER
-+    ACCESS  read-only
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "The cost of the path to the root as seen from
-+            this bridge."
-+    REFERENCE
-+            "IEEE 802.1D-1990: Section 4.5.3.2"
-+    ::= { dot1dStp 6 }
-+
-+dot1dStpRootPort OBJECT-TYPE
-+    SYNTAX  INTEGER
-+    ACCESS  read-only
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "The port number of the port which offers the
-+            lowest cost path from this bridge to the root
-+            bridge."
-+    REFERENCE
-+            "IEEE 802.1D-1990: Section 4.5.3.3"
-+    ::= { dot1dStp 7 }
-+
-+dot1dStpMaxAge OBJECT-TYPE
-+    SYNTAX  Timeout
-+    ACCESS  read-only
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "The maximum age of Spanning Tree Protocol
-+            information learned from the network on any port
-+            before it is discarded, in units of hundredths of
-+            a second.  This is the actual value that this
-+            bridge is currently using."
-+    REFERENCE
-+            "IEEE 802.1D-1990: Section 4.5.3.4"
-+    ::= { dot1dStp 8 }
-+
-+dot1dStpHelloTime OBJECT-TYPE
-+    SYNTAX  Timeout
-+    ACCESS  read-only
-+    STATUS  mandatory
-+    DESCRIPTION
-+
-+            "The amount of time between the transmission of
-+            Configuration bridge PDUs by this node on any port
-+            when it is the root of the spanning tree or trying
-+            to become so, in units of hundredths of a second.
-+            This is the actual value that this bridge is
-+            currently using."
-+    REFERENCE
-+            "IEEE 802.1D-1990: Section 4.5.3.5"
-+    ::= { dot1dStp 9 }
-+
-+dot1dStpHoldTime OBJECT-TYPE
-+    SYNTAX  INTEGER
-+    ACCESS  read-only
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "This time value determines the interval length
-+            during which no more than two Configuration bridge
-+            PDUs shall be transmitted by this node, in units
-+            of hundredths of a second."
-+    REFERENCE
-+            "IEEE 802.1D-1990: Section 4.5.3.14"
-+    ::= { dot1dStp 10 }
-+
-+dot1dStpForwardDelay OBJECT-TYPE
-+    SYNTAX  Timeout
-+    ACCESS  read-only
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "This time value, measured in units of hundredths
-+            of a second, controls how fast a port changes its
-+            spanning state when moving towards the Forwarding
-+            state.  The value determines how long the port
-+            stays in each of the Listening and Learning
-+            states, which precede the Forwarding state.  This
-+            value is also used, when a topology change has
-+            been detected and is underway, to age all dynamic
-+            entries in the Forwarding Database.  [Note that
-+            this value is the one that this bridge is
-+            currently using, in contrast to
-+            dot1dStpBridgeForwardDelay which is the value that
-+            this bridge and all others would start using
-+            if/when this bridge were to become the root.]"
-+    REFERENCE
-+            "IEEE 802.1D-1990: Section 4.5.3.6"
-+    ::= { dot1dStp 11 }
-+
-+dot1dStpBridgeMaxAge OBJECT-TYPE
-+    SYNTAX  Timeout (600..4000)
-+
-+    ACCESS  read-write
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "The value that all bridges use for MaxAge when
-+            this bridge is acting as the root.  Note that
-+            802.1D-1990 specifies that the range for this
-+            parameter is related to the value of
-+            dot1dStpBridgeHelloTime. The granularity of this
-+            timer is specified by 802.1D-1990 to be 1 second.
-+            An agent may return a badValue error if a set is
-+            attempted to a value which is not a whole number
-+            of seconds."
-+    REFERENCE
-+            "IEEE 802.1D-1990: Section 4.5.3.8"
-+    ::= { dot1dStp 12 }
-+
-+dot1dStpBridgeHelloTime OBJECT-TYPE
-+    SYNTAX  Timeout (100..1000)
-+    ACCESS  read-write
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "The value that all bridges use for HelloTime when
-+            this bridge is acting as the root.  The
-+            granularity of this timer is specified by 802.1D-
-+            1990 to be 1 second.  An agent may return a
-+            badValue error if a set is attempted to a value
-+            which is not a whole number of seconds."
-+    REFERENCE
-+            "IEEE 802.1D-1990: Section 4.5.3.9"
-+    ::= { dot1dStp 13 }
-+
-+dot1dStpBridgeForwardDelay OBJECT-TYPE
-+    SYNTAX  Timeout (400..3000)
-+    ACCESS  read-write
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "The value that all bridges use for ForwardDelay
-+            when this bridge is acting as the root.  Note that
-+            802.1D-1990 specifies that the range for this
-+            parameter is related to the value of
-+            dot1dStpBridgeMaxAge.  The granularity of this
-+            timer is specified by 802.1D-1990 to be 1 second.
-+            An agent may return a badValue error if a set is
-+            attempted to a value which is not a whole number
-+            of seconds."
-+    REFERENCE
-+            "IEEE 802.1D-1990: Section 4.5.3.10"
-+    ::= { dot1dStp 14 }
-+
-+-- The Spanning Tree Port Table
-+
-+dot1dStpPortTable OBJECT-TYPE
-+    SYNTAX  SEQUENCE OF Dot1dStpPortEntry
-+    ACCESS  not-accessible
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "A table that contains port-specific information
-+            for the Spanning Tree Protocol."
-+    ::= { dot1dStp 15 }
-+
-+dot1dStpPortEntry OBJECT-TYPE
-+    SYNTAX  Dot1dStpPortEntry
-+    ACCESS  not-accessible
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "A list of information maintained by every port
-+            about the Spanning Tree Protocol state for that
-+            port."
-+    INDEX   { dot1dStpPort }
-+    ::= { dot1dStpPortTable 1 }
-+
-+Dot1dStpPortEntry ::=
-+    SEQUENCE {
-+        dot1dStpPort
-+            INTEGER,
-+        dot1dStpPortPriority
-+            INTEGER,
-+        dot1dStpPortState
-+            INTEGER,
-+        dot1dStpPortEnable
-+            INTEGER,
-+        dot1dStpPortPathCost
-+            INTEGER,
-+        dot1dStpPortDesignatedRoot
-+            BridgeId,
-+        dot1dStpPortDesignatedCost
-+            INTEGER,
-+        dot1dStpPortDesignatedBridge
-+            BridgeId,
-+        dot1dStpPortDesignatedPort
-+            OCTET STRING,
-+        dot1dStpPortForwardTransitions
-+            Counter
-+    }
-+
-+dot1dStpPort OBJECT-TYPE
-+    SYNTAX  INTEGER (1..65535)
-+
-+    ACCESS  read-only
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "The port number of the port for which this entry
-+            contains Spanning Tree Protocol management
-+            information."
-+    REFERENCE
-+            "IEEE 802.1D-1990: Section 6.8.2.1.2"
-+    ::= { dot1dStpPortEntry 1 }
-+
-+dot1dStpPortPriority OBJECT-TYPE
-+    SYNTAX  INTEGER (0..255)
-+    ACCESS  read-write
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "The value of the priority field which is
-+            contained in the first (in network byte order)
-+            octet of the (2 octet long) Port ID.  The other
-+            octet of the Port ID is given by the value of
-+            dot1dStpPort."
-+    REFERENCE
-+            "IEEE 802.1D-1990: Section 4.5.5.1"
-+    ::= { dot1dStpPortEntry 2 }
-+
-+dot1dStpPortState OBJECT-TYPE
-+    SYNTAX  INTEGER {
-+                disabled(1),
-+                blocking(2),
-+                listening(3),
-+                learning(4),
-+                forwarding(5),
-+                broken(6)
-+            }
-+    ACCESS  read-only
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "The port's current state as defined by
-+            application of the Spanning Tree Protocol.  This
-+            state controls what action a port takes on
-+            reception of a frame.  If the bridge has detected
-+            a port that is malfunctioning it will place that
-+            port into the broken(6) state.  For ports which
-+            are disabled (see dot1dStpPortEnable), this object
-+            will have a value of disabled(1)."
-+    REFERENCE
-+            "IEEE 802.1D-1990: Section 4.5.5.2"
-+    ::= { dot1dStpPortEntry 3 }
-+
-+dot1dStpPortEnable OBJECT-TYPE
-+    SYNTAX  INTEGER {
-+                enabled(1),
-+                disabled(2)
-+            }
-+    ACCESS  read-write
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "The enabled/disabled status of the port."
-+    REFERENCE
-+            "IEEE 802.1D-1990: Section 4.5.5.2"
-+    ::= { dot1dStpPortEntry 4 }
-+
-+dot1dStpPortPathCost OBJECT-TYPE
-+    SYNTAX  INTEGER (1..65535)
-+    ACCESS  read-write
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "The contribution of this port to the path cost of
-+            paths towards the spanning tree root which include
-+            this port.  802.1D-1990 recommends that the
-+            default value of this parameter be in inverse
-+            proportion to the speed of the attached LAN."
-+    REFERENCE
-+            "IEEE 802.1D-1990: Section 4.5.5.3"
-+    ::= { dot1dStpPortEntry 5 }
-+
-+dot1dStpPortDesignatedRoot OBJECT-TYPE
-+    SYNTAX  BridgeId
-+    ACCESS  read-only
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "The unique Bridge Identifier of the Bridge
-+            recorded as the Root in the Configuration BPDUs
-+            transmitted by the Designated Bridge for the
-+            segment to which the port is attached."
-+    REFERENCE
-+            "IEEE 802.1D-1990: Section 4.5.5.4"
-+    ::= { dot1dStpPortEntry 6 }
-+
-+dot1dStpPortDesignatedCost OBJECT-TYPE
-+    SYNTAX  INTEGER
-+    ACCESS  read-only
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "The path cost of the Designated Port of the
-+            segment connected to this port.  This value is
-+            compared to the Root Path Cost field in received
-+
-+            bridge PDUs."
-+    REFERENCE
-+            "IEEE 802.1D-1990: Section 4.5.5.5"
-+    ::= { dot1dStpPortEntry 7 }
-+
-+dot1dStpPortDesignatedBridge OBJECT-TYPE
-+    SYNTAX  BridgeId
-+    ACCESS  read-only
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "The Bridge Identifier of the bridge which this
-+            port considers to be the Designated Bridge for
-+            this port's segment."
-+    REFERENCE
-+            "IEEE 802.1D-1990: Section 4.5.5.6"
-+    ::= { dot1dStpPortEntry 8 }
-+
-+dot1dStpPortDesignatedPort OBJECT-TYPE
-+    SYNTAX  OCTET STRING (SIZE (2))
-+    ACCESS  read-only
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "The Port Identifier of the port on the Designated
-+            Bridge for this port's segment."
-+    REFERENCE
-+            "IEEE 802.1D-1990: Section 4.5.5.7"
-+    ::= { dot1dStpPortEntry 9 }
-+
-+dot1dStpPortForwardTransitions OBJECT-TYPE
-+    SYNTAX  Counter
-+    ACCESS  read-only
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "The number of times this port has transitioned
-+            from the Learning state to the Forwarding state."
-+    ::= { dot1dStpPortEntry 10 }
-+
-+-- the dot1dTp group
-+
-+-- Implementation of the dot1dTp group is optional.  It is
-+-- implemented by those bridges that support the transparent
-+-- bridging mode.  A transparent or SRT bridge will implement
-+-- this group.
-+
-+dot1dTpLearnedEntryDiscards OBJECT-TYPE
-+    SYNTAX  Counter
-+
-+    ACCESS  read-only
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "The total number of Forwarding Database entries,
-+            which have been or would have been learnt, but
-+            have been discarded due to a lack of space to
-+            store them in the Forwarding Database.  If this
-+            counter is increasing, it indicates that the
-+            Forwarding Database is regularly becoming full (a
-+            condition which has unpleasant performance effects
-+            on the subnetwork).  If this counter has a
-+            significant value but is not presently increasing,
-+            it indicates that the problem has been occurring
-+            but is not persistent."
-+    REFERENCE
-+            "IEEE 802.1D-1990: Section 6.7.1.1.3"
-+    ::= { dot1dTp 1 }
-+
-+dot1dTpAgingTime OBJECT-TYPE
-+    SYNTAX   INTEGER (10..1000000)
-+    ACCESS   read-write
-+    STATUS   mandatory
-+    DESCRIPTION
-+            "The timeout period in seconds for aging out
-+            dynamically learned forwarding information.
-+            802.1D-1990 recommends a default of 300 seconds."
-+    REFERENCE
-+            "IEEE 802.1D-1990: Section 6.7.1.1.3"
-+    ::= { dot1dTp 2 }
-+
-+--  The Forwarding Database for Transparent Bridges
-+
-+dot1dTpFdbTable OBJECT-TYPE
-+    SYNTAX  SEQUENCE OF Dot1dTpFdbEntry
-+    ACCESS  not-accessible
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "A table that contains information about unicast
-+            entries for which the bridge has forwarding and/or
-+            filtering information.  This information is used
-+            by the transparent bridging function in
-+            determining how to propagate a received frame."
-+    ::= { dot1dTp 3 }
-+
-+dot1dTpFdbEntry OBJECT-TYPE
-+    SYNTAX  Dot1dTpFdbEntry
-+    ACCESS  not-accessible
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "Information about a specific unicast MAC address
-+            for which the bridge has some forwarding and/or
-+            filtering information."
-+    INDEX   { dot1dTpFdbAddress }
-+    ::= { dot1dTpFdbTable 1 }
-+
-+Dot1dTpFdbEntry ::=
-+    SEQUENCE {
-+        dot1dTpFdbAddress
-+            MacAddress,
-+        dot1dTpFdbPort
-+            INTEGER,
-+        dot1dTpFdbStatus
-+            INTEGER
-+    }
-+
-+dot1dTpFdbAddress OBJECT-TYPE
-+    SYNTAX  MacAddress
-+    ACCESS  read-only
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "A unicast MAC address for which the bridge has
-+            forwarding and/or filtering information."
-+    REFERENCE
-+            "IEEE 802.1D-1990: Section 3.9.1, 3.9.2"
-+    ::= { dot1dTpFdbEntry 1 }
-+
-+dot1dTpFdbPort OBJECT-TYPE
-+    SYNTAX  INTEGER
-+    ACCESS  read-only
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "Either the value '0', or the port number of the
-+            port on which a frame having a source address
-+            equal to the value of the corresponding instance
-+            of dot1dTpFdbAddress has been seen.  A value of
-+            '0' indicates that the port number has not been
-+            learned but that the bridge does have some
-+            forwarding/filtering information about this
-+            address (e.g. in the dot1dStaticTable).
-+            Implementors are encouraged to assign the port
-+            value to this object whenever it is learned even
-+            for addresses for which the corresponding value of
-+            dot1dTpFdbStatus is not learned(3)."
-+    ::= { dot1dTpFdbEntry 2 }
-+
-+dot1dTpFdbStatus OBJECT-TYPE
-+    SYNTAX  INTEGER {
-+                other(1),
-+                invalid(2),
-+                learned(3),
-+                self(4),
-+                mgmt(5)
-+            }
-+    ACCESS  read-only
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "The status of this entry.  The meanings of the
-+            values are:
-+              other(1)   : none of the following.  This would
-+                           include the case where some other
-+                           MIB object (not the corresponding
-+                           instance of dot1dTpFdbPort, nor an
-+                           entry in the dot1dStaticTable) is
-+                           being used to determine if and how
-+                           frames addressed to the value of
-+                           the corresponding instance of
-+                           dot1dTpFdbAddress are being
-+                           forwarded.
-+              invalid(2) : this entry is not longer valid
-+                           (e.g., it was learned but has since
-+                           aged-out), but has not yet been
-+                           flushed from the table.
-+              learned(3) : the value of the corresponding
-+                           instance of dot1dTpFdbPort was
-+                           learned, and is being used.
-+              self(4)    : the value of the corresponding
-+                           instance of dot1dTpFdbAddress
-+                           represents one of the bridge's
-+                           addresses.  The corresponding
-+                           instance of dot1dTpFdbPort
-+                           indicates which of the bridge's
-+                           ports has this address.
-+              mgmt(5)    : the value of the corresponding
-+                           instance of dot1dTpFdbAddress is
-+                           also the value of an existing
-+                           instance of dot1dStaticAddress."
-+    ::= { dot1dTpFdbEntry 3 }
-+
-+--  Port Table for Transparent Bridges
-+
-+dot1dTpPortTable OBJECT-TYPE
-+    SYNTAX  SEQUENCE OF Dot1dTpPortEntry
-+    ACCESS  not-accessible
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "A table that contains information about every
-+            port that is associated with this transparent
-+            bridge."
-+    ::= { dot1dTp 4 }
-+
-+dot1dTpPortEntry OBJECT-TYPE
-+    SYNTAX  Dot1dTpPortEntry
-+    ACCESS  not-accessible
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "A list of information for each port of a
-+            transparent bridge."
-+    INDEX   { dot1dTpPort }
-+    ::= { dot1dTpPortTable 1 }
-+
-+Dot1dTpPortEntry ::=
-+    SEQUENCE {
-+        dot1dTpPort
-+            INTEGER,
-+        dot1dTpPortMaxInfo
-+            INTEGER,
-+        dot1dTpPortInFrames
-+            Counter,
-+        dot1dTpPortOutFrames
-+            Counter,
-+        dot1dTpPortInDiscards
-+            Counter
-+    }
-+
-+dot1dTpPort OBJECT-TYPE
-+    SYNTAX  INTEGER (1..65535)
-+    ACCESS  read-only
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "The port number of the port for which this entry
-+            contains Transparent bridging management
-+            information."
-+    ::= { dot1dTpPortEntry 1 }
-+
-+-- It would be nice if we could use ifMtu as the size of the
-+-- largest INFO field, but we can't because ifMtu is defined
-+-- to be the size that the (inter-)network layer can use which
-+-- can differ from the MAC layer (especially if several layers
-+-- of encapsulation are used).
-+
-+dot1dTpPortMaxInfo OBJECT-TYPE
-+    SYNTAX  INTEGER
-+    ACCESS  read-only
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "The maximum size of the INFO (non-MAC) field that
-+            this port will receive or transmit."
-+    ::= { dot1dTpPortEntry 2 }
-+
-+dot1dTpPortInFrames OBJECT-TYPE
-+    SYNTAX  Counter
-+    ACCESS  read-only
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "The number of frames that have been received by
-+            this port from its segment. Note that a frame
-+            received on the interface corresponding to this
-+            port is only counted by this object if and only if
-+            it is for a protocol being processed by the local
-+            bridging function, including bridge management
-+            frames."
-+    REFERENCE
-+            "IEEE 802.1D-1990: Section 6.6.1.1.3"
-+    ::= { dot1dTpPortEntry 3 }
-+
-+dot1dTpPortOutFrames OBJECT-TYPE
-+    SYNTAX  Counter
-+    ACCESS  read-only
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "The number of frames that have been transmitted
-+            by this port to its segment.  Note that a frame
-+            transmitted on the interface corresponding to this
-+            port is only counted by this object if and only if
-+            it is for a protocol being processed by the local
-+            bridging function, including bridge management
-+            frames."
-+    REFERENCE
-+            "IEEE 802.1D-1990: Section 6.6.1.1.3"
-+    ::= { dot1dTpPortEntry 4 }
-+
-+dot1dTpPortInDiscards OBJECT-TYPE
-+    SYNTAX   Counter
-+    ACCESS   read-only
-+    STATUS   mandatory
-+    DESCRIPTION
-+            "Count of valid frames received which were
-+            discarded (i.e., filtered) by the Forwarding
-+            Process."
-+    REFERENCE
-+            "IEEE 802.1D-1990: Section 6.6.1.1.3"
-+    ::= { dot1dTpPortEntry 5 }
-+-- The Static (Destination-Address Filtering) Database
-+
-+-- Implementation of this group is optional.
-+
-+dot1dStaticTable OBJECT-TYPE
-+    SYNTAX  SEQUENCE OF Dot1dStaticEntry
-+    ACCESS  not-accessible
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "A table containing filtering information
-+            configured into the bridge by (local or network)
-+            management specifying the set of ports to which
-+            frames received from specific ports and containing
-+            specific destination addresses are allowed to be
-+            forwarded.  The value of zero in this table as the
-+            port number from which frames with a specific
-+            destination address are received, is used to
-+            specify all ports for which there is no specific
-+            entry in this table for that particular
-+            destination address.  Entries are valid for
-+            unicast and for group/broadcast addresses."
-+    REFERENCE
-+            "IEEE 802.1D-1990: Section 6.7.2"
-+    ::= { dot1dStatic 1 }
-+
-+dot1dStaticEntry OBJECT-TYPE
-+    SYNTAX  Dot1dStaticEntry
-+    ACCESS  not-accessible
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "Filtering information configured into the bridge
-+            by (local or network) management specifying the
-+            set of ports to which frames received from a
-+            specific port and containing a specific
-+            destination address are allowed to be forwarded."
-+    REFERENCE
-+            "IEEE 802.1D-1990: Section 6.7.2"
-+    INDEX   { dot1dStaticAddress, dot1dStaticReceivePort }
-+    ::= { dot1dStaticTable 1 }
-+
-+Dot1dStaticEntry ::=
-+    SEQUENCE {
-+        dot1dStaticAddress
-+            MacAddress,
-+        dot1dStaticReceivePort
-+            INTEGER,
-+        dot1dStaticAllowedToGoTo
-+            OCTET STRING,
-+        dot1dStaticStatus
-+            INTEGER
-+    }
-+
-+dot1dStaticAddress OBJECT-TYPE
-+    SYNTAX  MacAddress
-+    ACCESS  read-write
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "The destination MAC address in a frame to which
-+            this entry's filtering information applies.  This
-+            object can take the value of a unicast address, a
-+            group address or the broadcast address."
-+    REFERENCE
-+            "IEEE 802.1D-1990: Section 3.9.1, 3.9.2"
-+    ::= { dot1dStaticEntry 1 }
-+
-+dot1dStaticReceivePort OBJECT-TYPE
-+    SYNTAX  INTEGER
-+    ACCESS  read-write
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "Either the value '0', or the port number of the
-+            port from which a frame must be received in order
-+            for this entry's filtering information to apply.
-+            A value of zero indicates that this entry applies
-+            on all ports of the bridge for which there is no
-+            other applicable entry."
-+    ::= { dot1dStaticEntry 2 }
-+
-+dot1dStaticAllowedToGoTo OBJECT-TYPE
-+    SYNTAX  OCTET STRING
-+    ACCESS  read-write
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "The set of ports to which frames received from a
-+            specific port and destined for a specific MAC
-+
-+            address, are allowed to be forwarded.  Each octet
-+            within the value of this object specifies a set of
-+            eight ports, with the first octet specifying ports
-+            1 through 8, the second octet specifying ports 9
-+            through 16, etc.  Within each octet, the most
-+            significant bit represents the lowest numbered
-+            port, and the least significant bit represents the
-+            highest numbered port.  Thus, each port of the
-+            bridge is represented by a single bit within the
-+            value of this object.  If that bit has a value of
-+            '1' then that port is included in the set of
-+            ports; the port is not included if its bit has a
-+            value of '0'.  (Note that the setting of the bit
-+            corresponding to the port from which a frame is
-+            received is irrelevant.)  The default value of
-+            this object is a string of ones of appropriate
-+            length."
-+    ::= { dot1dStaticEntry 3 }
-+
-+dot1dStaticStatus OBJECT-TYPE
-+    SYNTAX  INTEGER {
-+                other(1),
-+                invalid(2),
-+                permanent(3),
-+                deleteOnReset(4),
-+                deleteOnTimeout(5)
-+            }
-+    ACCESS  read-write
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "This object indicates the status of this entry.
-+            The default value is permanent(3).
-+                 other(1) - this entry is currently in use but
-+                      the conditions under which it will
-+                      remain so are different from each of the
-+                      following values.
-+                 invalid(2) - writing this value to the object
-+                      removes the corresponding entry.
-+                 permanent(3) - this entry is currently in use
-+                      and will remain so after the next reset
-+                      of the bridge.
-+                 deleteOnReset(4) - this entry is currently in
-+                      use and will remain so until the next
-+                      reset of the bridge.
-+                 deleteOnTimeout(5) - this entry is currently
-+                      in use and will remain so until it is
-+                      aged out."
-+
-+    ::= { dot1dStaticEntry 4 }
-+
-+-- Traps for use by Bridges
-+
-+-- Traps for the Spanning Tree Protocol
-+
-+newRoot TRAP-TYPE
-+    ENTERPRISE  dot1dBridge
-+    DESCRIPTION
-+            "The newRoot trap indicates that the sending agent
-+            has become the new root of the Spanning Tree; the
-+            trap is sent by a bridge soon after its election
-+            as the new root, e.g., upon expiration of the
-+            Topology Change Timer immediately subsequent to
-+            its election.  Implementation of this trap is
-+            optional."
-+    ::= 1
-+
-+topologyChange TRAP-TYPE
-+    ENTERPRISE  dot1dBridge
-+    DESCRIPTION
-+            "A topologyChange trap is sent by a bridge when
-+            any of its configured ports transitions from the
-+            Learning state to the Forwarding state, or from
-+            the Forwarding state to the Blocking state.  The
-+            trap is not sent if a newRoot trap is sent for the
-+            same transition.  Implementation of this trap is
-+            optional."
-+    ::= 2
-+
-+END
---- /dev/null
-+++ b/mibs/GNOME-SMI.txt
-@@ -0,0 +1,88 @@
-+GNOME-SMI DEFINITIONS ::= BEGIN
-+
-+IMPORTS
-+	MODULE-IDENTITY,
-+	OBJECT-IDENTITY,
-+	enterprises
-+		FROM SNMPv2-SMI;
-+
-+gnome MODULE-IDENTITY
-+	LAST-UPDATED "200709070000Z"
-+	ORGANIZATION "GNOME project"
-+	CONTACT-INFO
-+		"GNU Network Object Model Environment project
-+		
-+		see http://www.gnome.org for contact persons of a particular
-+		area or subproject of GNOME.
-+
-+		Administrative contact for MIB module:
-+
-+		Jochen Friedrich
-+		Ramsaystr. 9
-+		63450 Hanau
-+		Germany 
-+
-+		email: jochen@scram.de"
-+	DESCRIPTION
-+		"The Structure of GNOME."
-+
-+	-- revision history
-+
-+	REVISION "200709070000Z"  -- Sep 07, 2007
-+	DESCRIPTION
-+		"Fixed wrong enterprise number (how comes this
-+		typo was unnoticed for so long?)."
-+
-+	REVISION "200505070000Z"  -- May 07, 2005
-+	DESCRIPTION
-+		"Added gnomeLDAP subtree for LDAP definitions."
-+
-+	REVISION "200312070000Z"  -- December 07, 2003
-+	DESCRIPTION
-+		"Added gnomeSysadmin subtree for GNOME project system administration.
-+		Updated contact info."
-+
-+	REVISION "9809010000Z"  -- September 01, 1998
-+	DESCRIPTION
-+		"Initial version."
-+
-+	::= { enterprises 3319 }	-- assigned by IANA
-+
-+gnomeProducts OBJECT-IDENTITY
-+	STATUS	current
-+	DESCRIPTION
-+		"gnomeProducts is the root OBJECT IDENTIFIER from
-+		which sysObjectID values are assigned."
-+	::= { gnome 1 }
-+
-+gnomeMgmt OBJECT-IDENTITY
-+	STATUS  current
-+	DESCRIPTION
-+		"gnomeMgmt defines the subtree for production GNOME related
-+		MIB registrations."
-+	::= { gnome 2 }
-+
-+gnomeTest OBJECT-IDENTITY
-+	STATUS  current
-+	DESCRIPTION
-+		"gnomeTest defines the subtree for testing GNOME related
-+		MIB registrations."
-+	::= { gnome 3 }
-+
-+gnomeSysadmin OBJECT-IDENTITY
-+	STATUS  current
-+	DESCRIPTION
-+		"gnomeSysadmin defines the subtree for GNOME related Sysadmin
-+		MIB registrations."
-+	::= { gnome 4 }
-+
-+gnomeLDAP OBJECT-IDENTITY
-+	STATUS  current
-+	DESCRIPTION
-+		"gnomeLDAP defines the subtree for GNOME related LDAP
-+		registrations."
-+	::= { gnome 5 }
-+
-+-- more to come if necessary.
-+
-+END
---- /dev/null
-+++ b/mibs/OSPF-MIB.txt
-@@ -0,0 +1,2723 @@
-+OSPF-MIB DEFINITIONS ::= BEGIN
-+
-+    IMPORTS
-+            MODULE-IDENTITY, OBJECT-TYPE, Counter32, Gauge32,
-+            Integer32, IpAddress
-+                FROM SNMPv2-SMI
-+            TEXTUAL-CONVENTION, TruthValue, RowStatus
-+                FROM SNMPv2-TC
-+            MODULE-COMPLIANCE, OBJECT-GROUP          FROM SNMPv2-CONF
-+            mib-2                                    FROM RFC1213-MIB;
-+
-+--  This MIB module uses the extended OBJECT-TYPE macro as
-+--  defined in [9].
-+
-+ospf MODULE-IDENTITY
-+        LAST-UPDATED "9501201225Z" -- Fri Jan 20 12:25:50 PST 1995
-+        ORGANIZATION "IETF OSPF Working Group"
-+        CONTACT-INFO
-+       "       Fred Baker
-+       Postal: Cisco Systems
-+               519 Lado Drive
-+               Santa Barbara, California 93111
-+       Tel:    +1 805 681 0115
-+       E-Mail: fred@cisco.com
-+
-+               Rob Coltun
-+       Postal: RainbowBridge Communications
-+       Tel:    (301) 340-9416
-+       E-Mail: rcoltun@rainbow-bridge.com"
-+    DESCRIPTION
-+       "The MIB module to describe the OSPF Version 2
-+       Protocol"
-+    ::= { mib-2 14 }
-+
-+--  The Area ID, in OSPF, has the same format as an IP Address,
-+--  but has the function of defining a summarization point for
-+--  Link State Advertisements
-+
-+AreaID ::= TEXTUAL-CONVENTION
-+    STATUS      current
-+    DESCRIPTION
-+       "An OSPF Area Identifier."
-+    SYNTAX      IpAddress
-+
-+
-+--  The Router ID, in OSPF, has the same format as an IP Address,
-+--  but identifies the router independent of its IP Address.
-+
-+RouterID ::= TEXTUAL-CONVENTION
-+    STATUS      current
-+    DESCRIPTION
-+       "A OSPF Router Identifier."
-+    SYNTAX      IpAddress
-+
-+
-+--  The OSPF Metric is defined as an unsigned value in the range
-+
-+Metric ::= TEXTUAL-CONVENTION
-+    STATUS      current
-+    DESCRIPTION
-+       "The OSPF Internal Metric."
-+    SYNTAX      Integer32 (0..'FFFF'h)
-+
-+BigMetric ::= TEXTUAL-CONVENTION
-+    STATUS      current
-+    DESCRIPTION
-+       "The OSPF External Metric."
-+    SYNTAX      Integer32 (0..'FFFFFF'h)
-+
-+--  Status Values
-+
-+Status ::= TEXTUAL-CONVENTION
-+    STATUS      current
-+    DESCRIPTION
-+       "The status of an interface: 'enabled' indicates that
-+       it is willing to communicate with other OSPF Routers,
-+       while 'disabled' indicates that it is not."
-+    SYNTAX      INTEGER { enabled (1), disabled (2) }
-+
-+--  Time Durations measured in seconds
-+
-+PositiveInteger ::= TEXTUAL-CONVENTION
-+    STATUS      current
-+    DESCRIPTION
-+       "A positive integer. Values in excess are precluded as
-+       unnecessary and prone to interoperability issues."
-+    SYNTAX      Integer32 (0..'7FFFFFFF'h)
-+
-+HelloRange ::= TEXTUAL-CONVENTION
-+    STATUS      current
-+    DESCRIPTION
-+       "The range of intervals on which hello messages are
-+       exchanged."
-+    SYNTAX      Integer32 (1..'FFFF'h)
-+
-+UpToMaxAge ::= TEXTUAL-CONVENTION
-+    STATUS      current
-+    DESCRIPTION
-+       "The values that one might find or configure for
-+       variables bounded by the maximum age of an LSA."
-+    SYNTAX      Integer32 (0..3600)
-+
-+
-+--  The range of ifIndex
-+
-+InterfaceIndex ::= TEXTUAL-CONVENTION
-+    STATUS      current
-+    DESCRIPTION
-+       "The range of ifIndex."
-+    SYNTAX      Integer32
-+
-+
-+--  Potential Priorities for the Designated Router Election
-+
-+DesignatedRouterPriority ::= TEXTUAL-CONVENTION
-+    STATUS      current
-+    DESCRIPTION
-+       "The values defined for the priority of a system for
-+       becoming the designated router."
-+    SYNTAX      Integer32 (0..'FF'h)
-+
-+TOSType ::= TEXTUAL-CONVENTION
-+    STATUS      current
-+    DESCRIPTION
-+       "Type of Service is defined as a mapping to the IP Type of
-+       Service Flags as defined in the IP Forwarding Table MIB
-+
-+       +-----+-----+-----+-----+-----+-----+-----+-----+
-+       |                 |                       |     |
-+       |   PRECEDENCE    |    TYPE OF SERVICE    |  0  |
-+       |                 |                       |     |
-+       +-----+-----+-----+-----+-----+-----+-----+-----+
-+
-+                IP TOS                IP TOS
-+           Field     Policy      Field     Policy
-+
-+           Contents    Code      Contents    Code
-+           0 0 0 0  ==>   0      0 0 0 1  ==>   2
-+           0 0 1 0  ==>   4      0 0 1 1  ==>   6
-+           0 1 0 0  ==>   8      0 1 0 1  ==>  10
-+           0 1 1 0  ==>  12      0 1 1 1  ==>  14
-+           1 0 0 0  ==>  16      1 0 0 1  ==>  18
-+           1 0 1 0  ==>  20      1 0 1 1  ==>  22
-+           1 1 0 0  ==>  24      1 1 0 1  ==>  26
-+           1 1 1 0  ==>  28      1 1 1 1  ==>  30
-+
-+       The remaining values are left for future definition."
-+    SYNTAX      Integer32 (0..30)
-+
-+
-+--  OSPF General Variables
-+
-+--      These parameters apply globally to the Router's
-+--      OSPF Process.
-+
-+ospfGeneralGroup OBJECT IDENTIFIER ::= { ospf 1 }
-+
-+
-+    ospfRouterId OBJECT-TYPE
-+        SYNTAX   RouterID
-+        MAX-ACCESS   read-write
-+        STATUS   current
-+        DESCRIPTION
-+           "A  32-bit  integer  uniquely  identifying  the
-+           router in the Autonomous System.
-+
-+           By  convention,  to  ensure  uniqueness,   this
-+           should  default  to  the  value  of  one of the
-+           router's IP interface addresses."
-+       REFERENCE
-+          "OSPF Version 2, C.1 Global parameters"
-+      ::= { ospfGeneralGroup 1 }
-+
-+
-+    ospfAdminStat OBJECT-TYPE
-+        SYNTAX   Status
-+        MAX-ACCESS   read-write
-+        STATUS   current
-+        DESCRIPTION
-+           "The  administrative  status  of  OSPF  in  the
-+           router.   The  value 'enabled' denotes that the
-+           OSPF Process is active on at least  one  inter-
-+           face;  'disabled'  disables  it  on  all inter-
-+           faces."
-+       ::= { ospfGeneralGroup 2 }
-+
-+    ospfVersionNumber OBJECT-TYPE
-+        SYNTAX   INTEGER    { version2 (2) }
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The current version number of the OSPF  proto-
-+           col is 2."
-+       REFERENCE
-+          "OSPF Version 2, Title"
-+      ::= { ospfGeneralGroup 3 }
-+
-+
-+    ospfAreaBdrRtrStatus OBJECT-TYPE
-+        SYNTAX   TruthValue
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "A flag to note whether this router is an  area
-+           border router."
-+       REFERENCE
-+          "OSPF Version 2, Section 3 Splitting the AS into
-+          Areas"
-+      ::= { ospfGeneralGroup 4 }
-+
-+
-+    ospfASBdrRtrStatus OBJECT-TYPE
-+        SYNTAX   TruthValue
-+        MAX-ACCESS   read-write
-+        STATUS   current
-+        DESCRIPTION
-+           "A flag to note whether this router is  config-
-+           ured as an Autonomous System border router."
-+       REFERENCE
-+          "OSPF Version 2, Section 3.3  Classification  of
-+          routers"
-+      ::= { ospfGeneralGroup 5 }
-+
-+    ospfExternLsaCount OBJECT-TYPE
-+        SYNTAX   Gauge32
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The number of external (LS type 5)  link-state
-+           advertisements in the link-state database."
-+       REFERENCE
-+          "OSPF Version 2, Appendix A.4.5 AS external link
-+          advertisements"
-+      ::= { ospfGeneralGroup 6 }
-+
-+
-+    ospfExternLsaCksumSum OBJECT-TYPE
-+        SYNTAX   Integer32
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The 32-bit unsigned sum of the LS checksums of
-+           the  external  link-state  advertisements  con-
-+           tained in the link-state  database.   This  sum
-+           can  be  used  to determine if there has been a
-+           change in a router's link state  database,  and
-+           to  compare  the  link-state  database  of  two
-+           routers."
-+       ::= { ospfGeneralGroup 7 }
-+
-+
-+    ospfTOSSupport OBJECT-TYPE
-+        SYNTAX   TruthValue
-+        MAX-ACCESS   read-write
-+        STATUS   current
-+        DESCRIPTION
-+           "The router's support for type-of-service rout-
-+           ing."
-+       REFERENCE
-+          "OSPF Version 2,  Appendix  F.1.2  Optional  TOS
-+          support"
-+      ::= { ospfGeneralGroup 8 }
-+
-+    ospfOriginateNewLsas OBJECT-TYPE
-+        SYNTAX   Counter32
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The number of  new  link-state  advertisements
-+           that  have been originated.  This number is in-
-+           cremented each time the router originates a new
-+           LSA."
-+       ::= { ospfGeneralGroup 9 }
-+
-+
-+    ospfRxNewLsas OBJECT-TYPE
-+        SYNTAX   Counter32
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The number of  link-state  advertisements  re-
-+           ceived  determined  to  be  new instantiations.
-+           This number does not include  newer  instantia-
-+           tions  of self-originated link-state advertise-
-+           ments."
-+       ::= { ospfGeneralGroup 10 }
-+
-+    ospfExtLsdbLimit OBJECT-TYPE
-+        SYNTAX   Integer32 (-1..'7FFFFFFF'h)
-+        MAX-ACCESS   read-write
-+        STATUS   current
-+        DESCRIPTION
-+           "The  maximum   number   of   non-default   AS-
-+           external-LSAs entries that can be stored in the
-+           link-state database.  If the value is -1,  then
-+           there is no limit.
-+
-+           When the number of non-default AS-external-LSAs
-+           in   a  router's  link-state  database  reaches
-+           ospfExtLsdbLimit, the router  enters  Overflow-
-+           State.   The   router  never  holds  more  than
-+           ospfExtLsdbLimit  non-default  AS-external-LSAs
-+           in  its  database. OspfExtLsdbLimit MUST be set
-+           identically in all routers attached to the OSPF
-+           backbone  and/or  any regular OSPF area. (i.e.,
-+           OSPF stub areas and NSSAs are excluded)."
-+       DEFVAL { -1 }
-+       ::= { ospfGeneralGroup 11 }
-+
-+    ospfMulticastExtensions OBJECT-TYPE
-+        SYNTAX   Integer32
-+        MAX-ACCESS   read-write
-+        STATUS   current
-+        DESCRIPTION
-+           "A Bit Mask indicating whether  the  router  is
-+           forwarding  IP  multicast  (Class  D) datagrams
-+           based on the algorithms defined in  the  Multi-
-+           cast Extensions to OSPF.
-+
-+           Bit 0, if set, indicates that  the  router  can
-+           forward  IP multicast datagrams in the router's
-+           directly attached areas (called intra-area mul-
-+           ticast routing).
-+
-+           Bit 1, if set, indicates that  the  router  can
-+           forward  IP  multicast  datagrams  between OSPF
-+           areas (called inter-area multicast routing).
-+
-+           Bit 2, if set, indicates that  the  router  can
-+           forward  IP  multicast  datagrams between Auto-
-+           nomous Systems (called inter-AS multicast rout-
-+           ing).
-+
-+           Only certain combinations of bit  settings  are
-+           allowed,  namely: 0 (no multicast forwarding is
-+           enabled), 1 (intra-area multicasting  only),  3
-+           (intra-area  and  inter-area  multicasting),  5
-+           (intra-area and inter-AS  multicasting)  and  7
-+           (multicasting  everywhere). By default, no mul-
-+           ticast forwarding is enabled."
-+       DEFVAL { 0 }
-+       ::= { ospfGeneralGroup 12 }
-+
-+    ospfExitOverflowInterval OBJECT-TYPE
-+        SYNTAX   PositiveInteger
-+        MAX-ACCESS   read-write
-+        STATUS   current
-+        DESCRIPTION
-+           "The number of  seconds  that,  after  entering
-+           OverflowState,  a  router will attempt to leave
-+           OverflowState. This allows the router to  again
-+           originate  non-default  AS-external-LSAs.  When
-+           set to 0, the router will not  leave  Overflow-
-+           State until restarted."
-+       DEFVAL { 0 }
-+       ::= { ospfGeneralGroup 13 }
-+
-+
-+    ospfDemandExtensions OBJECT-TYPE
-+        SYNTAX   TruthValue
-+        MAX-ACCESS   read-write
-+        STATUS   current
-+        DESCRIPTION
-+           "The router's support for demand routing."
-+       REFERENCE
-+          "OSPF Version 2, Appendix on Demand Routing"
-+      ::= { ospfGeneralGroup 14 }
-+
-+
-+--      The OSPF Area Data Structure contains information
-+--      regarding the various areas. The interfaces and
-+--      virtual links are configured as part of these areas.
-+--      Area 0.0.0.0, by definition, is the Backbone Area
-+
-+
-+    ospfAreaTable OBJECT-TYPE
-+        SYNTAX   SEQUENCE OF OspfAreaEntry
-+        MAX-ACCESS   not-accessible
-+        STATUS   current
-+        DESCRIPTION
-+           "Information describing the configured  parame-
-+           ters  and cumulative statistics of the router's
-+           attached areas."
-+       REFERENCE
-+          "OSPF Version 2, Section 6  The Area Data Struc-
-+          ture"
-+      ::= { ospf 2 }
-+
-+
-+    ospfAreaEntry OBJECT-TYPE
-+        SYNTAX   OspfAreaEntry
-+        MAX-ACCESS   not-accessible
-+        STATUS   current
-+        DESCRIPTION
-+           "Information describing the configured  parame-
-+           ters  and  cumulative  statistics of one of the
-+           router's attached areas."
-+       INDEX { ospfAreaId }
-+       ::= { ospfAreaTable 1 }
-+
-+OspfAreaEntry ::=
-+    SEQUENCE {
-+        ospfAreaId
-+            AreaID,
-+        ospfAuthType
-+            Integer32,
-+        ospfImportAsExtern
-+            INTEGER,
-+        ospfSpfRuns
-+            Counter32,
-+        ospfAreaBdrRtrCount
-+            Gauge32,
-+        ospfAsBdrRtrCount
-+            Gauge32,
-+        ospfAreaLsaCount
-+            Gauge32,
-+        ospfAreaLsaCksumSum
-+            Integer32,
-+        ospfAreaSummary
-+            INTEGER,
-+        ospfAreaStatus
-+            RowStatus
-+              }
-+
-+    ospfAreaId OBJECT-TYPE
-+        SYNTAX   AreaID
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "A 32-bit integer uniquely identifying an area.
-+           Area ID 0.0.0.0 is used for the OSPF backbone."
-+       REFERENCE
-+          "OSPF Version 2, Appendix C.2 Area parameters"
-+      ::= { ospfAreaEntry 1 }
-+
-+
-+    ospfAuthType OBJECT-TYPE
-+        SYNTAX   Integer32
-+                    -- none (0),
-+                    -- simplePassword (1)
-+                    -- md5 (2)
-+                    -- reserved for specification by IANA (> 2)
-+        MAX-ACCESS   read-create
-+        STATUS   obsolete
-+        DESCRIPTION
-+           "The authentication type specified for an area.
-+           Additional authentication types may be assigned
-+           locally on a per Area basis."
-+       REFERENCE
-+          "OSPF Version 2, Appendix E Authentication"
-+      DEFVAL { 0 }        -- no authentication, by default
-+      ::= { ospfAreaEntry 2 }
-+
-+    ospfImportAsExtern OBJECT-TYPE
-+        SYNTAX   INTEGER    {
-+                    importExternal (1),
-+                    importNoExternal (2),
-+                    importNssa (3)
-+                  }
-+        MAX-ACCESS   read-create
-+        STATUS   current
-+        DESCRIPTION
-+           "The area's support for importing  AS  external
-+           link- state advertisements."
-+       REFERENCE
-+          "OSPF Version 2, Appendix C.2 Area parameters"
-+      DEFVAL { importExternal }
-+      ::= { ospfAreaEntry 3 }
-+
-+
-+    ospfSpfRuns OBJECT-TYPE
-+        SYNTAX   Counter32
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The number of times that the intra-area  route
-+           table  has  been  calculated  using this area's
-+           link-state database.  This  is  typically  done
-+           using Dijkstra's algorithm."
-+       ::= { ospfAreaEntry 4 }
-+
-+
-+    ospfAreaBdrRtrCount OBJECT-TYPE
-+        SYNTAX   Gauge32
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The total number of area border routers reach-
-+           able within this area.  This is initially zero,
-+           and is calculated in each SPF Pass."
-+       ::= { ospfAreaEntry 5 }
-+
-+    ospfAsBdrRtrCount OBJECT-TYPE
-+        SYNTAX   Gauge32
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The total number of Autonomous  System  border
-+           routers  reachable  within  this area.  This is
-+           initially zero, and is calculated in  each  SPF
-+           Pass."
-+       ::= { ospfAreaEntry 6 }
-+
-+
-+    ospfAreaLsaCount OBJECT-TYPE
-+        SYNTAX   Gauge32
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The total number of link-state  advertisements
-+           in  this  area's link-state database, excluding
-+           AS External LSA's."
-+       ::= { ospfAreaEntry 7 }
-+
-+
-+    ospfAreaLsaCksumSum OBJECT-TYPE
-+        SYNTAX   Integer32
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The 32-bit unsigned sum of the link-state  ad-
-+           vertisements'  LS  checksums  contained in this
-+           area's link-state database.  This sum  excludes
-+           external (LS type 5) link-state advertisements.
-+           The sum can be used to determine if  there  has
-+           been  a  change  in a router's link state data-
-+           base, and to compare the link-state database of
-+           two routers."
-+       DEFVAL   { 0 }
-+       ::= { ospfAreaEntry 8 }
-+
-+    ospfAreaSummary OBJECT-TYPE
-+        SYNTAX   INTEGER    {
-+                    noAreaSummary (1),
-+                    sendAreaSummary (2)
-+                  }
-+        MAX-ACCESS   read-create
-+        STATUS   current
-+        DESCRIPTION
-+           "The variable ospfAreaSummary controls the  im-
-+           port  of  summary LSAs into stub areas.  It has
-+           no effect on other areas.
-+
-+           If it is noAreaSummary, the router will neither
-+           originate  nor  propagate summary LSAs into the
-+           stub area.  It will rely entirely  on  its  de-
-+           fault route.
-+
-+           If it is sendAreaSummary, the router will  both
-+           summarize and propagate summary LSAs."
-+       DEFVAL   { noAreaSummary }
-+       ::= { ospfAreaEntry 9 }
-+
-+
-+    ospfAreaStatus OBJECT-TYPE
-+        SYNTAX   RowStatus
-+        MAX-ACCESS   read-create
-+        STATUS   current
-+        DESCRIPTION
-+           "This variable displays the status of  the  en-
-+           try.  Setting it to 'invalid' has the effect of
-+           rendering it inoperative.  The internal  effect
-+           (row removal) is implementation dependent."
-+       ::= { ospfAreaEntry 10 }
-+
-+
-+--  OSPF Area Default Metric Table
-+
-+--      The OSPF Area Default Metric Table describes the metrics
-+--      that a default Area Border Router will advertise into a
-+--      Stub area.
-+
-+
-+    ospfStubAreaTable OBJECT-TYPE
-+        SYNTAX   SEQUENCE OF OspfStubAreaEntry
-+        MAX-ACCESS   not-accessible
-+        STATUS   current
-+        DESCRIPTION
-+           "The set of metrics that will be advertised  by
-+           a default Area Border Router into a stub area."
-+       REFERENCE
-+          "OSPF Version 2, Appendix C.2, Area Parameters"
-+      ::= { ospf 3 }
-+
-+
-+    ospfStubAreaEntry OBJECT-TYPE
-+        SYNTAX   OspfStubAreaEntry
-+        MAX-ACCESS   not-accessible
-+        STATUS   current
-+        DESCRIPTION
-+           "The metric for a given Type  of  Service  that
-+           will  be  advertised  by  a default Area Border
-+           Router into a stub area."
-+       REFERENCE
-+          "OSPF Version 2, Appendix C.2, Area Parameters"
-+      INDEX { ospfStubAreaId, ospfStubTOS }
-+      ::= { ospfStubAreaTable 1 }
-+
-+OspfStubAreaEntry ::=
-+    SEQUENCE {
-+        ospfStubAreaId
-+            AreaID,
-+        ospfStubTOS
-+            TOSType,
-+        ospfStubMetric
-+            BigMetric,
-+        ospfStubStatus
-+            RowStatus,
-+        ospfStubMetricType
-+            INTEGER
-+              }
-+
-+    ospfStubAreaId OBJECT-TYPE
-+        SYNTAX   AreaID
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The 32 bit identifier for the Stub  Area.   On
-+           creation,  this  can  be  derived  from the in-
-+           stance."
-+       ::= { ospfStubAreaEntry 1 }
-+
-+
-+    ospfStubTOS OBJECT-TYPE
-+        SYNTAX   TOSType
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The  Type  of  Service  associated  with   the
-+           metric.   On creation, this can be derived from
-+           the instance."
-+       ::= { ospfStubAreaEntry 2 }
-+
-+
-+    ospfStubMetric OBJECT-TYPE
-+        SYNTAX   BigMetric
-+        MAX-ACCESS   read-create
-+        STATUS   current
-+        DESCRIPTION
-+           "The metric value applied at the indicated type
-+           of  service.  By default, this equals the least
-+           metric at the type of service among the  inter-
-+           faces to other areas."
-+       ::= { ospfStubAreaEntry 3 }
-+
-+
-+    ospfStubStatus OBJECT-TYPE
-+        SYNTAX   RowStatus
-+        MAX-ACCESS   read-create
-+        STATUS   current
-+        DESCRIPTION
-+           "This variable displays the status of  the  en-
-+           try.  Setting it to 'invalid' has the effect of
-+           rendering it inoperative.  The internal  effect
-+           (row removal) is implementation dependent."
-+       ::= { ospfStubAreaEntry 4 }
-+
-+    ospfStubMetricType OBJECT-TYPE
-+        SYNTAX   INTEGER    {
-+                    ospfMetric (1),                -- OSPF Metric
-+                    comparableCost (2),        -- external type 1
-+                    nonComparable  (3)        -- external type 2
-+                  }
-+        MAX-ACCESS   read-create
-+        STATUS   current
-+        DESCRIPTION
-+           "This variable displays the type of metric  ad-
-+           vertised as a default route."
-+       DEFVAL   { ospfMetric }
-+       ::= { ospfStubAreaEntry 5 }
-+
-+--  OSPF Link State Database
-+
-+--      The Link State Database contains the Link State
-+--      Advertisements from throughout the areas that the
-+--      device is attached to.
-+
-+
-+    ospfLsdbTable OBJECT-TYPE
-+        SYNTAX   SEQUENCE OF OspfLsdbEntry
-+        MAX-ACCESS   not-accessible
-+        STATUS   current
-+        DESCRIPTION
-+           "The OSPF Process's Link State Database."
-+       REFERENCE
-+          "OSPF Version 2, Section 12  Link  State  Adver-
-+          tisements"
-+      ::= { ospf 4 }
-+
-+
-+    ospfLsdbEntry OBJECT-TYPE
-+        SYNTAX   OspfLsdbEntry
-+        MAX-ACCESS   not-accessible
-+        STATUS   current
-+        DESCRIPTION
-+           "A single Link State Advertisement."
-+       INDEX { ospfLsdbAreaId, ospfLsdbType,
-+               ospfLsdbLsid, ospfLsdbRouterId }
-+       ::= { ospfLsdbTable 1 }
-+
-+OspfLsdbEntry ::=
-+    SEQUENCE {
-+        ospfLsdbAreaId
-+            AreaID,
-+        ospfLsdbType
-+            INTEGER,
-+        ospfLsdbLsid
-+            IpAddress,
-+        ospfLsdbRouterId
-+            RouterID,
-+        ospfLsdbSequence
-+            Integer32,
-+        ospfLsdbAge
-+            Integer32,
-+        ospfLsdbChecksum
-+            Integer32,
-+        ospfLsdbAdvertisement
-+            OCTET STRING
-+              }
-+    ospfLsdbAreaId OBJECT-TYPE
-+        SYNTAX   AreaID
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The 32 bit identifier of the Area  from  which
-+           the LSA was received."
-+       REFERENCE
-+          "OSPF Version 2, Appendix C.2 Area parameters"
-+      ::= { ospfLsdbEntry 1 }
-+
-+-- External Link State Advertisements are permitted
-+-- for backward compatibility, but should be displayed in
-+-- the ospfExtLsdbTable rather than here.
-+
-+    ospfLsdbType OBJECT-TYPE
-+        SYNTAX   INTEGER    {
-+                    routerLink (1),
-+                    networkLink (2),
-+                    summaryLink (3),
-+                    asSummaryLink (4),
-+                    asExternalLink (5), -- but see ospfExtLsdbTable
-+                    multicastLink (6),
-+                    nssaExternalLink (7)
-+                  }
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The type  of  the  link  state  advertisement.
-+           Each  link state type has a separate advertise-
-+           ment format."
-+       REFERENCE
-+          "OSPF Version 2, Appendix A.4.1 The  Link  State
-+          Advertisement header"
-+      ::= { ospfLsdbEntry 2 }
-+
-+    ospfLsdbLsid OBJECT-TYPE
-+        SYNTAX   IpAddress
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The Link State ID is an LS Type Specific field
-+           containing either a Router ID or an IP Address;
-+           it identifies the piece of the  routing  domain
-+           that is being described by the advertisement."
-+       REFERENCE
-+          "OSPF Version 2, Section 12.1.4 Link State ID"
-+      ::= { ospfLsdbEntry 3 }
-+    ospfLsdbRouterId OBJECT-TYPE
-+        SYNTAX   RouterID
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The 32 bit number that uniquely identifies the
-+           originating router in the Autonomous System."
-+       REFERENCE
-+          "OSPF Version 2, Appendix C.1 Global parameters"
-+      ::= { ospfLsdbEntry 4 }
-+
-+--  Note that the OSPF Sequence Number is a 32 bit signed
-+--  integer.  It starts with the value '80000001'h,
-+--  or -'7FFFFFFF'h, and increments until '7FFFFFFF'h
-+--  Thus, a typical sequence number will be very negative.
-+
-+    ospfLsdbSequence OBJECT-TYPE
-+        SYNTAX   Integer32
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The sequence number field is a  signed  32-bit
-+           integer.   It  is used to detect old and dupli-
-+           cate link state advertisements.  The  space  of
-+           sequence  numbers  is  linearly  ordered.   The
-+           larger the sequence number the more recent  the
-+           advertisement."
-+       REFERENCE
-+          "OSPF Version  2,  Section  12.1.6  LS  sequence
-+          number"
-+      ::= { ospfLsdbEntry 5 }
-+
-+
-+    ospfLsdbAge OBJECT-TYPE
-+        SYNTAX   Integer32    -- Should be 0..MaxAge
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "This field is the age of the link state adver-
-+           tisement in seconds."
-+       REFERENCE
-+          "OSPF Version 2, Section 12.1.1 LS age"
-+      ::= { ospfLsdbEntry 6 }
-+
-+    ospfLsdbChecksum OBJECT-TYPE
-+        SYNTAX   Integer32
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "This field is the  checksum  of  the  complete
-+           contents  of  the  advertisement, excepting the
-+           age field.  The age field is excepted  so  that
-+           an   advertisement's  age  can  be  incremented
-+           without updating the  checksum.   The  checksum
-+           used  is  the same that is used for ISO connec-
-+           tionless datagrams; it is commonly referred  to
-+           as the Fletcher checksum."
-+       REFERENCE
-+          "OSPF Version 2, Section 12.1.7 LS checksum"
-+      ::= { ospfLsdbEntry 7 }
-+
-+
-+    ospfLsdbAdvertisement OBJECT-TYPE
-+        SYNTAX   OCTET STRING (SIZE (1..65535))
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The entire Link State Advertisement, including
-+           its header."
-+       REFERENCE
-+          "OSPF Version 2, Section 12  Link  State  Adver-
-+          tisements"
-+      ::= { ospfLsdbEntry 8 }
-+
-+
-+--  Address Range Table
-+
-+--      The Address Range Table acts as an adjunct to the Area
-+--      Table; It describes those Address Range Summaries that
-+--      are configured to be propagated from an Area to reduce
-+--      the amount of information about it which is known beyond
-+--      its borders.
-+
-+    ospfAreaRangeTable OBJECT-TYPE
-+        SYNTAX   SEQUENCE OF OspfAreaRangeEntry
-+        MAX-ACCESS   not-accessible
-+        STATUS   obsolete
-+        DESCRIPTION
-+           "A range if IP addresses  specified  by  an  IP
-+           address/IP  network  mask  pair.   For example,
-+           class B address range of X.X.X.X with a network
-+           mask  of  255.255.0.0 includes all IP addresses
-+           from X.X.0.0 to X.X.255.255"
-+       REFERENCE
-+          "OSPF Version 2, Appendix C.2  Area parameters"
-+      ::= { ospf 5 }
-+    ospfAreaRangeEntry OBJECT-TYPE
-+        SYNTAX   OspfAreaRangeEntry
-+        MAX-ACCESS   not-accessible
-+        STATUS   obsolete
-+        DESCRIPTION
-+           "A range if IP addresses  specified  by  an  IP
-+           address/IP  network  mask  pair.   For example,
-+           class B address range of X.X.X.X with a network
-+           mask  of  255.255.0.0 includes all IP addresses
-+           from X.X.0.0 to X.X.255.255"
-+       REFERENCE
-+          "OSPF Version 2, Appendix C.2  Area parameters"
-+      INDEX { ospfAreaRangeAreaId, ospfAreaRangeNet }
-+      ::= { ospfAreaRangeTable 1 }
-+
-+OspfAreaRangeEntry ::=
-+    SEQUENCE {
-+        ospfAreaRangeAreaId
-+            AreaID,
-+        ospfAreaRangeNet
-+            IpAddress,
-+        ospfAreaRangeMask
-+            IpAddress,
-+        ospfAreaRangeStatus
-+            RowStatus,
-+        ospfAreaRangeEffect
-+            INTEGER
-+              }
-+
-+    ospfAreaRangeAreaId OBJECT-TYPE
-+        SYNTAX   AreaID
-+        MAX-ACCESS   read-only
-+        STATUS   obsolete
-+        DESCRIPTION
-+           "The Area the Address  Range  is  to  be  found
-+           within."
-+       REFERENCE
-+          "OSPF Version 2, Appendix C.2 Area parameters"
-+      ::= { ospfAreaRangeEntry 1 }
-+
-+
-+    ospfAreaRangeNet OBJECT-TYPE
-+        SYNTAX   IpAddress
-+        MAX-ACCESS   read-only
-+        STATUS   obsolete
-+        DESCRIPTION
-+           "The IP Address of the Net or Subnet  indicated
-+           by the range."
-+       REFERENCE
-+          "OSPF Version 2, Appendix C.2 Area parameters"
-+      ::= { ospfAreaRangeEntry 2 }
-+
-+
-+    ospfAreaRangeMask OBJECT-TYPE
-+        SYNTAX   IpAddress
-+        MAX-ACCESS   read-create
-+        STATUS   obsolete
-+        DESCRIPTION
-+           "The Subnet Mask that pertains to  the  Net  or
-+           Subnet."
-+       REFERENCE
-+          "OSPF Version 2, Appendix C.2 Area parameters"
-+      ::= { ospfAreaRangeEntry 3 }
-+
-+    ospfAreaRangeStatus OBJECT-TYPE
-+        SYNTAX   RowStatus
-+        MAX-ACCESS   read-create
-+        STATUS   obsolete
-+        DESCRIPTION
-+           "This variable displays the status of  the  en-
-+           try.  Setting it to 'invalid' has the effect of
-+           rendering it inoperative.  The internal  effect
-+           (row removal) is implementation dependent."
-+       ::= { ospfAreaRangeEntry 4 }
-+
-+
-+    ospfAreaRangeEffect OBJECT-TYPE
-+        SYNTAX   INTEGER    {
-+                    advertiseMatching (1),
-+                    doNotAdvertiseMatching (2)
-+                  }
-+        MAX-ACCESS   read-create
-+        STATUS   obsolete
-+        DESCRIPTION
-+           "Subnets subsumed by ranges either trigger  the
-+           advertisement  of the indicated summary (adver-
-+           tiseMatching), or result in  the  subnet's  not
-+           being advertised at all outside the area."
-+       DEFVAL   { advertiseMatching }
-+       ::= { ospfAreaRangeEntry 5 }
-+
-+
-+
-+--  OSPF Host Table
-+
-+--      The Host/Metric Table indicates what hosts are directly
-+--      attached to the Router, and what metrics and types of
-+--      service should be advertised for them.
-+
-+    ospfHostTable OBJECT-TYPE
-+        SYNTAX   SEQUENCE OF OspfHostEntry
-+        MAX-ACCESS   not-accessible
-+        STATUS   current
-+        DESCRIPTION
-+           "The list of Hosts, and their metrics, that the
-+           router will advertise as host routes."
-+       REFERENCE
-+          "OSPF Version 2, Appendix C.6  Host route param-
-+          eters"
-+      ::= { ospf 6 }
-+
-+
-+    ospfHostEntry OBJECT-TYPE
-+        SYNTAX   OspfHostEntry
-+        MAX-ACCESS   not-accessible
-+        STATUS   current
-+        DESCRIPTION
-+           "A metric to be advertised, for a given type of
-+           service, when a given host is reachable."
-+       INDEX { ospfHostIpAddress, ospfHostTOS }
-+       ::= { ospfHostTable 1 }
-+
-+OspfHostEntry ::=
-+    SEQUENCE {
-+        ospfHostIpAddress
-+            IpAddress,
-+        ospfHostTOS
-+            TOSType,
-+        ospfHostMetric
-+            Metric,
-+        ospfHostStatus
-+            RowStatus,
-+        ospfHostAreaID
-+            AreaID
-+              }
-+
-+    ospfHostIpAddress OBJECT-TYPE
-+        SYNTAX   IpAddress
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The IP Address of the Host."
-+       REFERENCE
-+          "OSPF Version 2, Appendix C.6 Host route parame-
-+          ters"
-+      ::= { ospfHostEntry 1 }
-+
-+
-+    ospfHostTOS OBJECT-TYPE
-+        SYNTAX   TOSType
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The Type of Service of the route being config-
-+           ured."
-+       REFERENCE
-+          "OSPF Version 2, Appendix C.6 Host route parame-
-+          ters"
-+      ::= { ospfHostEntry 2 }
-+
-+
-+    ospfHostMetric OBJECT-TYPE
-+        SYNTAX   Metric
-+        MAX-ACCESS   read-create
-+        STATUS   current
-+        DESCRIPTION
-+           "The Metric to be advertised."
-+       REFERENCE
-+          "OSPF Version 2, Appendix C.6 Host route parame-
-+          ters"
-+      ::= { ospfHostEntry 3 }
-+
-+    ospfHostStatus OBJECT-TYPE
-+        SYNTAX   RowStatus
-+        MAX-ACCESS   read-create
-+        STATUS   current
-+        DESCRIPTION
-+           "This variable displays the status of  the  en-
-+           try.  Setting it to 'invalid' has the effect of
-+           rendering it inoperative.  The internal  effect
-+           (row removal) is implementation dependent."
-+       ::= { ospfHostEntry 4 }
-+
-+
-+    ospfHostAreaID OBJECT-TYPE
-+        SYNTAX   AreaID
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The Area the Host Entry is to be found within.
-+           By  default, the area that a subsuming OSPF in-
-+           terface is in, or 0.0.0.0"
-+       REFERENCE
-+          "OSPF Version 2, Appendix C.2 Area parameters"
-+      ::= { ospfHostEntry 5 }
-+
-+
-+--  OSPF Interface Table
-+
-+--      The OSPF Interface Table augments the ipAddrTable
-+--             with OSPF specific information.
-+
-+    ospfIfTable OBJECT-TYPE
-+        SYNTAX   SEQUENCE OF OspfIfEntry
-+        MAX-ACCESS   not-accessible
-+        STATUS   current
-+        DESCRIPTION
-+           "The OSPF Interface Table describes the  inter-
-+           faces from the viewpoint of OSPF."
-+       REFERENCE
-+          "OSPF Version 2, Appendix C.3  Router  interface
-+          parameters"
-+      ::= { ospf 7 }
-+
-+
-+    ospfIfEntry OBJECT-TYPE
-+        SYNTAX   OspfIfEntry
-+        MAX-ACCESS   not-accessible
-+        STATUS   current
-+        DESCRIPTION
-+           "The OSPF Interface Entry describes one  inter-
-+           face from the viewpoint of OSPF."
-+       INDEX { ospfIfIpAddress, ospfAddressLessIf }
-+       ::= { ospfIfTable 1 }
-+
-+OspfIfEntry ::=
-+    SEQUENCE {
-+        ospfIfIpAddress
-+            IpAddress,
-+        ospfAddressLessIf
-+            Integer32,
-+        ospfIfAreaId
-+            AreaID,
-+        ospfIfType
-+            INTEGER,
-+        ospfIfAdminStat
-+            Status,
-+        ospfIfRtrPriority
-+            DesignatedRouterPriority,
-+        ospfIfTransitDelay
-+            UpToMaxAge,
-+        ospfIfRetransInterval
-+            UpToMaxAge,
-+        ospfIfHelloInterval
-+            HelloRange,
-+        ospfIfRtrDeadInterval
-+            PositiveInteger,
-+        ospfIfPollInterval
-+            PositiveInteger,
-+        ospfIfState
-+            INTEGER,
-+        ospfIfDesignatedRouter
-+            IpAddress,
-+        ospfIfBackupDesignatedRouter
-+            IpAddress,
-+        ospfIfEvents
-+            Counter32,
-+        ospfIfAuthType
-+            INTEGER,
-+        ospfIfAuthKey
-+            OCTET STRING,
-+        ospfIfStatus
-+            RowStatus,
-+        ospfIfMulticastForwarding
-+            INTEGER,
-+        ospfIfDemand
-+            TruthValue
-+              }
-+
-+    ospfIfIpAddress OBJECT-TYPE
-+        SYNTAX   IpAddress
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The IP address of this OSPF interface."
-+       ::= { ospfIfEntry 1 }
-+
-+    ospfAddressLessIf OBJECT-TYPE
-+        SYNTAX   Integer32
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "For the purpose of easing  the  instancing  of
-+           addressed   and  addressless  interfaces;  This
-+           variable takes the value 0 on  interfaces  with
-+           IP  Addresses,  and  the corresponding value of
-+           ifIndex for interfaces having no IP Address."
-+       ::= { ospfIfEntry 2 }
-+    ospfIfAreaId OBJECT-TYPE
-+        SYNTAX   AreaID
-+        MAX-ACCESS   read-create
-+        STATUS   current
-+        DESCRIPTION
-+           "A 32-bit integer uniquely identifying the area
-+           to  which  the  interface  connects.   Area  ID
-+           0.0.0.0 is used for the OSPF backbone."
-+       DEFVAL   { '00000000'H }    -- 0.0.0.0
-+       ::= { ospfIfEntry 3 }
-+
-+    ospfIfType OBJECT-TYPE
-+        SYNTAX   INTEGER    {
-+                    broadcast (1),
-+                    nbma (2),
-+                    pointToPoint (3),
-+                    pointToMultipoint (5)
-+                  }
-+        MAX-ACCESS   read-create
-+        STATUS   current
-+        DESCRIPTION
-+           "The OSPF interface type.
-+
-+           By way of a default, this field may be intuited
-+           from the corresponding value of ifType.  Broad-
-+           cast LANs, such as  Ethernet  and  IEEE  802.5,
-+           take  the  value  'broadcast', X.25 and similar
-+           technologies take the value 'nbma',  and  links
-+           that  are  definitively point to point take the
-+           value 'pointToPoint'."
-+       ::= { ospfIfEntry 4 }
-+
-+
-+    ospfIfAdminStat OBJECT-TYPE
-+        SYNTAX   Status
-+        MAX-ACCESS   read-create
-+        STATUS   current
-+        DESCRIPTION
-+           "The OSPF  interface's  administrative  status.
-+           The  value formed on the interface, and the in-
-+           terface will be advertised as an internal route
-+           to  some  area.   The  value 'disabled' denotes
-+           that the interface is external to OSPF."
-+       DEFVAL { enabled }
-+       ::= { ospfIfEntry 5 }
-+
-+    ospfIfRtrPriority OBJECT-TYPE
-+        SYNTAX   DesignatedRouterPriority
-+        MAX-ACCESS   read-create
-+        STATUS   current
-+        DESCRIPTION
-+           "The  priority  of  this  interface.   Used  in
-+           multi-access  networks,  this  field is used in
-+           the designated router election algorithm.   The
-+           value 0 signifies that the router is not eligi-
-+           ble to become the  designated  router  on  this
-+           particular  network.   In the event of a tie in
-+           this value, routers will use their Router ID as
-+           a tie breaker."
-+       DEFVAL { 1 }
-+       ::= { ospfIfEntry 6 }
-+
-+
-+    ospfIfTransitDelay OBJECT-TYPE
-+        SYNTAX   UpToMaxAge
-+        MAX-ACCESS   read-create
-+        STATUS   current
-+        DESCRIPTION
-+           "The estimated number of seconds  it  takes  to
-+           transmit  a  link state update packet over this
-+           interface."
-+       DEFVAL { 1 }
-+       ::= { ospfIfEntry 7 }
-+
-+
-+    ospfIfRetransInterval OBJECT-TYPE
-+        SYNTAX   UpToMaxAge
-+        MAX-ACCESS   read-create
-+        STATUS   current
-+        DESCRIPTION
-+           "The number of seconds between  link-state  ad-
-+           vertisement  retransmissions,  for  adjacencies
-+           belonging to this  interface.   This  value  is
-+           also used when retransmitting database descrip-
-+           tion and link-state request packets."
-+       DEFVAL { 5 }
-+       ::= { ospfIfEntry 8 }
-+
-+
-+    ospfIfHelloInterval OBJECT-TYPE
-+        SYNTAX   HelloRange
-+        MAX-ACCESS   read-create
-+        STATUS   current
-+        DESCRIPTION
-+           "The length of time, in  seconds,  between  the
-+           Hello  packets that the router sends on the in-
-+           terface.  This value must be the same  for  all
-+           routers attached to a common network."
-+       DEFVAL { 10 }
-+       ::= { ospfIfEntry 9 }
-+
-+
-+    ospfIfRtrDeadInterval OBJECT-TYPE
-+        SYNTAX   PositiveInteger
-+        MAX-ACCESS   read-create
-+        STATUS   current
-+        DESCRIPTION
-+           "The number of seconds that  a  router's  Hello
-+           packets  have  not been seen before it's neigh-
-+           bors declare the router down.  This  should  be
-+           some  multiple  of  the  Hello  interval.  This
-+           value must be the same for all routers attached
-+           to a common network."
-+       DEFVAL { 40 }
-+       ::= { ospfIfEntry 10 }
-+
-+
-+    ospfIfPollInterval OBJECT-TYPE
-+        SYNTAX   PositiveInteger
-+        MAX-ACCESS   read-create
-+        STATUS   current
-+        DESCRIPTION
-+           "The larger time interval, in seconds,  between
-+           the  Hello  packets  sent  to  an inactive non-
-+           broadcast multi- access neighbor."
-+       DEFVAL { 120 }
-+       ::= { ospfIfEntry 11 }
-+
-+
-+    ospfIfState OBJECT-TYPE
-+        SYNTAX   INTEGER    {
-+                    down (1),
-+                    loopback (2),
-+                    waiting (3),
-+                    pointToPoint (4),
-+                    designatedRouter (5),
-+                    backupDesignatedRouter (6),
-+                    otherDesignatedRouter (7)
-+                  }
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The OSPF Interface State."
-+       DEFVAL { down }
-+       ::= { ospfIfEntry 12 }
-+
-+
-+    ospfIfDesignatedRouter OBJECT-TYPE
-+        SYNTAX   IpAddress
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The IP Address of the Designated Router."
-+       DEFVAL   { '00000000'H }    -- 0.0.0.0
-+       ::= { ospfIfEntry 13 }
-+
-+
-+    ospfIfBackupDesignatedRouter OBJECT-TYPE
-+        SYNTAX   IpAddress
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The  IP  Address  of  the  Backup   Designated
-+           Router."
-+       DEFVAL   { '00000000'H }    -- 0.0.0.0
-+       ::= { ospfIfEntry 14 }
-+
-+    ospfIfEvents OBJECT-TYPE
-+        SYNTAX   Counter32
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The number of times this  OSPF  interface  has
-+           changed its state, or an error has occurred."
-+       ::= { ospfIfEntry 15 }
-+
-+
-+    ospfIfAuthKey OBJECT-TYPE
-+        SYNTAX   OCTET STRING (SIZE (0..256))
-+        MAX-ACCESS   read-create
-+        STATUS   current
-+        DESCRIPTION
-+           "The Authentication Key.  If the Area's Author-
-+           ization  Type  is  simplePassword,  and the key
-+           length is shorter than 8 octets, the agent will
-+           left adjust and zero fill to 8 octets.
-+
-+           Note that unauthenticated  interfaces  need  no
-+           authentication key, and simple password authen-
-+           tication cannot use a key of more  than  8  oc-
-+           tets.  Larger keys are useful only with authen-
-+           tication mechanisms not specified in this docu-
-+           ment.
-+
-+           When read, ospfIfAuthKey always returns an  Oc-
-+           tet String of length zero."
-+       REFERENCE
-+          "OSPF Version 2, Section 9  The  Interface  Data
-+          Structure"
-+      DEFVAL   { '0000000000000000'H }    -- 0.0.0.0.0.0.0.0
-+      ::= { ospfIfEntry 16 }
-+
-+    ospfIfStatus OBJECT-TYPE
-+        SYNTAX   RowStatus
-+        MAX-ACCESS   read-create
-+        STATUS   current
-+        DESCRIPTION
-+           "This variable displays the status of  the  en-
-+           try.  Setting it to 'invalid' has the effect of
-+           rendering it inoperative.  The internal  effect
-+           (row removal) is implementation dependent."
-+       ::= { ospfIfEntry 17 }
-+
-+
-+    ospfIfMulticastForwarding OBJECT-TYPE
-+        SYNTAX   INTEGER    {
-+                            blocked (1),        -- no multicast forwarding
-+                            multicast (2),        -- using multicast address
-+                            unicast (3)        -- to each OSPF neighbor
-+                  }
-+        MAX-ACCESS   read-create
-+        STATUS   current
-+        DESCRIPTION
-+           "The way multicasts should  forwarded  on  this
-+           interface;  not  forwarded,  forwarded  as data
-+           link multicasts, or forwarded as data link uni-
-+           casts.   Data link multicasting is not meaning-
-+           ful on point to point and NBMA interfaces,  and
-+           setting ospfMulticastForwarding to 0 effective-
-+           ly disables all multicast forwarding."
-+       DEFVAL { blocked }
-+       ::= { ospfIfEntry 18 }
-+
-+
-+    ospfIfDemand OBJECT-TYPE
-+        SYNTAX   TruthValue
-+        MAX-ACCESS   read-create
-+        STATUS   current
-+        DESCRIPTION
-+           "Indicates whether Demand OSPF procedures (hel-
-+           lo supression to FULL neighbors and setting the
-+           DoNotAge flag on proogated LSAs) should be per-
-+           formed on this interface."
-+       DEFVAL { false }
-+       ::= { ospfIfEntry 19 }
-+
-+
-+    ospfIfAuthType OBJECT-TYPE
-+        SYNTAX   INTEGER (0..255)
-+                    -- none (0),
-+                    -- simplePassword (1)
-+                    -- md5 (2)
-+                    -- reserved for specification by IANA (> 2)
-+        MAX-ACCESS   read-create
-+        STATUS   current
-+        DESCRIPTION
-+           "The authentication type specified for  an  in-
-+           terface.   Additional  authentication types may
-+           be assigned locally."
-+       REFERENCE
-+          "OSPF Version 2, Appendix E Authentication"
-+      DEFVAL { 0 }        -- no authentication, by default
-+      ::= { ospfIfEntry 20 }
-+
-+
-+--  OSPF Interface Metric Table
-+
-+--      The Metric Table describes the metrics to be advertised
-+--      for a specified interface at the various types of service.
-+--      As such, this table is an adjunct of the OSPF Interface
-+--      Table.
-+
-+-- Types of service, as defined by RFC 791, have the ability
-+-- to request low delay, high bandwidth, or reliable linkage.
-+
-+-- For the purposes of this specification, the measure of
-+-- bandwidth
-+
-+--      Metric = 10^8 / ifSpeed
-+
-+-- is the default value.  For multiple link interfaces, note
-+-- that ifSpeed is the sum of the individual link speeds.
-+-- This yields a number having the following typical values:
-+
-+--      Network Type/bit rate   Metric
-+
-+--      >= 100 MBPS                 1
-+--      Ethernet/802.3             10
-+--      E1                         48
-+--      T1 (ESF)                   65
-+--       64 KBPS                 1562
-+--       56 KBPS                 1785
-+--       19.2 KBPS               5208
-+--        9.6 KBPS              10416
-+
-+-- Routes that are not specified use the default (TOS 0) metric
-+
-+    ospfIfMetricTable OBJECT-TYPE
-+        SYNTAX   SEQUENCE OF OspfIfMetricEntry
-+        MAX-ACCESS   not-accessible
-+        STATUS   current
-+        DESCRIPTION
-+           "The TOS metrics for  a  non-virtual  interface
-+           identified by the interface index."
-+       REFERENCE
-+          "OSPF Version 2, Appendix C.3  Router  interface
-+          parameters"
-+      ::= { ospf 8 }
-+
-+    ospfIfMetricEntry OBJECT-TYPE
-+        SYNTAX   OspfIfMetricEntry
-+        MAX-ACCESS   not-accessible
-+        STATUS   current
-+        DESCRIPTION
-+           "A particular TOS metric for a non-virtual  in-
-+           terface identified by the interface index."
-+       REFERENCE
-+          "OSPF Version 2, Appendix C.3  Router  interface
-+          parameters"
-+      INDEX { ospfIfMetricIpAddress,
-+  ospfIfMetricAddressLessIf,
-+  ospfIfMetricTOS }
-+      ::= { ospfIfMetricTable 1 }
-+
-+OspfIfMetricEntry ::=
-+    SEQUENCE {
-+        ospfIfMetricIpAddress
-+            IpAddress,
-+        ospfIfMetricAddressLessIf
-+            Integer32,
-+        ospfIfMetricTOS
-+            TOSType,
-+        ospfIfMetricValue
-+            Metric,
-+        ospfIfMetricStatus
-+            RowStatus
-+              }
-+
-+    ospfIfMetricIpAddress OBJECT-TYPE
-+        SYNTAX   IpAddress
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The IP address of this OSPF interface.  On row
-+           creation,  this  can  be  derived  from the in-
-+           stance."
-+       ::= { ospfIfMetricEntry 1 }
-+
-+    ospfIfMetricAddressLessIf OBJECT-TYPE
-+        SYNTAX   Integer32
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "For the purpose of easing  the  instancing  of
-+           addressed   and  addressless  interfaces;  This
-+           variable takes the value 0 on  interfaces  with
-+           IP  Addresses, and the value of ifIndex for in-
-+           terfaces having no IP Address.   On  row  crea-
-+           tion, this can be derived from the instance."
-+       ::= { ospfIfMetricEntry 2 }
-+
-+
-+    ospfIfMetricTOS OBJECT-TYPE
-+        SYNTAX   TOSType
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The type of service metric  being  referenced.
-+           On  row  creation, this can be derived from the
-+           instance."
-+       ::= { ospfIfMetricEntry 3 }
-+
-+
-+    ospfIfMetricValue OBJECT-TYPE
-+        SYNTAX   Metric
-+        MAX-ACCESS   read-create
-+        STATUS   current
-+        DESCRIPTION
-+           "The metric of using this type  of  service  on
-+           this interface.  The default value of the TOS 0
-+           Metric is 10^8 / ifSpeed."
-+       ::= { ospfIfMetricEntry 4 }
-+
-+    ospfIfMetricStatus OBJECT-TYPE
-+        SYNTAX   RowStatus
-+        MAX-ACCESS   read-create
-+        STATUS   current
-+        DESCRIPTION
-+           "This variable displays the status of  the  en-
-+           try.  Setting it to 'invalid' has the effect of
-+           rendering it inoperative.  The internal  effect
-+           (row removal) is implementation dependent."
-+       ::= { ospfIfMetricEntry 5 }
-+
-+
-+--  OSPF Virtual Interface Table
-+
-+--      The Virtual Interface Table describes the virtual
-+--      links that the OSPF Process is configured to
-+--      carry on.
-+
-+    ospfVirtIfTable OBJECT-TYPE
-+        SYNTAX   SEQUENCE OF OspfVirtIfEntry
-+        MAX-ACCESS   not-accessible
-+        STATUS   current
-+        DESCRIPTION
-+           "Information about this router's virtual inter-
-+           faces."
-+       REFERENCE
-+          "OSPF Version  2,  Appendix  C.4   Virtual  link
-+          parameters"
-+      ::= { ospf 9 }
-+
-+
-+    ospfVirtIfEntry OBJECT-TYPE
-+        SYNTAX   OspfVirtIfEntry
-+        MAX-ACCESS   not-accessible
-+        STATUS   current
-+        DESCRIPTION
-+           "Information about a single Virtual Interface."
-+       INDEX { ospfVirtIfAreaId, ospfVirtIfNeighbor }
-+       ::= { ospfVirtIfTable 1 }
-+
-+OspfVirtIfEntry ::=
-+    SEQUENCE {
-+        ospfVirtIfAreaId
-+            AreaID,
-+        ospfVirtIfNeighbor
-+            RouterID,
-+        ospfVirtIfTransitDelay
-+            UpToMaxAge,
-+        ospfVirtIfRetransInterval
-+            UpToMaxAge,
-+        ospfVirtIfHelloInterval
-+            HelloRange,
-+        ospfVirtIfRtrDeadInterval
-+            PositiveInteger,
-+        ospfVirtIfState
-+            INTEGER,
-+        ospfVirtIfEvents
-+            Counter32,
-+        ospfVirtIfAuthType
-+            INTEGER,
-+        ospfVirtIfAuthKey
-+            OCTET STRING,
-+        ospfVirtIfStatus
-+            RowStatus
-+              }
-+
-+    ospfVirtIfAreaId OBJECT-TYPE
-+        SYNTAX   AreaID
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The  Transit  Area  that  the   Virtual   Link
-+           traverses.  By definition, this is not 0.0.0.0"
-+       ::= { ospfVirtIfEntry 1 }
-+
-+
-+    ospfVirtIfNeighbor OBJECT-TYPE
-+        SYNTAX   RouterID
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The Router ID of the Virtual Neighbor."
-+       ::= { ospfVirtIfEntry 2 }
-+
-+
-+    ospfVirtIfTransitDelay OBJECT-TYPE
-+        SYNTAX   UpToMaxAge
-+        MAX-ACCESS   read-create
-+        STATUS   current
-+        DESCRIPTION
-+           "The estimated number of seconds  it  takes  to
-+           transmit  a link- state update packet over this
-+           interface."
-+       DEFVAL { 1 }
-+       ::= { ospfVirtIfEntry 3 }
-+
-+
-+    ospfVirtIfRetransInterval OBJECT-TYPE
-+        SYNTAX   UpToMaxAge
-+        MAX-ACCESS   read-create
-+        STATUS   current
-+        DESCRIPTION
-+           "The number of seconds between  link-state  ad-
-+           vertisement  retransmissions,  for  adjacencies
-+           belonging to this  interface.   This  value  is
-+           also used when retransmitting database descrip-
-+           tion  and  link-state  request  packets.   This
-+           value  should  be well over the expected round-
-+           trip time."
-+       DEFVAL { 5 }
-+       ::= { ospfVirtIfEntry 4 }
-+
-+
-+    ospfVirtIfHelloInterval OBJECT-TYPE
-+        SYNTAX   HelloRange
-+        MAX-ACCESS   read-create
-+        STATUS   current
-+        DESCRIPTION
-+           "The length of time, in  seconds,  between  the
-+           Hello  packets that the router sends on the in-
-+           terface.  This value must be the same  for  the
-+           virtual neighbor."
-+       DEFVAL { 10 }
-+       ::= { ospfVirtIfEntry 5 }
-+
-+
-+    ospfVirtIfRtrDeadInterval OBJECT-TYPE
-+        SYNTAX   PositiveInteger
-+        MAX-ACCESS   read-create
-+        STATUS   current
-+        DESCRIPTION
-+           "The number of seconds that  a  router's  Hello
-+           packets  have  not been seen before it's neigh-
-+           bors declare the router down.  This  should  be
-+           some  multiple  of  the  Hello  interval.  This
-+           value must be the same for the  virtual  neigh-
-+           bor."
-+       DEFVAL { 60 }
-+       ::= { ospfVirtIfEntry 6 }
-+
-+
-+    ospfVirtIfState OBJECT-TYPE
-+        SYNTAX   INTEGER    {
-+                    down (1),            -- these use the same encoding
-+                    pointToPoint (4)     -- as the ospfIfTable
-+                  }
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "OSPF virtual interface states."
-+       DEFVAL   { down }
-+       ::= { ospfVirtIfEntry 7 }
-+
-+
-+    ospfVirtIfEvents OBJECT-TYPE
-+        SYNTAX   Counter32
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The number of state changes or error events on
-+           this Virtual Link"
-+       ::= { ospfVirtIfEntry 8 }
-+
-+
-+    ospfVirtIfAuthKey OBJECT-TYPE
-+        SYNTAX   OCTET STRING (SIZE(0..256))
-+        MAX-ACCESS   read-create
-+        STATUS   current
-+        DESCRIPTION
-+           "If Authentication Type is simplePassword,  the
-+           device  will left adjust and zero fill to 8 oc-
-+           tets.
-+
-+           Note that unauthenticated  interfaces  need  no
-+           authentication key, and simple password authen-
-+           tication cannot use a key of more  than  8  oc-
-+           tets.  Larger keys are useful only with authen-
-+           tication mechanisms not specified in this docu-
-+           ment.
-+
-+           When  read,  ospfVifAuthKey  always  returns  a
-+           string of length zero."
-+       REFERENCE
-+          "OSPF Version 2, Section 9  The  Interface  Data
-+          Structure"
-+      DEFVAL   { '0000000000000000'H }    -- 0.0.0.0.0.0.0.0
-+      ::= { ospfVirtIfEntry 9 }
-+
-+
-+    ospfVirtIfStatus OBJECT-TYPE
-+        SYNTAX   RowStatus
-+        MAX-ACCESS   read-create
-+        STATUS   current
-+        DESCRIPTION
-+           "This variable displays the status of  the  en-
-+           try.  Setting it to 'invalid' has the effect of
-+           rendering it inoperative.  The internal  effect
-+           (row removal) is implementation dependent."
-+       ::= { ospfVirtIfEntry 10 }
-+
-+
-+    ospfVirtIfAuthType OBJECT-TYPE
-+        SYNTAX   INTEGER (0..255)
-+                    -- none (0),
-+                    -- simplePassword (1)
-+                    -- md5 (2)
-+                    -- reserved for specification by IANA (> 2)
-+        MAX-ACCESS   read-create
-+        STATUS   current
-+        DESCRIPTION
-+           "The authentication type specified for a virtu-
-+           al  interface.  Additional authentication types
-+           may be assigned locally."
-+       REFERENCE
-+          "OSPF Version 2, Appendix E Authentication"
-+      DEFVAL { 0 }        -- no authentication, by default
-+      ::= { ospfVirtIfEntry 11 }
-+
-+
-+--  OSPF Neighbor Table
-+
-+--      The OSPF Neighbor Table describes all neighbors in
-+--      the locality of the subject router.
-+
-+    ospfNbrTable OBJECT-TYPE
-+        SYNTAX   SEQUENCE OF OspfNbrEntry
-+        MAX-ACCESS   not-accessible
-+        STATUS   current
-+        DESCRIPTION
-+           "A table of non-virtual neighbor information."
-+       REFERENCE
-+          "OSPF Version 2, Section 10  The  Neighbor  Data
-+          Structure"
-+      ::= { ospf 10 }
-+
-+
-+    ospfNbrEntry OBJECT-TYPE
-+        SYNTAX   OspfNbrEntry
-+        MAX-ACCESS   not-accessible
-+        STATUS   current
-+        DESCRIPTION
-+           "The information regarding a single neighbor."
-+       REFERENCE
-+          "OSPF Version 2, Section 10  The  Neighbor  Data
-+          Structure"
-+      INDEX { ospfNbrIpAddr, ospfNbrAddressLessIndex }
-+      ::= { ospfNbrTable 1 }
-+
-+OspfNbrEntry ::=
-+    SEQUENCE {
-+        ospfNbrIpAddr
-+            IpAddress,
-+        ospfNbrAddressLessIndex
-+            InterfaceIndex,
-+        ospfNbrRtrId
-+            RouterID,
-+        ospfNbrOptions
-+            Integer32,
-+        ospfNbrPriority
-+            DesignatedRouterPriority,
-+        ospfNbrState
-+            INTEGER,
-+        ospfNbrEvents
-+            Counter32,
-+        ospfNbrLsRetransQLen
-+            Gauge32,
-+        ospfNbmaNbrStatus
-+            RowStatus,
-+        ospfNbmaNbrPermanence
-+            INTEGER,
-+        ospfNbrHelloSuppressed
-+            TruthValue
-+              }
-+
-+    ospfNbrIpAddr OBJECT-TYPE
-+        SYNTAX   IpAddress
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The IP address this neighbor is using  in  its
-+           IP  Source  Address.  Note that, on addressless
-+           links, this will not be 0.0.0.0,  but  the  ad-
-+           dress of another of the neighbor's interfaces."
-+       ::= { ospfNbrEntry 1 }
-+
-+
-+    ospfNbrAddressLessIndex OBJECT-TYPE
-+        SYNTAX   InterfaceIndex
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "On an interface having an  IP  Address,  zero.
-+           On  addressless  interfaces,  the corresponding
-+           value of ifIndex in the Internet Standard  MIB.
-+           On  row  creation, this can be derived from the
-+           instance."
-+       ::= { ospfNbrEntry 2 }
-+
-+
-+    ospfNbrRtrId OBJECT-TYPE
-+        SYNTAX   RouterID
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "A 32-bit integer (represented as a type  IpAd-
-+           dress)  uniquely  identifying  the  neighboring
-+           router in the Autonomous System."
-+       DEFVAL   { '00000000'H }    -- 0.0.0.0
-+       ::= { ospfNbrEntry 3 }
-+
-+
-+    ospfNbrOptions OBJECT-TYPE
-+        SYNTAX   Integer32
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "A Bit Mask corresponding to the neighbor's op-
-+           tions field.
-+
-+           Bit 0, if set, indicates that the  system  will
-+           operate  on  Type of Service metrics other than
-+           TOS 0.  If zero, the neighbor will  ignore  all
-+           metrics except the TOS 0 metric.
-+
-+           Bit 1, if set, indicates  that  the  associated
-+           area  accepts and operates on external informa-
-+           tion; if zero, it is a stub area.
-+
-+           Bit 2, if set, indicates that the system is ca-
-+           pable  of routing IP Multicast datagrams; i.e.,
-+           that it implements the Multicast Extensions  to
-+           OSPF.
-+
-+           Bit 3, if set, indicates  that  the  associated
-+           area  is  an  NSSA.  These areas are capable of
-+           carrying type 7 external advertisements,  which
-+           are  translated into type 5 external advertise-
-+           ments at NSSA borders."
-+       REFERENCE
-+          "OSPF Version 2, Section 12.1.2 Options"
-+      DEFVAL { 0 }
-+      ::= { ospfNbrEntry 4 }
-+
-+
-+    ospfNbrPriority OBJECT-TYPE
-+        SYNTAX   DesignatedRouterPriority
-+        MAX-ACCESS   read-create
-+        STATUS   current
-+        DESCRIPTION
-+           "The priority of this neighbor in the designat-
-+           ed router election algorithm.  The value 0 sig-
-+           nifies that the neighbor is not eligible to be-
-+           come  the  designated router on this particular
-+           network."
-+       DEFVAL { 1 }
-+       ::= { ospfNbrEntry 5 }
-+
-+
-+    ospfNbrState OBJECT-TYPE
-+        SYNTAX   INTEGER    {
-+                    down (1),
-+                    attempt (2),
-+                    init (3),
-+                    twoWay (4),
-+                    exchangeStart (5),
-+                    exchange (6),
-+                    loading (7),
-+                    full (8)
-+                  }
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The State of the relationship with this Neigh-
-+           bor."
-+       REFERENCE
-+          "OSPF Version 2, Section 10.1 Neighbor States"
-+      DEFVAL   { down }
-+      ::= { ospfNbrEntry 6 }
-+
-+
-+    ospfNbrEvents OBJECT-TYPE
-+        SYNTAX   Counter32
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The number of times this neighbor relationship
-+           has changed state, or an error has occurred."
-+       ::= { ospfNbrEntry 7 }
-+
-+
-+    ospfNbrLsRetransQLen OBJECT-TYPE
-+        SYNTAX   Gauge32
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The  current  length  of  the   retransmission
-+           queue."
-+       ::= { ospfNbrEntry 8 }
-+
-+
-+    ospfNbmaNbrStatus OBJECT-TYPE
-+        SYNTAX   RowStatus
-+        MAX-ACCESS   read-create
-+        STATUS   current
-+        DESCRIPTION
-+           "This variable displays the status of  the  en-
-+           try.  Setting it to 'invalid' has the effect of
-+           rendering it inoperative.  The internal  effect
-+           (row removal) is implementation dependent."
-+       ::= { ospfNbrEntry 9 }
-+
-+
-+    ospfNbmaNbrPermanence OBJECT-TYPE
-+        SYNTAX   INTEGER    {
-+                    dynamic (1),        -- learned through protocol
-+                    permanent (2)       -- configured address
-+                  }
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "This variable displays the status of  the  en-
-+           try.   'dynamic'  and  'permanent' refer to how
-+           the neighbor became known."
-+       DEFVAL { permanent }
-+       ::= { ospfNbrEntry 10 }
-+
-+
-+    ospfNbrHelloSuppressed OBJECT-TYPE
-+        SYNTAX   TruthValue
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "Indicates whether Hellos are being  suppressed
-+           to the neighbor"
-+       ::= { ospfNbrEntry 11 }
-+
-+
-+--  OSPF Virtual Neighbor Table
-+
-+--      This table describes all virtual neighbors.
-+--      Since Virtual Links are configured in the
-+--      virtual interface table, this table is read-only.
-+
-+    ospfVirtNbrTable OBJECT-TYPE
-+        SYNTAX   SEQUENCE OF OspfVirtNbrEntry
-+        MAX-ACCESS   not-accessible
-+        STATUS   current
-+        DESCRIPTION
-+           "A table of virtual neighbor information."
-+       REFERENCE
-+          "OSPF Version 2, Section 15  Virtual Links"
-+      ::= { ospf 11 }
-+
-+
-+    ospfVirtNbrEntry OBJECT-TYPE
-+        SYNTAX   OspfVirtNbrEntry
-+        MAX-ACCESS   not-accessible
-+        STATUS   current
-+        DESCRIPTION
-+           "Virtual neighbor information."
-+       INDEX { ospfVirtNbrArea, ospfVirtNbrRtrId }
-+       ::= { ospfVirtNbrTable 1 }
-+
-+OspfVirtNbrEntry ::=
-+    SEQUENCE {
-+        ospfVirtNbrArea
-+            AreaID,
-+        ospfVirtNbrRtrId
-+            RouterID,
-+        ospfVirtNbrIpAddr
-+            IpAddress,
-+        ospfVirtNbrOptions
-+            Integer32,
-+        ospfVirtNbrState
-+            INTEGER,
-+        ospfVirtNbrEvents
-+            Counter32,
-+        ospfVirtNbrLsRetransQLen
-+            Gauge32,
-+        ospfVirtNbrHelloSuppressed
-+                TruthValue
-+              }
-+
-+    ospfVirtNbrArea OBJECT-TYPE
-+        SYNTAX   AreaID
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The Transit Area Identifier."
-+       ::= { ospfVirtNbrEntry 1 }
-+
-+
-+    ospfVirtNbrRtrId OBJECT-TYPE
-+        SYNTAX   RouterID
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "A  32-bit  integer  uniquely  identifying  the
-+           neighboring router in the Autonomous System."
-+       ::= { ospfVirtNbrEntry 2 }
-+
-+
-+    ospfVirtNbrIpAddr OBJECT-TYPE
-+        SYNTAX   IpAddress
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The IP address this Virtual  Neighbor  is  us-
-+           ing."
-+       ::= { ospfVirtNbrEntry 3 }
-+
-+
-+    ospfVirtNbrOptions OBJECT-TYPE
-+        SYNTAX   Integer32
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "A Bit Mask corresponding to the neighbor's op-
-+           tions field.
-+
-+           Bit 1, if set, indicates that the  system  will
-+           operate  on  Type of Service metrics other than
-+           TOS 0.  If zero, the neighbor will  ignore  all
-+           metrics except the TOS 0 metric.
-+
-+           Bit 2, if set, indicates  that  the  system  is
-+           Network  Multicast  capable; ie, that it imple-
-+           ments OSPF Multicast Routing."
-+       ::= { ospfVirtNbrEntry 4 }
-+    ospfVirtNbrState OBJECT-TYPE
-+        SYNTAX   INTEGER    {
-+                    down (1),
-+                    attempt (2),
-+                    init (3),
-+                    twoWay (4),
-+                    exchangeStart (5),
-+                    exchange (6),
-+                    loading (7),
-+                    full (8)
-+                  }
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The state of the  Virtual  Neighbor  Relation-
-+           ship."
-+       ::= { ospfVirtNbrEntry 5 }
-+
-+
-+    ospfVirtNbrEvents OBJECT-TYPE
-+        SYNTAX   Counter32
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The number of  times  this  virtual  link  has
-+           changed its state, or an error has occurred."
-+       ::= { ospfVirtNbrEntry 6 }
-+
-+
-+    ospfVirtNbrLsRetransQLen OBJECT-TYPE
-+        SYNTAX   Gauge32
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The  current  length  of  the   retransmission
-+           queue."
-+       ::= { ospfVirtNbrEntry 7 }
-+
-+
-+    ospfVirtNbrHelloSuppressed OBJECT-TYPE
-+        SYNTAX   TruthValue
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "Indicates whether Hellos are being  suppressed
-+           to the neighbor"
-+       ::= { ospfVirtNbrEntry 8 }
-+
-+--  OSPF Link State Database, External
-+
-+--      The Link State Database contains the Link State
-+--      Advertisements from throughout the areas that the
-+--      device is attached to.
-+
-+--             This table is identical to the OSPF LSDB Table in
-+--      format, but contains only External Link State
-+--             Advertisements.  The purpose is to allow external
-+--      LSAs to be displayed once for the router rather
-+--      than once in each non-stub area.
-+
-+    ospfExtLsdbTable OBJECT-TYPE
-+        SYNTAX   SEQUENCE OF OspfExtLsdbEntry
-+        MAX-ACCESS   not-accessible
-+        STATUS   current
-+        DESCRIPTION
-+           "The OSPF Process's Links State Database."
-+       REFERENCE
-+          "OSPF Version 2, Section 12  Link  State  Adver-
-+          tisements"
-+      ::= { ospf 12 }
-+
-+
-+    ospfExtLsdbEntry OBJECT-TYPE
-+        SYNTAX   OspfExtLsdbEntry
-+        MAX-ACCESS   not-accessible
-+        STATUS   current
-+        DESCRIPTION
-+           "A single Link State Advertisement."
-+       INDEX { ospfExtLsdbType, ospfExtLsdbLsid, ospfExtLsdbRouterId }
-+       ::= { ospfExtLsdbTable 1 }
-+
-+OspfExtLsdbEntry ::=
-+    SEQUENCE {
-+        ospfExtLsdbType
-+            INTEGER,
-+        ospfExtLsdbLsid
-+            IpAddress,
-+        ospfExtLsdbRouterId
-+            RouterID,
-+        ospfExtLsdbSequence
-+            Integer32,
-+        ospfExtLsdbAge
-+            Integer32,
-+        ospfExtLsdbChecksum
-+            Integer32,
-+        ospfExtLsdbAdvertisement
-+            OCTET STRING
-+              }
-+
-+    ospfExtLsdbType OBJECT-TYPE
-+        SYNTAX   INTEGER    {
-+                    asExternalLink (5)
-+                  }
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The type  of  the  link  state  advertisement.
-+           Each  link state type has a separate advertise-
-+           ment format."
-+       REFERENCE
-+          "OSPF Version 2, Appendix A.4.1 The  Link  State
-+          Advertisement header"
-+      ::= { ospfExtLsdbEntry 1 }
-+
-+
-+    ospfExtLsdbLsid OBJECT-TYPE
-+        SYNTAX   IpAddress
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The Link State ID is an LS Type Specific field
-+           containing either a Router ID or an IP Address;
-+           it identifies the piece of the  routing  domain
-+           that is being described by the advertisement."
-+       REFERENCE
-+          "OSPF Version 2, Section 12.1.4 Link State ID"
-+      ::= { ospfExtLsdbEntry 2 }
-+
-+
-+    ospfExtLsdbRouterId OBJECT-TYPE
-+        SYNTAX   RouterID
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The 32 bit number that uniquely identifies the
-+           originating router in the Autonomous System."
-+       REFERENCE
-+          "OSPF Version 2, Appendix C.1 Global parameters"
-+      ::= { ospfExtLsdbEntry 3 }
-+
-+--  Note that the OSPF Sequence Number is a 32 bit signed
-+--  integer.  It starts with the value '80000001'h,
-+--  or -'7FFFFFFF'h, and increments until '7FFFFFFF'h
-+--  Thus, a typical sequence number will be very negative.
-+    ospfExtLsdbSequence OBJECT-TYPE
-+        SYNTAX   Integer32
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The sequence number field is a  signed  32-bit
-+           integer.   It  is used to detect old and dupli-
-+           cate link state advertisements.  The  space  of
-+           sequence  numbers  is  linearly  ordered.   The
-+           larger the sequence number the more recent  the
-+           advertisement."
-+       REFERENCE
-+          "OSPF Version  2,  Section  12.1.6  LS  sequence
-+          number"
-+      ::= { ospfExtLsdbEntry 4 }
-+
-+
-+    ospfExtLsdbAge OBJECT-TYPE
-+        SYNTAX   Integer32    -- Should be 0..MaxAge
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "This field is the age of the link state adver-
-+           tisement in seconds."
-+       REFERENCE
-+          "OSPF Version 2, Section 12.1.1 LS age"
-+      ::= { ospfExtLsdbEntry 5 }
-+
-+
-+    ospfExtLsdbChecksum OBJECT-TYPE
-+        SYNTAX   Integer32
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "This field is the  checksum  of  the  complete
-+           contents  of  the  advertisement, excepting the
-+           age field.  The age field is excepted  so  that
-+           an   advertisement's  age  can  be  incremented
-+           without updating the  checksum.   The  checksum
-+           used  is  the same that is used for ISO connec-
-+           tionless datagrams; it is commonly referred  to
-+           as the Fletcher checksum."
-+       REFERENCE
-+          "OSPF Version 2, Section 12.1.7 LS checksum"
-+      ::= { ospfExtLsdbEntry 6 }
-+
-+
-+    ospfExtLsdbAdvertisement OBJECT-TYPE
-+        SYNTAX   OCTET STRING (SIZE(36))
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The entire Link State Advertisement, including
-+           its header."
-+       REFERENCE
-+          "OSPF Version 2, Section 12  Link  State  Adver-
-+          tisements"
-+      ::= { ospfExtLsdbEntry 7 }
-+
-+
-+--  OSPF Use of the CIDR Route Table
-+
-+ospfRouteGroup           OBJECT IDENTIFIER ::= { ospf 13 }
-+
-+-- The IP Forwarding Table defines a number of objects for use by
-+-- the routing protocol to externalize its information.  Most of
-+-- the variables (ipForwardDest, ipForwardMask, ipForwardPolicy,
-+-- ipForwardNextHop, ipForwardIfIndex, ipForwardType,
-+-- ipForwardProto, ipForwardAge, and ipForwardNextHopAS) are
-+-- defined there.
-+
-+-- Those that leave some discretion are defined here.
-+
-+-- ipCidrRouteProto is, of course, ospf (13).
-+
-+-- ipCidrRouteAge is the time since the route was first calculated,
-+-- as opposed to the time since the last SPF run.
-+
-+-- ipCidrRouteInfo is an OBJECT IDENTIFIER for use by the routing
-+-- protocol.  The following values shall be found there depending
-+-- on the way the route was calculated.
-+
-+ospfIntraArea      OBJECT IDENTIFIER ::= { ospfRouteGroup 1 }
-+ospfInterArea      OBJECT IDENTIFIER ::= { ospfRouteGroup 2 }
-+ospfExternalType1  OBJECT IDENTIFIER ::= { ospfRouteGroup 3 }
-+ospfExternalType2  OBJECT IDENTIFIER ::= { ospfRouteGroup 4 }
-+
-+-- ipCidrRouteMetric1 is, by definition, the primary routing
-+-- metric.  Therefore, it should be the metric that route
-+-- selection is based on.  For intra-area and inter-area routes,
-+-- it is an OSPF metric.  For External Type 1 (comparable value)
-+-- routes, it is an OSPF metric plus the External Metric.  For
-+-- external Type 2 (non-comparable value) routes, it is the
-+-- external metric.
-+
-+-- ipCidrRouteMetric2 is, by definition, a secondary routing
-+-- metric.  Therefore, it should be the metric that breaks a tie
-+-- among routes having equal metric1 values and the same
-+-- calculation rule.  For intra-area, inter-area routes, and
-+-- External Type 1 (comparable value) routes, it is unused.  For
-+-- external Type 2 (non-comparable value) routes, it is the metric
-+-- to the AS border router.
-+
-+-- ipCidrRouteMetric3, ipCidrRouteMetric4, and ipCidrRouteMetric5 are
-+-- unused.
-+
-+--
-+--      The OSPF Area Aggregate Table
-+--
-+--      This table replaces the OSPF Area Summary Table, being an
-+--      extension of that for CIDR routers.
-+
-+    ospfAreaAggregateTable OBJECT-TYPE
-+        SYNTAX   SEQUENCE OF OspfAreaAggregateEntry
-+        MAX-ACCESS   not-accessible
-+        STATUS   current
-+        DESCRIPTION
-+           "A range of IP addresses  specified  by  an  IP
-+           address/IP  network  mask  pair.   For example,
-+           class B address range of X.X.X.X with a network
-+           mask  of  255.255.0.0 includes all IP addresses
-+           from X.X.0.0  to  X.X.255.255.   Note  that  if
-+           ranges  are configured such that one range sub-
-+           sumes  another  range  (e.g.,   10.0.0.0   mask
-+           255.0.0.0  and  10.1.0.0 mask 255.255.0.0), the
-+           most specific match is the preferred one."
-+       REFERENCE
-+          "OSPF Version 2, Appendix C.2  Area parameters"
-+      ::= { ospf 14 }
-+
-+
-+    ospfAreaAggregateEntry OBJECT-TYPE
-+        SYNTAX   OspfAreaAggregateEntry
-+        MAX-ACCESS   not-accessible
-+        STATUS   current
-+        DESCRIPTION
-+           "A range of IP addresses  specified  by  an  IP
-+           address/IP  network  mask  pair.   For example,
-+           class B address range of X.X.X.X with a network
-+           mask  of  255.255.0.0 includes all IP addresses
-+           from X.X.0.0  to  X.X.255.255.   Note  that  if
-+           ranges are range configured such that one range
-+           subsumes another  range  (e.g.,  10.0.0.0  mask
-+           255.0.0.0  and  10.1.0.0 mask 255.255.0.0), the
-+           most specific match is the preferred one."
-+       REFERENCE
-+          "OSPF Version 2, Appendix C.2  Area parameters"
-+      INDEX { ospfAreaAggregateAreaID, ospfAreaAggregateLsdbType,
-+              ospfAreaAggregateNet, ospfAreaAggregateMask }
-+      ::= { ospfAreaAggregateTable 1 }
-+
-+
-+OspfAreaAggregateEntry ::=
-+    SEQUENCE {
-+        ospfAreaAggregateAreaID
-+            AreaID,
-+        ospfAreaAggregateLsdbType
-+            INTEGER,
-+        ospfAreaAggregateNet
-+            IpAddress,
-+        ospfAreaAggregateMask
-+            IpAddress,
-+        ospfAreaAggregateStatus
-+            RowStatus,
-+        ospfAreaAggregateEffect
-+            INTEGER
-+              }
-+
-+    ospfAreaAggregateAreaID OBJECT-TYPE
-+        SYNTAX   AreaID
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The Area the Address Aggregate is to be  found
-+           within."
-+       REFERENCE
-+          "OSPF Version 2, Appendix C.2 Area parameters"
-+      ::= { ospfAreaAggregateEntry 1 }
-+
-+
-+    ospfAreaAggregateLsdbType OBJECT-TYPE
-+        SYNTAX   INTEGER    {
-+                    summaryLink (3),
-+                    nssaExternalLink (7)
-+                  }
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The type of the Address Aggregate.  This field
-+           specifies  the  Lsdb type that this Address Ag-
-+           gregate applies to."
-+       REFERENCE
-+          "OSPF Version 2, Appendix A.4.1 The  Link  State
-+          Advertisement header"
-+      ::= { ospfAreaAggregateEntry 2 }
-+
-+
-+    ospfAreaAggregateNet OBJECT-TYPE
-+        SYNTAX   IpAddress
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The IP Address of the Net or Subnet  indicated
-+           by the range."
-+       REFERENCE
-+          "OSPF Version 2, Appendix C.2 Area parameters"
-+      ::= { ospfAreaAggregateEntry 3 }
-+
-+
-+    ospfAreaAggregateMask OBJECT-TYPE
-+        SYNTAX   IpAddress
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The Subnet Mask that pertains to  the  Net  or
-+           Subnet."
-+       REFERENCE
-+          "OSPF Version 2, Appendix C.2 Area parameters"
-+      ::= { ospfAreaAggregateEntry 4 }
-+
-+
-+    ospfAreaAggregateStatus OBJECT-TYPE
-+        SYNTAX   RowStatus
-+        MAX-ACCESS   read-create
-+        STATUS   current
-+        DESCRIPTION
-+           "This variable displays the status of  the  en-
-+           try.  Setting it to 'invalid' has the effect of
-+           rendering it inoperative.  The internal  effect
-+           (row removal) is implementation dependent."
-+       ::= { ospfAreaAggregateEntry 5 }
-+
-+
-+    ospfAreaAggregateEffect OBJECT-TYPE
-+        SYNTAX   INTEGER    {
-+                    advertiseMatching (1),
-+                    doNotAdvertiseMatching (2)
-+                  }
-+        MAX-ACCESS   read-create
-+        STATUS   current
-+        DESCRIPTION
-+           "Subnets subsumed by ranges either trigger  the
-+           advertisement  of  the indicated aggregate (ad-
-+           vertiseMatching), or result in the subnet's not
-+           being advertised at all outside the area."
-+       DEFVAL   { advertiseMatching }
-+       ::= { ospfAreaAggregateEntry 6 }
-+
-+
-+-- conformance information
-+
-+ospfConformance OBJECT IDENTIFIER ::= { ospf 15 }
-+
-+ospfGroups      OBJECT IDENTIFIER ::= { ospfConformance 1 }
-+ospfCompliances OBJECT IDENTIFIER ::= { ospfConformance 2 }
-+
-+-- compliance statements
-+
-+    ospfCompliance MODULE-COMPLIANCE
-+        STATUS  current
-+        DESCRIPTION
-+           "The compliance statement "
-+       MODULE  -- this module
-+       MANDATORY-GROUPS {
-+                    ospfBasicGroup,
-+                    ospfAreaGroup,
-+                    ospfStubAreaGroup,
-+                    ospfIfGroup,
-+                    ospfIfMetricGroup,
-+                    ospfVirtIfGroup,
-+                    ospfNbrGroup,
-+                    ospfVirtNbrGroup,
-+                    ospfAreaAggregateGroup
-+           }
-+       ::= { ospfCompliances 1 }
-+
-+
-+-- units of conformance
-+
-+    ospfBasicGroup    OBJECT-GROUP
-+        OBJECTS {
-+                    ospfRouterId,
-+                    ospfAdminStat,
-+                    ospfVersionNumber,
-+                    ospfAreaBdrRtrStatus,
-+                    ospfASBdrRtrStatus,
-+                    ospfExternLsaCount,
-+                    ospfExternLsaCksumSum,
-+                    ospfTOSSupport,
-+                    ospfOriginateNewLsas,
-+                    ospfRxNewLsas,
-+                    ospfExtLsdbLimit,
-+                    ospfMulticastExtensions,
-+                    ospfExitOverflowInterval,
-+                    ospfDemandExtensions
-+        }
-+        STATUS  current
-+        DESCRIPTION
-+           "These objects are required for OSPF systems."
-+       ::= { ospfGroups 1 }
-+
-+
-+    ospfAreaGroup    OBJECT-GROUP
-+        OBJECTS {
-+                    ospfAreaId,
-+                    ospfImportAsExtern,
-+                    ospfSpfRuns,
-+                    ospfAreaBdrRtrCount,
-+                    ospfAsBdrRtrCount,
-+                    ospfAreaLsaCount,
-+                    ospfAreaLsaCksumSum,
-+                    ospfAreaSummary,
-+                    ospfAreaStatus
-+        }
-+        STATUS  current
-+        DESCRIPTION
-+           "These objects are required  for  OSPF  systems
-+           supporting areas."
-+       ::= { ospfGroups 2 }
-+
-+
-+    ospfStubAreaGroup    OBJECT-GROUP
-+        OBJECTS {
-+                    ospfStubAreaId,
-+                    ospfStubTOS,
-+                    ospfStubMetric,
-+                    ospfStubStatus,
-+                    ospfStubMetricType
-+        }
-+        STATUS  current
-+        DESCRIPTION
-+           "These objects are required  for  OSPF  systems
-+           supporting stub areas."
-+       ::= { ospfGroups 3 }
-+
-+
-+    ospfLsdbGroup    OBJECT-GROUP
-+        OBJECTS {
-+                    ospfLsdbAreaId,
-+                    ospfLsdbType,
-+                    ospfLsdbLsid,
-+                    ospfLsdbRouterId,
-+                    ospfLsdbSequence,
-+                    ospfLsdbAge,
-+                    ospfLsdbChecksum,
-+                    ospfLsdbAdvertisement
-+        }
-+        STATUS  current
-+        DESCRIPTION
-+           "These objects are required  for  OSPF  systems
-+           that display their link state database."
-+       ::= { ospfGroups 4 }
-+
-+
-+    ospfAreaRangeGroup    OBJECT-GROUP
-+        OBJECTS {
-+                    ospfAreaRangeAreaId,
-+                    ospfAreaRangeNet,
-+                    ospfAreaRangeMask,
-+                    ospfAreaRangeStatus,
-+                    ospfAreaRangeEffect
-+        }
-+        STATUS  obsolete
-+        DESCRIPTION
-+           "These objects are required for  non-CIDR  OSPF
-+           systems that support multiple areas."
-+       ::= { ospfGroups 5 }
-+
-+
-+    ospfHostGroup    OBJECT-GROUP
-+        OBJECTS {
-+                    ospfHostIpAddress,
-+                    ospfHostTOS,
-+                    ospfHostMetric,
-+                    ospfHostStatus,
-+                    ospfHostAreaID
-+        }
-+        STATUS  current
-+        DESCRIPTION
-+           "These objects are required  for  OSPF  systems
-+           that support attached hosts."
-+       ::= { ospfGroups 6 }
-+
-+
-+    ospfIfGroup    OBJECT-GROUP
-+        OBJECTS {
-+                    ospfIfIpAddress,
-+                    ospfAddressLessIf,
-+                    ospfIfAreaId,
-+                    ospfIfType,
-+                    ospfIfAdminStat,
-+                    ospfIfRtrPriority,
-+                    ospfIfTransitDelay,
-+                    ospfIfRetransInterval,
-+                    ospfIfHelloInterval,
-+                    ospfIfRtrDeadInterval,
-+                    ospfIfPollInterval,
-+                    ospfIfState,
-+                    ospfIfDesignatedRouter,
-+                    ospfIfBackupDesignatedRouter,
-+                    ospfIfEvents,
-+                    ospfIfAuthType,
-+                    ospfIfAuthKey,
-+                    ospfIfStatus,
-+                    ospfIfMulticastForwarding,
-+                    ospfIfDemand
-+        }
-+        STATUS  current
-+        DESCRIPTION
-+           "These objects are required for OSPF systems."
-+       ::= { ospfGroups 7 }
-+
-+
-+    ospfIfMetricGroup    OBJECT-GROUP
-+        OBJECTS {
-+                    ospfIfMetricIpAddress,
-+                    ospfIfMetricAddressLessIf,
-+                    ospfIfMetricTOS,
-+                    ospfIfMetricValue,
-+                    ospfIfMetricStatus
-+        }
-+        STATUS  current
-+        DESCRIPTION
-+           "These objects are required for OSPF systems."
-+       ::= { ospfGroups 8 }
-+
-+
-+    ospfVirtIfGroup    OBJECT-GROUP
-+        OBJECTS {
-+                    ospfVirtIfAreaId,
-+                    ospfVirtIfNeighbor,
-+                    ospfVirtIfTransitDelay,
-+                    ospfVirtIfRetransInterval,
-+                    ospfVirtIfHelloInterval,
-+                    ospfVirtIfRtrDeadInterval,
-+                    ospfVirtIfState,
-+                    ospfVirtIfEvents,
-+                    ospfVirtIfAuthType,
-+                    ospfVirtIfAuthKey,
-+                    ospfVirtIfStatus
-+        }
-+        STATUS  current
-+        DESCRIPTION
-+           "These objects are required for OSPF systems."
-+       ::= { ospfGroups 9 }
-+
-+
-+    ospfNbrGroup    OBJECT-GROUP
-+        OBJECTS {
-+                    ospfNbrIpAddr,
-+                    ospfNbrAddressLessIndex,
-+                    ospfNbrRtrId,
-+                    ospfNbrOptions,
-+                    ospfNbrPriority,
-+                    ospfNbrState,
-+                    ospfNbrEvents,
-+                    ospfNbrLsRetransQLen,
-+                    ospfNbmaNbrStatus,
-+                    ospfNbmaNbrPermanence,
-+                    ospfNbrHelloSuppressed
-+        }
-+        STATUS  current
-+        DESCRIPTION
-+           "These objects are required for OSPF systems."
-+       ::= { ospfGroups 10 }
-+
-+
-+    ospfVirtNbrGroup    OBJECT-GROUP
-+        OBJECTS {
-+                    ospfVirtNbrArea,
-+                    ospfVirtNbrRtrId,
-+                    ospfVirtNbrIpAddr,
-+                    ospfVirtNbrOptions,
-+                    ospfVirtNbrState,
-+                    ospfVirtNbrEvents,
-+                    ospfVirtNbrLsRetransQLen,
-+                    ospfVirtNbrHelloSuppressed
-+        }
-+        STATUS  current
-+        DESCRIPTION
-+           "These objects are required for OSPF systems."
-+       ::= { ospfGroups 11 }
-+
-+
-+    ospfExtLsdbGroup    OBJECT-GROUP
-+        OBJECTS {
-+                    ospfExtLsdbType,
-+                    ospfExtLsdbLsid,
-+                    ospfExtLsdbRouterId,
-+                    ospfExtLsdbSequence,
-+                    ospfExtLsdbAge,
-+                    ospfExtLsdbChecksum,
-+                    ospfExtLsdbAdvertisement
-+        }
-+        STATUS  current
-+        DESCRIPTION
-+           "These objects are required  for  OSPF  systems
-+           that display their link state database."
-+       ::= { ospfGroups 12 }
-+
-+
-+    ospfAreaAggregateGroup    OBJECT-GROUP
-+        OBJECTS {
-+                    ospfAreaAggregateAreaID,
-+                    ospfAreaAggregateLsdbType,
-+                    ospfAreaAggregateNet,
-+                    ospfAreaAggregateMask,
-+                    ospfAreaAggregateStatus,
-+                    ospfAreaAggregateEffect
-+        }
-+        STATUS  current
-+        DESCRIPTION
-+           "These objects are required for OSPF systems."
-+       ::= { ospfGroups 13 }
-+
-+END
---- /dev/null
-+++ b/mibs/OSPF-TRAP-MIB.txt
-@@ -0,0 +1,443 @@
-+OSPF-TRAP-MIB DEFINITIONS ::= BEGIN
-+
-+    IMPORTS
-+            MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, IpAddress
-+                FROM SNMPv2-SMI
-+            MODULE-COMPLIANCE, OBJECT-GROUP
-+                FROM SNMPv2-CONF
-+            ospfRouterId, ospfIfIpAddress, ospfAddressLessIf, ospfIfState,
-+            ospfVirtIfAreaId, ospfVirtIfNeighbor, ospfVirtIfState,
-+            ospfNbrIpAddr, ospfNbrAddressLessIndex, ospfNbrRtrId,
-+            ospfNbrState, ospfVirtNbrArea, ospfVirtNbrRtrId, ospfVirtNbrState,
-+            ospfLsdbType, ospfLsdbLsid, ospfLsdbRouterId, ospfLsdbAreaId,
-+            ospfExtLsdbLimit, ospf
-+                FROM OSPF-MIB;
-+
-+    ospfTrap MODULE-IDENTITY
-+           LAST-UPDATED "9501201225Z" -- Fri Jan 20 12:25:50 PST 1995
-+           ORGANIZATION "IETF OSPF Working Group"
-+           CONTACT-INFO
-+           "                      Fred Baker
-+           Postal:                Cisco Systems
-+                                  519 Lado Drive
-+                                  Santa Barbara, California 93111
-+           Tel:                   +1 805 681 0115
-+           E-Mail:                fred@cisco.com
-+
-+                                  Rob Coltun
-+           Postal:                RainbowBridge Communications
-+           Tel:                   (301) 340-9416
-+           E-Mail:                rcoltun@rainbow-bridge.com"
-+       DESCRIPTION
-+          "The MIB module to describe traps for  the  OSPF
-+          Version 2 Protocol."
-+      ::= { ospf 16 }
-+
-+-- Trap Support Objects
-+
-+--         The following are support objects for the OSPF traps.
-+
-+ospfTrapControl OBJECT IDENTIFIER ::= { ospfTrap 1 }
-+ospfTraps OBJECT IDENTIFIER ::= { ospfTrap 2 }
-+
-+    ospfSetTrap OBJECT-TYPE
-+        SYNTAX   OCTET STRING (SIZE(4))
-+        MAX-ACCESS   read-write
-+        STATUS   current
-+        DESCRIPTION
-+           "A four-octet string serving as a bit  map  for
-+           the trap events defined by the OSPF traps. This
-+           object is used to enable and  disable  specific
-+           OSPF   traps   where  a  1  in  the  bit  field
-+           represents enabled.  The right-most bit  (least
-+           significant) represents trap 0."
-+       ::= { ospfTrapControl 1 }
-+
-+
-+    ospfConfigErrorType OBJECT-TYPE
-+        SYNTAX   INTEGER   {
-+                    badVersion (1),
-+                    areaMismatch (2),
-+                    unknownNbmaNbr (3), -- Router is Dr eligible
-+                    unknownVirtualNbr (4),
-+                    authTypeMismatch(5),
-+                    authFailure (6),
-+                    netMaskMismatch (7),
-+                    helloIntervalMismatch (8),
-+                    deadIntervalMismatch (9),
-+                    optionMismatch (10) }
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "Potential types  of  configuration  conflicts.
-+           Used  by the ospfConfigError and ospfConfigVir-
-+           tError traps."
-+   ::= { ospfTrapControl 2 }
-+
-+
-+    ospfPacketType OBJECT-TYPE
-+        SYNTAX   INTEGER   {
-+                    hello (1),
-+                    dbDescript (2),
-+                    lsReq (3),
-+                    lsUpdate (4),
-+                    lsAck (5) }
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "OSPF packet types."
-+   ::= { ospfTrapControl 3 }
-+
-+
-+    ospfPacketSrc OBJECT-TYPE
-+        SYNTAX   IpAddress
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The IP address of an inbound packet that  can-
-+           not be identified by a neighbor instance."
-+       ::= { ospfTrapControl 4 }
-+
-+
-+-- Traps
-+
-+
-+    ospfIfStateChange NOTIFICATION-TYPE
-+        OBJECTS {
-+                    ospfRouterId, -- The originator of the trap
-+                    ospfIfIpAddress,
-+                    ospfAddressLessIf,
-+                    ospfIfState   -- The new state
-+                  }
-+        STATUS             current
-+        DESCRIPTION
-+           "An ospfIfStateChange trap signifies that there
-+           has been a change in the state of a non-virtual
-+           OSPF interface. This trap should  be  generated
-+           when  the interface state regresses (e.g., goes
-+           from Dr to Down) or progresses  to  a  terminal
-+           state  (i.e.,  Point-to-Point, DR Other, Dr, or
-+           Backup)."
-+   ::= { ospfTraps 16 }
-+
-+
-+    ospfVirtIfStateChange NOTIFICATION-TYPE
-+        OBJECTS {
-+                    ospfRouterId, -- The originator of the trap
-+                    ospfVirtIfAreaId,
-+                    ospfVirtIfNeighbor,
-+                    ospfVirtIfState  -- The new state
-+                  }
-+        STATUS             current
-+        DESCRIPTION
-+           "An ospfIfStateChange trap signifies that there
-+           has  been a change in the state of an OSPF vir-
-+           tual interface.
-+           This trap should be generated when  the  inter-
-+           face  state  regresses  (e.g., goes from Point-
-+           to-Point to Down) or progresses to  a  terminal
-+           state (i.e., Point-to-Point)."
-+   ::= { ospfTraps 1 }
-+
-+
-+    ospfNbrStateChange NOTIFICATION-TYPE
-+        OBJECTS {
-+                    ospfRouterId, -- The originator of the trap
-+                    ospfNbrIpAddr,
-+                    ospfNbrAddressLessIndex,
-+                    ospfNbrRtrId,
-+                    ospfNbrState  -- The new state
-+                  }
-+        STATUS             current
-+        DESCRIPTION
-+           "An  ospfNbrStateChange  trap  signifies   that
-+           there  has been a change in the state of a non-
-+           virtual OSPF neighbor.   This  trap  should  be
-+           generated  when  the  neighbor  state regresses
-+           (e.g., goes from Attempt or Full  to  1-Way  or
-+           Down)  or progresses to a terminal state (e.g.,
-+           2-Way or Full).  When an  neighbor  transitions
-+           from  or  to Full on non-broadcast multi-access
-+           and broadcast networks, the trap should be gen-
-+           erated  by the designated router.  A designated
-+           router transitioning to Down will be  noted  by
-+           ospfIfStateChange."
-+   ::= { ospfTraps 2 }
-+
-+
-+    ospfVirtNbrStateChange NOTIFICATION-TYPE
-+        OBJECTS {
-+                    ospfRouterId, -- The originator of the trap
-+                    ospfVirtNbrArea,
-+                    ospfVirtNbrRtrId,
-+                    ospfVirtNbrState  -- The new state
-+                  }
-+        STATUS             current
-+        DESCRIPTION
-+           "An ospfIfStateChange trap signifies that there
-+           has  been a change in the state of an OSPF vir-
-+           tual neighbor.  This trap should  be  generated
-+           when  the  neighbor state regresses (e.g., goes
-+           from Attempt or  Full  to  1-Way  or  Down)  or
-+           progresses to a terminal state (e.g., Full)."
-+   ::= { ospfTraps 3 }
-+    ospfIfConfigError NOTIFICATION-TYPE
-+        OBJECTS {
-+                    ospfRouterId, -- The originator of the trap
-+                    ospfIfIpAddress,
-+                    ospfAddressLessIf,
-+                    ospfPacketSrc,  -- The source IP address
-+                    ospfConfigErrorType, -- Type of error
-+                    ospfPacketType
-+                  }
-+        STATUS             current
-+        DESCRIPTION
-+           "An ospfIfConfigError  trap  signifies  that  a
-+           packet  has  been received on a non-virtual in-
-+           terface  from  a  router  whose   configuration
-+           parameters  conflict  with this router's confi-
-+           guration parameters.  Note that the  event  op-
-+           tionMismatch  should  cause  a  trap only if it
-+           prevents an adjacency from forming."
-+                  ::= { ospfTraps 4 }
-+
-+
-+    ospfVirtIfConfigError NOTIFICATION-TYPE
-+        OBJECTS {
-+                    ospfRouterId, -- The originator of the trap
-+                    ospfVirtIfAreaId,
-+                    ospfVirtIfNeighbor,
-+                    ospfConfigErrorType, -- Type of error
-+                    ospfPacketType
-+                  }
-+        STATUS             current
-+        DESCRIPTION
-+           "An ospfConfigError trap signifies that a pack-
-+           et  has  been  received  on a virtual interface
-+           from a router  whose  configuration  parameters
-+           conflict   with   this  router's  configuration
-+           parameters.  Note that the event optionMismatch
-+           should  cause a trap only if it prevents an ad-
-+           jacency from forming."
-+   ::= { ospfTraps 5 }
-+
-+
-+    ospfIfAuthFailure NOTIFICATION-TYPE
-+        OBJECTS {
-+                    ospfRouterId, -- The originator of the trap
-+                    ospfIfIpAddress,
-+                    ospfAddressLessIf,
-+                    ospfPacketSrc,  -- The source IP address
-+                    ospfConfigErrorType, -- authTypeMismatch or
-+                                         -- authFailure
-+                    ospfPacketType
-+                  }
-+        STATUS             current
-+        DESCRIPTION
-+           "An ospfIfAuthFailure  trap  signifies  that  a
-+           packet  has  been received on a non-virtual in-
-+           terface from a router whose authentication  key
-+           or  authentication  type  conflicts  with  this
-+           router's authentication key  or  authentication
-+           type."
-+   ::= { ospfTraps 6 }
-+
-+
-+    ospfVirtIfAuthFailure NOTIFICATION-TYPE
-+        OBJECTS {
-+                    ospfRouterId, -- The originator of the trap
-+                    ospfVirtIfAreaId,
-+                    ospfVirtIfNeighbor,
-+                    ospfConfigErrorType, -- authTypeMismatch or
-+                                         -- authFailure
-+                    ospfPacketType
-+                  }
-+        STATUS             current
-+        DESCRIPTION
-+           "An ospfVirtIfAuthFailure trap signifies that a
-+           packet has been received on a virtual interface
-+           from a router whose authentication key  or  au-
-+           thentication  type conflicts with this router's
-+           authentication key or authentication type."
-+   ::= { ospfTraps 7 }
-+
-+
-+    ospfIfRxBadPacket NOTIFICATION-TYPE
-+        OBJECTS {
-+                    ospfRouterId, -- The originator of the trap
-+                    ospfIfIpAddress,
-+                    ospfAddressLessIf,
-+                    ospfPacketSrc,  -- The source IP address
-+                    ospfPacketType
-+                  }
-+        STATUS             current
-+        DESCRIPTION
-+           "An ospfIfRxBadPacket trap  signifies  that  an
-+           OSPF  packet has been received on a non-virtual
-+           interface that cannot be parsed."
-+   ::= { ospfTraps 8 }
-+
-+    ospfVirtIfRxBadPacket NOTIFICATION-TYPE
-+        OBJECTS {
-+                    ospfRouterId, -- The originator of the trap
-+                    ospfVirtIfAreaId,
-+                    ospfVirtIfNeighbor,
-+                    ospfPacketType
-+                  }
-+        STATUS             current
-+        DESCRIPTION
-+           "An ospfRxBadPacket trap signifies that an OSPF
-+           packet has been received on a virtual interface
-+           that cannot be parsed."
-+   ::= { ospfTraps 9 }
-+
-+
-+    ospfTxRetransmit NOTIFICATION-TYPE
-+        OBJECTS {
-+                    ospfRouterId, -- The originator of the trap
-+                    ospfIfIpAddress,
-+                    ospfAddressLessIf,
-+                    ospfNbrRtrId, -- Destination
-+                    ospfPacketType,
-+                    ospfLsdbType,
-+                    ospfLsdbLsid,
-+                    ospfLsdbRouterId
-+                  }
-+        STATUS             current
-+        DESCRIPTION
-+           "An ospfTxRetransmit  trap  signifies  than  an
-+           OSPF  packet  has  been retransmitted on a non-
-+           virtual interface.  All packets that may be re-
-+           transmitted  are associated with an LSDB entry.
-+           The LS type, LS ID, and Router ID are  used  to
-+           identify the LSDB entry."
-+   ::= { ospfTraps 10 }
-+
-+
-+    ospfVirtIfTxRetransmit NOTIFICATION-TYPE
-+        OBJECTS {
-+                    ospfRouterId, -- The originator of the trap
-+                    ospfVirtIfAreaId,
-+                    ospfVirtIfNeighbor,
-+                    ospfPacketType,
-+                    ospfLsdbType,
-+                    ospfLsdbLsid,
-+                    ospfLsdbRouterId
-+                  }
-+        STATUS             current
-+        DESCRIPTION
-+           "An ospfTxRetransmit  trap  signifies  than  an
-+           OSPF packet has been retransmitted on a virtual
-+           interface.  All packets that may be retransmit-
-+           ted  are  associated with an LSDB entry. The LS
-+           type, LS ID, and Router ID are used to identify
-+           the LSDB entry."
-+   ::= { ospfTraps 11 }
-+
-+
-+    ospfOriginateLsa NOTIFICATION-TYPE
-+        OBJECTS {
-+                    ospfRouterId, -- The originator of the trap
-+                    ospfLsdbAreaId,  -- 0.0.0.0 for AS Externals
-+                    ospfLsdbType,
-+                    ospfLsdbLsid,
-+                    ospfLsdbRouterId
-+                  }
-+        STATUS             current
-+        DESCRIPTION
-+           "An ospfOriginateLsa trap signifies that a  new
-+           LSA  has  been originated by this router.  This
-+           trap should not be invoked for simple refreshes
-+           of  LSAs  (which happesn every 30 minutes), but
-+           instead will only be invoked  when  an  LSA  is
-+           (re)originated due to a topology change.  Addi-
-+           tionally, this trap does not include LSAs  that
-+           are  being  flushed  because  they have reached
-+           MaxAge."
-+   ::= { ospfTraps 12 }
-+
-+
-+    ospfMaxAgeLsa NOTIFICATION-TYPE
-+        OBJECTS {
-+                    ospfRouterId, -- The originator of the trap
-+                    ospfLsdbAreaId,  -- 0.0.0.0 for AS Externals
-+                    ospfLsdbType,
-+                    ospfLsdbLsid,
-+                    ospfLsdbRouterId
-+                  }
-+        STATUS             current
-+        DESCRIPTION
-+           "An ospfMaxAgeLsa trap signifies  that  one  of
-+           the LSA in the router's link-state database has
-+           aged to MaxAge."
-+   ::= { ospfTraps 13 }
-+
-+
-+    ospfLsdbOverflow NOTIFICATION-TYPE
-+        OBJECTS {
-+                    ospfRouterId, -- The originator of the trap
-+                    ospfExtLsdbLimit
-+                  }
-+        STATUS             current
-+        DESCRIPTION
-+           "An ospfLsdbOverflow trap  signifies  that  the
-+           number of LSAs in the router's link-state data-
-+           base has exceeded ospfExtLsdbLimit."
-+   ::= { ospfTraps 14 }
-+
-+
-+    ospfLsdbApproachingOverflow NOTIFICATION-TYPE
-+        OBJECTS {
-+                    ospfRouterId, -- The originator of the trap
-+                    ospfExtLsdbLimit
-+                  }
-+        STATUS             current
-+        DESCRIPTION
-+           "An ospfLsdbApproachingOverflow trap  signifies
-+           that  the  number of LSAs in the router's link-
-+           state database has exceeded ninety  percent  of
-+           ospfExtLsdbLimit."
-+   ::= { ospfTraps 15 }
-+
-+
-+-- conformance information
-+
-+ospfTrapConformance OBJECT IDENTIFIER ::= { ospfTrap 3 }
-+
-+ospfTrapGroups      OBJECT IDENTIFIER ::= { ospfTrapConformance 1 }
-+ospfTrapCompliances OBJECT IDENTIFIER ::= { ospfTrapConformance 2 }
-+
-+-- compliance statements
-+
-+    ospfTrapCompliance MODULE-COMPLIANCE
-+        STATUS  current
-+        DESCRIPTION
-+           "The compliance statement "
-+       MODULE  -- this module
-+       MANDATORY-GROUPS { ospfTrapControlGroup }
-+
-+
-+        GROUP       ospfTrapControlGroup
-+        DESCRIPTION
-+           "This group is optional but recommended for all
-+           OSPF systems"
-+       ::= { ospfTrapCompliances 1 }
-+
-+
-+-- units of conformance
-+
-+    ospfTrapControlGroup    OBJECT-GROUP
-+        OBJECTS {
-+                           ospfSetTrap,
-+                           ospfConfigErrorType,
-+                           ospfPacketType,
-+                           ospfPacketSrc
-+        }
-+        STATUS  current
-+        DESCRIPTION
-+           "These objects are required  to  control  traps
-+           from OSPF systems."
-+       ::= { ospfTrapGroups 1 }
-+
-+
-+END
---- /dev/null
-+++ b/mibs/RIPv2-MIB.txt
-@@ -0,0 +1,530 @@
-+   RIPv2-MIB DEFINITIONS ::= BEGIN
-+
-+   IMPORTS
-+       MODULE-IDENTITY, OBJECT-TYPE, Counter32,
-+       TimeTicks, IpAddress                     FROM SNMPv2-SMI
-+       TEXTUAL-CONVENTION, RowStatus            FROM SNMPv2-TC
-+       MODULE-COMPLIANCE, OBJECT-GROUP          FROM SNMPv2-CONF
-+       mib-2                                    FROM RFC1213-MIB;
-+
-+   --  This MIB module uses the extended OBJECT-TYPE macro as
-+   --  defined in [9].
-+
-+   rip2  MODULE-IDENTITY
-+           LAST-UPDATED "9407272253Z"      -- Wed Jul 27 22:53:04 PDT 1994
-+           ORGANIZATION "IETF RIP-II Working Group"
-+           CONTACT-INFO
-+          "       Fred Baker
-+          Postal: Cisco Systems
-+                  519 Lado Drive
-+                  Santa Barbara, California 93111
-+          Tel:    +1 805 681 0115
-+          E-Mail: fbaker@cisco.com
-+
-+          Postal: Gary Malkin
-+                  Xylogics, Inc.
-+                  53 Third Avenue
-+                  Burlington, MA  01803
-+
-+          Phone:  (617) 272-8140
-+          EMail:  gmalkin@Xylogics.COM"
-+      DESCRIPTION
-+         "The MIB module to describe the RIP2 Version 2 Protocol"
-+     ::= { mib-2 23 }
-+
-+ --  RIP-2 Management Information Base
-+
-+ -- the RouteTag type represents the contents of the
-+ -- Route Domain field in the packet header or route entry.
-+ -- The use of the Route Domain is deprecated.
-+
-+ RouteTag ::= TEXTUAL-CONVENTION
-+     STATUS      current
-+     DESCRIPTION
-+        "the RouteTag type represents the contents of the Route Domain
-+        field in the packet header or route entry"
-+    SYNTAX      OCTET STRING (SIZE (2))
-+
-+--4.1 Global Counters
-+
-+--      The RIP-2 Globals Group.
-+--      Implementation of this group is mandatory for systems
-+--      which implement RIP-2.
-+
-+-- These counters are intended to facilitate debugging quickly
-+-- changing routes or failing neighbors
-+
-+rip2Globals OBJECT IDENTIFIER ::= { rip2 1 }
-+
-+    rip2GlobalRouteChanges OBJECT-TYPE
-+        SYNTAX   Counter32
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The number of route changes made to the IP Route
-+           Database by RIP.  This does not include the refresh
-+           of a route's age."
-+       ::= { rip2Globals 1 }
-+
-+    rip2GlobalQueries OBJECT-TYPE
-+        SYNTAX   Counter32
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The number of responses sent to RIP queries
-+           from other systems."
-+       ::= { rip2Globals 2 }
-+
-+--4.2 RIP Interface Tables
-+
-+--  RIP Interfaces Groups
-+--  Implementation of these Groups is mandatory for systems
-+--  which implement RIP-2.
-+
-+-- The RIP Interface Status Table.
-+
-+    rip2IfStatTable OBJECT-TYPE
-+        SYNTAX   SEQUENCE OF Rip2IfStatEntry
-+        MAX-ACCESS   not-accessible
-+        STATUS   current
-+        DESCRIPTION
-+           "A list of subnets which require separate
-+           status monitoring in RIP."
-+       ::= { rip2 2 }
-+
-+   rip2IfStatEntry OBJECT-TYPE
-+       SYNTAX   Rip2IfStatEntry
-+       MAX-ACCESS   not-accessible
-+       STATUS   current
-+       DESCRIPTION
-+          "A Single Routing Domain in a single Subnet."
-+      INDEX { rip2IfStatAddress }
-+      ::= { rip2IfStatTable 1 }
-+
-+    Rip2IfStatEntry ::=
-+        SEQUENCE {
-+            rip2IfStatAddress
-+                IpAddress,
-+            rip2IfStatRcvBadPackets
-+                Counter32,
-+            rip2IfStatRcvBadRoutes
-+                Counter32,
-+            rip2IfStatSentUpdates
-+                Counter32,
-+            rip2IfStatStatus
-+                RowStatus
-+    }
-+
-+    rip2IfStatAddress OBJECT-TYPE
-+        SYNTAX   IpAddress
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The IP Address of this system on the indicated
-+           subnet. For unnumbered interfaces, the value 0.0.0.N,
-+           where the least significant 24 bits (N) is the ifIndex
-+           for the IP Interface in network byte order."
-+       ::= { rip2IfStatEntry 1 }
-+
-+    rip2IfStatRcvBadPackets OBJECT-TYPE
-+        SYNTAX   Counter32
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The number of RIP response packets received by
-+           the RIP process which were subsequently discarded
-+           for any reason (e.g. a version 0 packet, or an
-+           unknown command type)."
-+       ::= { rip2IfStatEntry 2 }
-+
-+    rip2IfStatRcvBadRoutes OBJECT-TYPE
-+        SYNTAX   Counter32
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The number of routes, in valid RIP packets,
-+           which were ignored for any reason (e.g. unknown
-+           address family, or invalid metric)."
-+       ::= { rip2IfStatEntry 3 }
-+
-+    rip2IfStatSentUpdates OBJECT-TYPE
-+        SYNTAX   Counter32
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The number of triggered RIP updates actually
-+           sent on this interface.  This explicitly does
-+           NOT include full updates sent containing new
-+           information."
-+       ::= { rip2IfStatEntry 4 }
-+
-+    rip2IfStatStatus OBJECT-TYPE
-+        SYNTAX   RowStatus
-+        MAX-ACCESS   read-create
-+        STATUS   current
-+        DESCRIPTION
-+           "Writing invalid has the effect of deleting
-+           this interface."
-+       ::= { rip2IfStatEntry 5 }
-+
-+-- The RIP Interface Configuration Table.
-+
-+    rip2IfConfTable OBJECT-TYPE
-+        SYNTAX   SEQUENCE OF Rip2IfConfEntry
-+        MAX-ACCESS   not-accessible
-+        STATUS   current
-+        DESCRIPTION
-+           "A list of subnets which require separate
-+           configuration in RIP."
-+       ::= { rip2 3 }
-+
-+   rip2IfConfEntry OBJECT-TYPE
-+       SYNTAX   Rip2IfConfEntry
-+       MAX-ACCESS   not-accessible
-+       STATUS   current
-+       DESCRIPTION
-+          "A Single Routing Domain in a single Subnet."
-+      INDEX { rip2IfConfAddress }
-+      ::= { rip2IfConfTable 1 }
-+
-+    Rip2IfConfEntry ::=
-+        SEQUENCE {
-+            rip2IfConfAddress
-+                IpAddress,
-+            rip2IfConfDomain
-+                RouteTag,
-+            rip2IfConfAuthType
-+                INTEGER,
-+            rip2IfConfAuthKey
-+                OCTET STRING (SIZE(0..16)),
-+            rip2IfConfSend
-+                INTEGER,
-+            rip2IfConfReceive
-+                INTEGER,
-+            rip2IfConfDefaultMetric
-+                INTEGER,
-+            rip2IfConfStatus
-+                RowStatus,
-+            rip2IfConfSrcAddress
-+                IpAddress
-+    }
-+
-+    rip2IfConfAddress OBJECT-TYPE
-+        SYNTAX   IpAddress
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The IP Address of this system on the indicated
-+           subnet.  For unnumbered interfaces, the value 0.0.0.N,
-+           where the least significant 24 bits (N) is the ifIndex
-+           for the IP Interface in network byte order."
-+       ::= { rip2IfConfEntry 1 }
-+
-+    rip2IfConfDomain OBJECT-TYPE
-+        SYNTAX   RouteTag
-+        MAX-ACCESS   read-create
-+        STATUS   obsolete
-+        DESCRIPTION
-+           "Value inserted into the Routing Domain field
-+           of all RIP packets sent on this interface."
-+       DEFVAL { '0000'h }
-+       ::= { rip2IfConfEntry 2 }
-+
-+    rip2IfConfAuthType OBJECT-TYPE
-+        SYNTAX   INTEGER {
-+                    noAuthentication (1),
-+                    simplePassword (2),
-+                    md5 (3)
-+                 }
-+        MAX-ACCESS   read-create
-+        STATUS   current
-+        DESCRIPTION
-+           "The type of Authentication used on this
-+           interface."
-+       DEFVAL { noAuthentication }
-+       ::= { rip2IfConfEntry 3 }
-+
-+    rip2IfConfAuthKey OBJECT-TYPE
-+        SYNTAX   OCTET STRING (SIZE(0..16))
-+        MAX-ACCESS   read-create
-+        STATUS   current
-+        DESCRIPTION
-+           "The value to be used as the Authentication Key
-+           whenever the corresponding instance of
-+           rip2IfConfAuthType has a value other than
-+           noAuthentication.  A modification of the corresponding
-+           instance of rip2IfConfAuthType does not modify
-+           the rip2IfConfAuthKey value.  If a string shorter
-+           than 16 octets is supplied, it will be left-
-+           justified and padded to 16 octets, on the right,
-+           with nulls (0x00).
-+
-+           Reading this object always results in an  OCTET
-+           STRING of length zero; authentication may not
-+           be bypassed by reading the MIB object."
-+       DEFVAL { ''h }
-+       ::= { rip2IfConfEntry 4 }
-+
-+    rip2IfConfSend OBJECT-TYPE
-+        SYNTAX   INTEGER {
-+                    doNotSend (1),
-+                    ripVersion1 (2),
-+                    rip1Compatible (3),
-+                    ripVersion2 (4),
-+                    ripV1Demand (5),
-+                    ripV2Demand (6)
-+                 }
-+        MAX-ACCESS   read-create
-+        STATUS   current
-+        DESCRIPTION
-+           "What the router sends on this interface.
-+           ripVersion1 implies sending RIP updates compliant
-+           with  RFC  1058.   rip1Compatible implies
-+           broadcasting RIP-2 updates using RFC 1058 route
-+           subsumption rules.  ripVersion2 implies
-+           multicasting RIP-2 updates.  ripV1Demand indicates
-+           the use of Demand RIP on a WAN interface under RIP
-+           Version 1 rules.  ripV2Demand indicates the use of
-+           Demand RIP on a WAN interface under Version 2 rules."
-+       DEFVAL { rip1Compatible }
-+       ::= { rip2IfConfEntry 5 }
-+
-+    rip2IfConfReceive OBJECT-TYPE
-+        SYNTAX   INTEGER {
-+                    rip1 (1),
-+                    rip2 (2),
-+                    rip1OrRip2 (3),
-+                    doNotRecieve (4)
-+                 }
-+        MAX-ACCESS   read-create
-+        STATUS   current
-+        DESCRIPTION
-+           "This indicates which version of RIP updates
-+           are to be accepted.  Note that rip2 and
-+           rip1OrRip2 implies reception of multicast
-+           packets."
-+       DEFVAL { rip1OrRip2 }
-+       ::= { rip2IfConfEntry 6 }
-+
-+    rip2IfConfDefaultMetric OBJECT-TYPE
-+        SYNTAX   INTEGER ( 0..15 )
-+        MAX-ACCESS   read-create
-+        STATUS   current
-+        DESCRIPTION
-+           "This variable indicates the metric that is to
-+           be used for the default route entry in RIP updates
-+           originated on this interface.  A value of zero
-+           indicates that no default route should be
-+           originated; in this case, a default route via
-+           another router may be propagated."
-+       ::= { rip2IfConfEntry 7 }
-+
-+    rip2IfConfStatus OBJECT-TYPE
-+        SYNTAX   RowStatus
-+        MAX-ACCESS   read-create
-+        STATUS   current
-+        DESCRIPTION
-+           "Writing invalid has  the  effect  of  deleting
-+           this interface."
-+       ::= { rip2IfConfEntry 8 }
-+
-+    rip2IfConfSrcAddress OBJECT-TYPE
-+        SYNTAX   IpAddress
-+        MAX-ACCESS   read-create
-+        STATUS   current
-+        DESCRIPTION
-+           "The IP Address this system will use as a source
-+            address on this interface.  If it is a numbered
-+            interface, this MUST be the same value as
-+            rip2IfConfAddress.  On unnumbered interfaces,
-+            it must be the value of rip2IfConfAddress for
-+            some interface on the system."
-+       ::= { rip2IfConfEntry 9 }
-+
-+--4.3 Peer Table
-+
-+--  Peer Table
-+
-+--      The RIP Peer Group
-+--      Implementation of this Group is Optional
-+
-+--      This group provides information about active peer
-+--      relationships intended to assist in debugging.  An
-+--      active peer is a router from which a valid RIP
-+--      updated has been heard in the last 180 seconds.
-+
-+    rip2PeerTable OBJECT-TYPE
-+        SYNTAX   SEQUENCE OF Rip2PeerEntry
-+        MAX-ACCESS   not-accessible
-+        STATUS   current
-+        DESCRIPTION
-+           "A list of RIP Peers."
-+       ::= { rip2 4 }
-+
-+   rip2PeerEntry OBJECT-TYPE
-+       SYNTAX   Rip2PeerEntry
-+       MAX-ACCESS   not-accessible
-+       STATUS   current
-+       DESCRIPTION
-+          "Information regarding a single routing peer."
-+      INDEX { rip2PeerAddress, rip2PeerDomain }
-+      ::= { rip2PeerTable 1 }
-+
-+    Rip2PeerEntry ::=
-+        SEQUENCE {
-+            rip2PeerAddress
-+                IpAddress,
-+            rip2PeerDomain
-+                RouteTag,
-+            rip2PeerLastUpdate
-+                TimeTicks,
-+            rip2PeerVersion
-+                INTEGER,
-+            rip2PeerRcvBadPackets
-+                Counter32,
-+            rip2PeerRcvBadRoutes
-+                Counter32
-+            }
-+
-+    rip2PeerAddress OBJECT-TYPE
-+        SYNTAX   IpAddress
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The IP Address that the peer is using as its source
-+            address.  Note that on an unnumbered link, this may
-+            not be a member of any subnet on the system."
-+       ::= { rip2PeerEntry 1 }
-+
-+    rip2PeerDomain OBJECT-TYPE
-+        SYNTAX   RouteTag
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The value in the Routing Domain field  in  RIP
-+           packets received from the peer.  As domain suuport
-+           is deprecated, this must be zero."
-+       ::= { rip2PeerEntry 2 }
-+
-+    rip2PeerLastUpdate OBJECT-TYPE
-+        SYNTAX   TimeTicks
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The value of sysUpTime when the most recent
-+           RIP update was received from this system."
-+       ::= { rip2PeerEntry 3 }
-+
-+    rip2PeerVersion OBJECT-TYPE
-+        SYNTAX   INTEGER ( 0..255 )
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The RIP version number in the header of the
-+           last RIP packet received."
-+       ::= { rip2PeerEntry 4 }
-+
-+    rip2PeerRcvBadPackets OBJECT-TYPE
-+        SYNTAX   Counter32
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The number of RIP response packets from this
-+           peer discarded as invalid."
-+       ::= { rip2PeerEntry 5 }
-+
-+
-+    rip2PeerRcvBadRoutes OBJECT-TYPE
-+        SYNTAX   Counter32
-+        MAX-ACCESS   read-only
-+        STATUS   current
-+        DESCRIPTION
-+           "The number of routes from this peer that were
-+           ignored because the entry format was invalid."
-+       ::= { rip2PeerEntry 6 }
-+
-+-- conformance information
-+
-+rip2Conformance OBJECT IDENTIFIER ::= { rip2 5 }
-+
-+rip2Groups      OBJECT IDENTIFIER ::= { rip2Conformance 1 }
-+rip2Compliances OBJECT IDENTIFIER ::= { rip2Conformance 2 }
-+
-+-- compliance statements
-+rip2Compliance MODULE-COMPLIANCE
-+    STATUS  current
-+    DESCRIPTION
-+       "The compliance statement "
-+    MODULE  -- this module
-+    MANDATORY-GROUPS {
-+                 rip2GlobalGroup,
-+                 rip2IfStatGroup,
-+                 rip2IfConfGroup,
-+                 rip2PeerGroup
-+        }
-+    GROUP       rip2GlobalGroup
-+    DESCRIPTION
-+       "This group defines global controls for RIP-II systems."
-+    GROUP       rip2IfStatGroup
-+    DESCRIPTION
-+       "This group defines interface statistics for RIP-II systems."
-+    GROUP       rip2IfConfGroup
-+    DESCRIPTION
-+       "This group defines interface configuration for RIP-II systems."
-+    GROUP       rip2PeerGroup
-+    DESCRIPTION
-+       "This group defines peer information for RIP-II systems."
-+    ::= { rip2Compliances 1 }
-+
-+-- units of conformance
-+
-+rip2GlobalGroup    OBJECT-GROUP
-+    OBJECTS {
-+                rip2GlobalRouteChanges,
-+                rip2GlobalQueries
-+    }
-+    STATUS  current
-+    DESCRIPTION
-+       "This group defines global controls for RIP-II systems."
-+    ::= { rip2Groups 1 }
-+rip2IfStatGroup    OBJECT-GROUP
-+    OBJECTS {
-+            rip2IfStatAddress,
-+            rip2IfStatRcvBadPackets,
-+            rip2IfStatRcvBadRoutes,
-+            rip2IfStatSentUpdates,
-+            rip2IfStatStatus
-+    }
-+    STATUS  current
-+    DESCRIPTION
-+       "This group defines interface statistics for RIP-II systems."
-+    ::= { rip2Groups 2 }
-+rip2IfConfGroup    OBJECT-GROUP
-+    OBJECTS {
-+            rip2IfConfAddress,
-+            rip2IfConfAuthType,
-+            rip2IfConfAuthKey,
-+            rip2IfConfSend,
-+            rip2IfConfReceive,
-+            rip2IfConfDefaultMetric,
-+            rip2IfConfStatus,
-+            rip2IfConfSrcAddress
-+    }
-+    STATUS  current
-+    DESCRIPTION
-+       "This group defines interface configuration for RIP-II systems."
-+    ::= { rip2Groups 3 }
-+rip2PeerGroup    OBJECT-GROUP
-+    OBJECTS {
-+            rip2PeerAddress,
-+            rip2PeerDomain,
-+            rip2PeerLastUpdate,
-+            rip2PeerVersion,
-+            rip2PeerRcvBadPackets,
-+            rip2PeerRcvBadRoutes
-+    }
-+    STATUS  current
-+    DESCRIPTION
-+       "This group defines peer information for RIP-II systems."
-+    ::= { rip2Groups 4 }
-+END
---- /dev/null
-+++ b/mibs/SOURCE-ROUTING-MIB.txt
-@@ -0,0 +1,452 @@
-+SOURCE-ROUTING-MIB DEFINITIONS ::= BEGIN
-+
-+IMPORTS
-+        Counter, Gauge
-+                FROM RFC1155-SMI
-+        dot1dBridge, dot1dSr
-+                FROM BRIDGE-MIB
-+        OBJECT-TYPE
-+                FROM RFC-1212;
-+
-+-- groups in the SR MIB
-+
-+-- dot1dSr is imported from the Bridge MIB
-+
-+dot1dPortPair   OBJECT IDENTIFIER ::= { dot1dBridge 10 }
-+
-+-- the dot1dSr group
-+
-+-- this group is implemented by those bridges that
-+-- support the source route bridging mode, including Source
-+-- Routing and SRT bridges.
-+
-+dot1dSrPortTable OBJECT-TYPE
-+    SYNTAX  SEQUENCE OF Dot1dSrPortEntry
-+    ACCESS  not-accessible
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "A table that contains information about every
-+            port that is associated with this source route
-+            bridge."
-+    ::= { dot1dSr 1 }
-+
-+dot1dSrPortEntry OBJECT-TYPE
-+    SYNTAX  Dot1dSrPortEntry
-+    ACCESS  not-accessible
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "A list of information for each port of a source
-+            route bridge."
-+    INDEX   { dot1dSrPort }
-+
-+    ::= { dot1dSrPortTable 1 }
-+
-+Dot1dSrPortEntry ::=
-+    SEQUENCE {
-+        dot1dSrPort
-+            INTEGER,
-+        dot1dSrPortHopCount
-+            INTEGER,
-+        dot1dSrPortLocalSegment
-+            INTEGER,
-+        dot1dSrPortBridgeNum
-+            INTEGER,
-+        dot1dSrPortTargetSegment
-+            INTEGER,
-+        dot1dSrPortLargestFrame
-+            INTEGER,
-+        dot1dSrPortSTESpanMode
-+            INTEGER,
-+        dot1dSrPortSpecInFrames
-+            Counter,
-+        dot1dSrPortSpecOutFrames
-+            Counter,
-+        dot1dSrPortApeInFrames
-+            Counter,
-+        dot1dSrPortApeOutFrames
-+            Counter,
-+        dot1dSrPortSteInFrames
-+            Counter,
-+        dot1dSrPortSteOutFrames
-+            Counter,
-+        dot1dSrPortSegmentMismatchDiscards
-+            Counter,
-+        dot1dSrPortDuplicateSegmentDiscards
-+            Counter,
-+        dot1dSrPortHopCountExceededDiscards
-+            Counter,
-+        dot1dSrPortDupLanIdOrTreeErrors
-+            Counter,
-+        dot1dSrPortLanIdMismatches
-+            Counter
-+    }
-+
-+dot1dSrPort OBJECT-TYPE
-+    SYNTAX  INTEGER (1..65535)
-+    ACCESS  read-only
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "The port number of the port for which this entry
-+
-+            contains Source Route management information."
-+    ::= { dot1dSrPortEntry 1 }
-+
-+dot1dSrPortHopCount OBJECT-TYPE
-+    SYNTAX  INTEGER
-+    ACCESS  read-write
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "The maximum number of routing descriptors allowed
-+            in an All Paths or Spanning Tree Explorer frames."
-+    ::= { dot1dSrPortEntry 2 }
-+
-+dot1dSrPortLocalSegment OBJECT-TYPE
-+    SYNTAX  INTEGER
-+    ACCESS  read-write
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "The segment number that uniquely identifies the
-+            segment to which this port is connected. Current
-+            source routing protocols limit this value to the
-+            range: 0 through 4095. (The value 0 is used by
-+            some management applications for special test
-+            cases.) A value of 65535 signifies that no segment
-+            number is assigned to this port."
-+    ::= { dot1dSrPortEntry 3 }
-+
-+dot1dSrPortBridgeNum OBJECT-TYPE
-+    SYNTAX  INTEGER
-+    ACCESS  read-write
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "A bridge number uniquely identifies a bridge when
-+            more than one bridge is used to span the same two
-+            segments.  Current source routing protocols limit
-+            this value to the range: 0 through 15. A value of
-+            65535 signifies that no bridge number is assigned
-+            to this bridge."
-+    ::= { dot1dSrPortEntry 4 }
-+
-+dot1dSrPortTargetSegment OBJECT-TYPE
-+    SYNTAX  INTEGER
-+    ACCESS  read-write
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "The segment number that corresponds to the target
-+            segment this port is considered to be connected to
-+            by the bridge.  Current source routing protocols
-+            limit this value to the range: 0 through 4095.
-+
-+            (The value 0 is used by some management
-+            applications for special test cases.) A value of
-+            65535 signifies that no target segment is assigned
-+            to this port."
-+    ::= { dot1dSrPortEntry 5 }
-+
-+-- It would be nice if we could use ifMtu as the size of the
-+-- largest frame, but we can't because ifMtu is defined to be
-+-- the size that the (inter-)network layer can use which can
-+-- differ from the MAC layer (especially if several layers of
-+-- encapsulation are used).
-+
-+dot1dSrPortLargestFrame OBJECT-TYPE
-+    SYNTAX  INTEGER
-+    ACCESS  read-write
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "The maximum size of the INFO field (LLC and
-+            above) that this port can send/receive.  It does
-+            not include any MAC level (framing) octets.  The
-+            value of this object is used by this bridge to
-+            determine whether a modification of the
-+            LargestFrame (LF, see [14]) field of the Routing
-+            Control field of the Routing Information Field is
-+            necessary.
-+
-+            64 valid values are defined by the IEEE 802.5M SRT
-+            Addendum: 516, 635, 754, 873, 993, 1112, 1231,
-+            1350, 1470, 1542, 1615, 1688, 1761, 1833, 1906,
-+            1979, 2052, 2345, 2638, 2932, 3225, 3518, 3812,
-+            4105, 4399, 4865, 5331, 5798, 6264, 6730, 7197,
-+            7663, 8130, 8539, 8949, 9358, 9768, 10178, 10587,
-+            10997, 11407, 12199, 12992, 13785, 14578, 15370,
-+            16163, 16956, 17749, 20730, 23711, 26693, 29674,
-+            32655, 35637, 38618, 41600, 44591, 47583, 50575,
-+            53567, 56559, 59551, and 65535.
-+
-+            An illegal value will not be accepted by the
-+            bridge."
-+    ::= { dot1dSrPortEntry 6 }
-+
-+dot1dSrPortSTESpanMode OBJECT-TYPE
-+    SYNTAX  INTEGER {
-+                auto-span(1),
-+                disabled(2),
-+                forced(3)
-+            }
-+    ACCESS  read-write
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "Determines how this port behaves when presented
-+            with a Spanning Tree Explorer frame.  The value
-+            'disabled(2)' indicates that the port will not
-+            accept or send Spanning Tree Explorer packets; any
-+            STE packets received will be silently discarded.
-+            The value 'forced(3)' indicates the port will
-+            always accept and propagate Spanning Tree Explorer
-+            frames.  This allows a manually configured
-+            Spanning Tree for this class of packet to be
-+            configured.  Note that unlike transparent
-+            bridging, this is not catastrophic to the network
-+            if there are loops.  The value 'auto-span(1)' can
-+            only be returned by a bridge that both implements
-+            the Spanning Tree Protocol and has use of the
-+            protocol enabled on this port. The behavior of the
-+            port for Spanning Tree Explorer frames is
-+            determined by the state of dot1dStpPortState.  If
-+            the port is in the 'forwarding' state, the frame
-+            will be accepted or propagated.  Otherwise, it
-+            will be silently discarded."
-+    ::= { dot1dSrPortEntry 7 }
-+
-+dot1dSrPortSpecInFrames OBJECT-TYPE
-+    SYNTAX  Counter
-+    ACCESS  read-only
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "The number of Specifically Routed frames, also
-+            referred to as Source Routed Frames, that have
-+            been received from this port's segment."
-+    ::= { dot1dSrPortEntry 8 }
-+
-+dot1dSrPortSpecOutFrames OBJECT-TYPE
-+    SYNTAX  Counter
-+    ACCESS  read-only
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "The number of Specifically Routed frames, also
-+            referred to as Source Routed Frames, that this
-+            port has transmitted on its segment."
-+    ::= { dot1dSrPortEntry 9 }
-+
-+dot1dSrPortApeInFrames OBJECT-TYPE
-+    SYNTAX  Counter
-+    ACCESS  read-only
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "The number of All Paths Explorer frames, also
-+            referred to as All Routes Explorer frames, that
-+            have been received by this port from its segment."
-+    ::= { dot1dSrPortEntry 10 }
-+
-+dot1dSrPortApeOutFrames OBJECT-TYPE
-+    SYNTAX  Counter
-+    ACCESS  read-only
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "The number of all Paths Explorer Frames, also
-+            referred to as All Routes Explorer frames, that
-+            have been transmitted by this port on its
-+            segment."
-+    ::= { dot1dSrPortEntry 11 }
-+
-+dot1dSrPortSteInFrames OBJECT-TYPE
-+    SYNTAX  Counter
-+    ACCESS  read-only
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "The number of spanning tree explorer frames that
-+            have been received by this port from its segment."
-+    ::= { dot1dSrPortEntry 12 }
-+
-+dot1dSrPortSteOutFrames OBJECT-TYPE
-+    SYNTAX  Counter
-+    ACCESS  read-only
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "The number of spanning tree explorer frames that
-+            have been transmitted by this port on its
-+            segment."
-+    ::= { dot1dSrPortEntry 13 }
-+
-+dot1dSrPortSegmentMismatchDiscards OBJECT-TYPE
-+    SYNTAX  Counter
-+    ACCESS  read-only
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "The number of explorer frames that have been
-+            discarded by this port because the routing
-+            descriptor field contained an invalid adjacent
-+            segment value."
-+    ::= { dot1dSrPortEntry 14 }
-+
-+dot1dSrPortDuplicateSegmentDiscards OBJECT-TYPE
-+    SYNTAX  Counter
-+    ACCESS  read-only
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "The number of frames that have been discarded by
-+            this port because the routing descriptor field
-+            contained a duplicate segment identifier."
-+    ::= { dot1dSrPortEntry 15 }
-+
-+dot1dSrPortHopCountExceededDiscards OBJECT-TYPE
-+    SYNTAX  Counter
-+    ACCESS  read-only
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "The number of explorer frames that have been
-+            discarded by this port because the Routing
-+            Information Field has exceeded the maximum route
-+            descriptor length."
-+    ::= { dot1dSrPortEntry 16 }
-+
-+dot1dSrPortDupLanIdOrTreeErrors OBJECT-TYPE
-+    SYNTAX  Counter
-+    ACCESS  read-only
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "The number of duplicate LAN IDs or Tree errors.
-+            This helps in detection of problems in networks
-+            containing older IBM Source Routing Bridges."
-+    ::= { dot1dSrPortEntry 17 }
-+
-+dot1dSrPortLanIdMismatches OBJECT-TYPE
-+    SYNTAX  Counter
-+    ACCESS  read-only
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "The number of ARE and STE frames that were
-+            discarded because the last LAN ID in the routing
-+            information field did not equal the LAN-in ID.
-+            This error can occur in implementations which do
-+            only a LAN-in ID and Bridge Number check instead
-+            of a LAN-in ID, Bridge Number, and LAN-out ID
-+            check before they forward broadcast frames."
-+    ::= { dot1dSrPortEntry 18 }
-+
-+-- scalar object in dot1dSr
-+
-+dot1dSrBridgeLfMode OBJECT-TYPE
-+    SYNTAX  INTEGER {
-+                mode3(1),
-+                mode6(2)
-+            }
-+    ACCESS  read-write
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "Indicates whether the bridge operates using older
-+            3 bit length negotiation fields or the newer 6 bit
-+            length field in its RIF."
-+    ::= { dot1dSr 2 }
-+
-+-- The Port-Pair Database
-+
-+-- Implementation of this group is optional.
-+
-+-- This group is implemented by those bridges that support
-+-- the direct multiport model of the source route bridging
-+-- mode as defined in the IEEE 802.5 SRT Addendum to
-+-- 802.1d.
-+
-+-- Bridges implementing this group may report 65535 for
-+-- dot1dSrPortBridgeNumber and dot1dSrPortTargetSegment,
-+-- indicating that those objects are not applicable.
-+
-+dot1dPortPairTableSize OBJECT-TYPE
-+    SYNTAX  Gauge
-+    ACCESS  read-only
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "The total number of entries in the Bridge Port
-+            Pair Database."
-+    ::= { dot1dPortPair 1 }
-+
-+-- the Bridge Port-Pair table
-+
-+-- this table represents port pairs within a bridge forming
-+-- a unique bridge path, as defined in the IEEE 802.5M SRT
-+-- Addendum.
-+
-+dot1dPortPairTable OBJECT-TYPE
-+    SYNTAX  SEQUENCE OF Dot1dPortPairEntry
-+    ACCESS  not-accessible
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "A table that contains information about every
-+
-+            port pair database entity associated with this
-+            source routing bridge."
-+    ::= { dot1dPortPair 2 }
-+
-+dot1dPortPairEntry OBJECT-TYPE
-+    SYNTAX  Dot1dPortPairEntry
-+    ACCESS  not-accessible
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "A list of information for each port pair entity
-+            of a bridge."
-+    INDEX   { dot1dPortPairLowPort, dot1dPortPairHighPort }
-+    ::= { dot1dPortPairTable 1 }
-+
-+Dot1dPortPairEntry ::=
-+    SEQUENCE {
-+        dot1dPortPairLowPort
-+            INTEGER,
-+        dot1dPortPairHighPort
-+            INTEGER,
-+        dot1dPortPairBridgeNum
-+            INTEGER,
-+        dot1dPortPairBridgeState
-+            INTEGER
-+    }
-+
-+dot1dPortPairLowPort OBJECT-TYPE
-+    SYNTAX  INTEGER (1..65535)
-+    ACCESS  read-write
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "The port number of the lower numbered port for
-+            which this entry contains port pair database
-+            information."
-+    ::= { dot1dPortPairEntry 1 }
-+
-+dot1dPortPairHighPort OBJECT-TYPE
-+    SYNTAX  INTEGER (1..65535)
-+    ACCESS  read-write
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "The port number of the higher numbered port for
-+            which this entry contains port pair database
-+            information."
-+    ::= { dot1dPortPairEntry 2 }
-+
-+dot1dPortPairBridgeNum OBJECT-TYPE
-+    SYNTAX  INTEGER
-+
-+    ACCESS  read-write
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "A bridge number that uniquely identifies the path
-+            provided by this source routing bridge between the
-+            segments connected to dot1dPortPairLowPort and
-+            dot1dPortPairHighPort.  The purpose of bridge
-+            number is to disambiguate between multiple paths
-+            connecting the same two LANs."
-+    ::= { dot1dPortPairEntry 3 }
-+
-+dot1dPortPairBridgeState OBJECT-TYPE
-+    SYNTAX  INTEGER {
-+                enabled(1),
-+                disabled(2),
-+                invalid(3)
-+            }
-+    ACCESS  read-write
-+    STATUS  mandatory
-+    DESCRIPTION
-+            "The state of dot1dPortPairBridgeNum.  Writing
-+            'invalid(3)' to this object removes the
-+            corresponding entry."
-+    ::= { dot1dPortPairEntry 4 }
-+
-+END
 

--- a/net/net-snmp/patches/140-debian-docfiles.patch
+++ /dev/null
@@ -1,96 +1,1 @@
---- a/FAQ
-+++ b/FAQ
-@@ -99,7 +99,7 @@ TABLE OF CONTENTS
-    I don't understand the new access control stuff - what does it mean?
-    How do I configure SNMPv3 users?
-    The 'createUser' line disappears when I start the agent.  Why?
--   What's the difference between /var/net-snmp and /usr/local/share/snmp?
-+   What's the difference between /var/lib/snmp and /usr/share/snmp?
-    My new agent is ignoring the old snmpd.conf file. Why?
-    Why am I getting "Connection refused"?
-    Why can't I see values in the UCDavis 'extensible' or 'disk' trees?
-@@ -643,7 +643,7 @@ How do I add a MIB to the tools?
-   There are two steps required to add a new MIB file to the tools.
-   Firstly, copy the MIB file into the appropiate location:
- 
--	cp MY-MIB.txt /usr/local/share/snmp/mibs
-+	cp MY-MIB.txt /usr/share/snmp/mibs
-             (which makes it available to everyone on the system)
- 
-           or
-@@ -1177,7 +1177,7 @@ My traphandler script doesn't work when 
-   If this is the case, then you can specify this interpreter
-   explicitly as part of the trap handle directive:
- 
--	traphandle default /usr/bin/perl /usr/local/bin/log_it
-+	traphandle default /usr/bin/perl /usr/bin/log_it
- 
-     In this case, it's almost certain that you'll also
-   need to give the full path to the traphandle script (as shown)
-@@ -1251,7 +1251,7 @@ OK, what should I put in snmp.conf?
-   string to use.
- 
-     Some of these (such as the MIB file location), might be best put in
--  a shared snmp.conf file (typically /usr/local/share/snmp/snmp.conf or
-+  a shared snmp.conf file (typically /usr/share/snmp/snmp.conf or
-   /etc/snmp/snmp.conf) to apply to all users of the system.  Others
-   (particularly the SNMPv3 security settings), are more likely to refer
-   to a particular user, and should go in a personal snmp.conf file
-@@ -1476,7 +1476,7 @@ Why aren't my mib files being read in?
- 
- 
-     Alternatively, the tools may be looking in the wrong place.
--  The default location for the mib files is /usr/local/share/snmp/mibs.
-+  The default location for the mib files is /usr/share/snmp/mibs.
-   Again, this is set when the suite is first configured and compiled.
-   This can be changed using the environmental variable 'MIBDIRS'
-   or the snmp.conf directive 'mibdirs'.
-@@ -2430,7 +2430,7 @@ How do I configure SNMPv3 users?
- 
-   There are three ways to configure SNMPv3 users:
- 
--  1) Stop the agent, and create a file /var/net-snmp/snmpd.conf,
-+  1) Stop the agent, and create a file /var/lib/snmp/snmpd.conf,
-      containing the line
- 
- 	createUser {myUser} MD5 {myPassword} DES
-@@ -2443,7 +2443,7 @@ How do I configure SNMPv3 users?
-         net-snmp-config --create-snmpv3-user
- 
-      and follow the instructions.  This will create an entry
--     in the /var/net-snmp/snmpd.conf file similar to the above.
-+     in the /var/lib/snmp/snmpd.conf file similar to the above.
-      Then re-start the snmpd agent.
- 
-   3) Make sure the agent is running, and will respond to a suitable
-@@ -2476,16 +2476,16 @@ The 'createUser' line disappears when I 
- 
- 
- 
--What's the difference between /var/net-snmp and /usr/local/share/snmp?
-----------------------------------------------------------------------
-+What's the difference between /var/lib/snmp and /usr/share/snmp?
-+----------------------------------------------------------------
- 
--    The /var/net-snmp location is primarily used for information set
-+    The /var/lib/snmp location is primarily used for information set
-   during the running of the agent, which needs to be persistent between
-   one run of the agent and the next.   Apart from "createUser" (see
-   the previous entry), you shouldn't need to touch this file.
- 
-   All other user-provided configuration should go in the traditional
--  location (typically /usr/local/share/snmp/snmpd.conf or /etc/snmp).
-+  location (typically /usr/share/snmp or /etc/snmp).
- 
- 
- 
-@@ -2498,7 +2498,7 @@ My new agent is ignoring the old snmpd.c
-   distribution), with the current release installed from the source.
- 
-     The default location for this file with the basic distribution is
--  /usr/local/share/snmp/snmpd.conf (or PREFIX/share/snmp/snmpd.conf).
-+  /usr/share/snmp/snmpd.conf (or PREFIX/share/snmp/snmpd.conf).
-   Ready-installed versions often look for the file as /etc/snmpd.conf,
-   or /etc/snmp/snmpd.conf.  Try moving the old config file to the new
-   location, and restart the agent.
 

--- a/net/net-snmp/patches/150-debian-defaultconfig.patch
+++ /dev/null
@@ -1,143 +1,1 @@
---- a/EXAMPLE.conf.def
-+++ b/EXAMPLE.conf.def
-@@ -6,7 +6,7 @@
- ###############################################################################
- #
- # This file is intended to only be an example.  If, however, you want
--# to use it, it should be placed in SYSCONFDIR/snmp/snmpd.conf.
-+# to use it, it should be placed in /etc/snmp/snmpd.conf.
- # When the snmpd agent starts up, this is where it will look for it.
- #
- # You might be interested in generating your own snmpd.conf file using
-@@ -58,31 +58,37 @@
- # from):
- 
- #       sec.name  source          community
--com2sec local     localhost       COMMUNITY
--com2sec mynetwork NETWORK/24      COMMUNITY
-+com2sec paranoid  default         public
-+#com2sec readonly  default         public
-+#com2sec readwrite default         private
- 
- ####
- # Second, map the security names into group names:
- 
- #             	sec.model  sec.name
--group MyRWGroup	v1         local
--group MyRWGroup	v2c        local
--group MyRWGroup	usm        local
--group MyROGroup v1         mynetwork
--group MyROGroup v2c        mynetwork
--group MyROGroup usm        mynetwork
-+group MyROSystem v1        paranoid
-+group MyROSystem v2c       paranoid
-+group MyROSystem usm       paranoid
-+group MyROGroup v1         readonly
-+group MyROGroup v2c        readonly
-+group MyROGroup usm        readonly
-+group MyRWGroup v1         readwrite
-+group MyRWGroup v2c        readwrite
-+group MyRWGroup usm        readwrite
- 
- ####
- # Third, create a view for us to let the groups have rights to:
- 
- #           incl/excl subtree                          mask
- view all    included  .1                               80
-+view system included  .iso.org.dod.internet.mgmt.mib-2.system
- 
- ####
- # Finally, grant the 2 groups access to the 1 view with different
- # write permissions:
- 
- #                context sec.model sec.level match  read   write  notif
-+access MyROSystem ""     any       noauth    exact  system none   none
- access MyROGroup ""      any       noauth    exact  all    none   none
- access MyRWGroup ""      any       noauth    exact  all    all    none
- 
-@@ -100,8 +106,8 @@ access MyRWGroup ""      any       noaut
- # value of an object whose value is given here will fail with an error
- # status of notWritable.
- 
--syslocation Right here, right now.
--syscontact Me <me@somewhere.org>
-+syslocation Unknown (configure /etc/snmp/snmpd.local.conf)
-+syscontact Root <root@localhost> (configure /etc/snmp/snmpd.local.conf)
- 
- # Example output of snmpwalk:
- #   % snmpwalk -v 1 -c public localhost system
-@@ -135,13 +141,13 @@ syscontact Me <me@somewhere.org>
- #
- 
- #  Make sure mountd is running
--proc mountd
-+#proc mountd
- 
- #  Make sure there are no more than 4 ntalkds running, but 0 is ok too.
--proc ntalkd 4
-+#proc ntalkd 4
- 
- #  Make sure at least one sendmail, but less than or equal to 10 are running.
--proc sendmail 10 1
-+#proc sendmail 10 1
- 
- #  A snmpwalk of the prTable would look something like this:
- # 
-@@ -199,7 +205,7 @@ proc sendmail 10 1
- #  ARGS:     optional arguments to be passed to the program
- 
- # a simple hello world
--exec echotest /bin/echo hello world
-+#exec echotest /bin/echo hello world
- 
- # Run a shell script containing:
- #
-@@ -250,7 +256,7 @@ exec echotest /bin/echo hello world
- 
- # Check the / partition and make sure it contains at least 10 megs.
- 
--disk / 10000
-+#disk / 10000
- 
- # % snmpwalk -v 1 -c public localhost .EXTENSIBLEDOTMIB.DISKMIBNUM
- # enterprises.ucdavis.diskTable.dskEntry.diskIndex.1 = 0
-@@ -279,7 +285,7 @@ disk / 10000
- # 15MAX:  Similar, but for 15 min average.
- 
- # Check for loads:
--load 12 14 14
-+#load 12 14 14
- 
- # % snmpwalk -v 1 -c public localhost .EXTENSIBLEDOTMIB.LOADAVEMIBNUM
- # enterprises.ucdavis.loadTable.laEntry.loadaveIndex.1 = 1
-@@ -365,7 +371,7 @@ load 12 14 14
- #           (commented out here since it requires that you place the
- #           script in the right location. (its not installed by default))
- 
--# pass .EXTENSIBLEDOTMIB.255 /bin/sh PREFIX/local/passtest
-+# pass .EXTENSIBLEDOTMIB.255 /bin/sh /usr/local/passtest
- 
- # % snmpwalk -v 1 -c public localhost .EXTENSIBLEDOTMIB.255
- # enterprises.ucdavis.255.1 = "life the universe and everything"
---- /dev/null
-+++ b/EXAMPLE-trap.conf
-@@ -0,0 +1,18 @@
-+###############################################################################
-+#
-+# EXAMPLE-trap.conf:
-+#   An example configuration file for configuring the Net-SNMP snmptrapd agent.
-+#
-+###############################################################################
-+#
-+# This file is intended to only be an example.  If, however, you want
-+# to use it, it should be placed in /etc/snmp/snmptrapd.conf.
-+# When the snmptrapd agent starts up, this is where it will look for it.
-+#
-+# All lines beginning with a '#' are comments and are intended for you
-+# to read.  All other lines are configuration commands for the agent.
-+
-+#
-+# PLEASE: read the snmptrapd.conf(5) manual page as well!
-+#
-+
 

--- a/net/net-snmp/patches/160-no_ldconfig.patch
+++ /dev/null
@@ -1,13 +1,1 @@
-diff -urN net-snmp-5.4.2.1/configure net-snmp-5.4.2.1.new/configure
---- net-snmp-5.4.2.1/configure	2008-10-31 16:53:45.000000000 +0100
-+++ net-snmp-5.4.2.1.new/configure	2009-08-02 00:46:05.000000000 +0200
-@@ -10218,7 +10218,7 @@
-   need_version=no
-   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-   soname_spec='${libname}${release}${shared_ext}$major'
--  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-+  finish_cmds=''
-   shlibpath_var=LD_LIBRARY_PATH
-   shlibpath_overrides_runpath=no
-   # This implies no fast_install, which is unacceptable.
 

--- a/net/net-snmp/patches/170-ldflags.patch
+++ /dev/null
@@ -1,12 +1,1 @@
---- a/Makefile.top
-+++ b/Makefile.top
-@@ -81,7 +81,7 @@ LIBCURRENT  = 16
- LIBAGE      = 1
- LIBREVISION = 2
- 
--LIB_LD_CMD      = $(LIBTOOL) --mode=link $(LINKCC) $(CFLAGS) -rpath $(libdir) -version-info $(LIBCURRENT):$(LIBREVISION):$(LIBAGE) -o
-+LIB_LD_CMD      = $(LIBTOOL) --mode=link $(LINKCC) $(CFLAGS) -rpath $(libdir) $(LDFLAGS) -version-info $(LIBCURRENT):$(LIBREVISION):$(LIBAGE) -o
- LIB_EXTENSION   = la
- LIB_VERSION     =
- LIB_LDCONFIG_CMD = $(LIBTOOL) --mode=finish $(libdir)
 

--- a/net/net-snmp/patches/750-ieee802dot11.patch
+++ /dev/null
@@ -1,6157 +1,1 @@
---- /dev/null
-+++ b/agent/mibgroup/ieee802dot11.c
-@@ -0,0 +1,4915 @@
-+/****************************************************************************
-+*                                                                           *
-+*  File Name:           ieee802dot11.c                                      *
-+*  Used By:                                                                 *
-+*                                                                           *
-+*  Operating System:                                                        *
-+*  Purpose:                                                                 *
-+*                                                                           *
-+*  Comments:                                                                *
-+*                                                                           *
-+*  Author:              Larry Simmons                                       *
-+*                       lsimmons@avantcom.com                               *
-+*                       www.avantcom.com                                    *
-+*                                                                           *
-+*  Creation Date:       09/02/03                                            *
-+*                                                                           *
-+*   Ver    Date   Inits Modification                                        *
-+*  ----- -------- ----- ------------                                        *
-+*  0.0.1 09/02/03  LRS  created                                             *
-+*  0.0.2 09/24/03  LRS  wouldn't build after fresh ./configure              *
-+****************************************************************************/
-+/****************************************************************************
-+*                               Includes                                    *
-+****************************************************************************/
-+#include <net-snmp/net-snmp-config.h>
-+#include <net-snmp/net-snmp-includes.h>
-+#include <net-snmp/agent/net-snmp-agent-includes.h>
-+#include "ieee802dot11.h"
-+#include "iwlib.h"
-+
-+/****************************************************************************
-+*                                Defines                                    *
-+****************************************************************************/
-+#define DISPLAYWIEXT                        // display wireless ext info
-+#define TABLE_SIZE   1
-+//#define MINLOADFREQ 15                    // min reload frequency in seconds
-+#define MINLOADFREQ 5                       // min reload frequency in seconds      // for testing
-+#define PROC_NET_DEV      "/proc/net/dev"
-+#define PROC_NET_WIRELESS "/proc/net/wireless"
-+
-+#ifndef UCHAR
-+  typedef unsigned char UCHAR;
-+#endif
-+
-+/****************************************************************************
-+*                            Private Functions                              *
-+****************************************************************************/
-+static void loadTables();
-+static void loadWiExt ( int, char *, struct wireless_info * );
-+static void load80211Structs ( int, char *, struct wireless_info * );
-+static void initStructs();
-+
-+// Wireless Extensions Specific Functions
-+static void loadWiExtTo80211Structs ( int, char *, struct wireless_info * );
-+static void displayWiExt ( struct wireless_info );
-+
-+// Linked List Functions
-+static void addList ( char *, char *, int );
-+static void initLists();                    // initialize all the linked lists
-+static void flushLists();                   // flush all the linked lists
-+static void flushList ( char * );           // flush a single linked list
-+
-+// Utility Functions
-+static int  openSocket ( void );
-+static int  mWatt2dbm ( int );
-+static char *htob ( char * );
-+static int  hasChanged ( char *, int );
-+
-+/****************************************************************************
-+*                            Private Variables                              *
-+****************************************************************************/
-+static unsigned long lastLoad = 0;          // ET in secs at last table load
-+
-+static struct avNode *lastNode, *newNode, *np;
-+
-+/****************************************************************************
-+*                            External Functions                             *
-+****************************************************************************/
-+
-+/****************************************************************************
-+*   ieee802dot11_variables_oid:                                             *
-+*       this is the top level oid that we want to register under.  This     *
-+*       is essentially a prefix, with the suffix appearing in the           *
-+*       variable below.                                                     *
-+****************************************************************************/
-+oid ieee802dot11_variables_oid[] = { 1,2,840,10036 };
-+
-+/****************************************************************************
-+*   variable7 ieee802dot11_variables:                                       *
-+*     this variable defines function callbacks and type return information  *
-+*     for the ieee802dot11 mib section                                      *
-+****************************************************************************/
-+struct variable7 ieee802dot11_variables[] = {
-+/*  magic number        , variable type , ro/rw , callback fn  , L, oidsuffix */
-+#define   DOT11STATIONID        3
-+  { DOT11STATIONID      , ASN_OCTET_STR , RWRITE, var_dot11StationConfigTable, 4, { 1,1,1,1 } },
-+#define   DOT11MEDIUMOCCUPANCYLIMIT  4
-+  { DOT11MEDIUMOCCUPANCYLIMIT, ASN_INTEGER   , RWRITE, var_dot11StationConfigTable, 4, { 1,1,1,2 } },
-+#define   DOT11CFPOLLABLE       5
-+  { DOT11CFPOLLABLE     , ASN_INTEGER   , RONLY , var_dot11StationConfigTable, 4, { 1,1,1,3 } },
-+#define   DOT11CFPPERIOD        6
-+  { DOT11CFPPERIOD      , ASN_INTEGER   , RWRITE, var_dot11StationConfigTable, 4, { 1,1,1,4 } },
-+#define   DOT11CFPMAXDURATION   7
-+  { DOT11CFPMAXDURATION , ASN_INTEGER   , RWRITE, var_dot11StationConfigTable, 4, { 1,1,1,5 } },
-+#define   DOT11AUTHENTICATIONRESPONSETIMEOUT  8
-+  { DOT11AUTHENTICATIONRESPONSETIMEOUT, ASN_INTEGER   , RWRITE, var_dot11StationConfigTable, 4, { 1,1,1,6 } },
-+#define   DOT11PRIVACYOPTIONIMPLEMENTED  9
-+  { DOT11PRIVACYOPTIONIMPLEMENTED, ASN_INTEGER   , RONLY , var_dot11StationConfigTable, 4, { 1,1,1,7 } },
-+#define   DOT11POWERMANAGEMENTMODE  10
-+  { DOT11POWERMANAGEMENTMODE, ASN_INTEGER   , RWRITE, var_dot11StationConfigTable, 4, { 1,1,1,8 } },
-+#define   DOT11DESIREDSSID      11
-+  { DOT11DESIREDSSID    , ASN_OCTET_STR , RWRITE, var_dot11StationConfigTable, 4, { 1,1,1,9 } },
-+#define   DOT11DESIREDBSSTYPE   12
-+  { DOT11DESIREDBSSTYPE , ASN_INTEGER   , RWRITE, var_dot11StationConfigTable, 4, { 1,1,1,10 } },
-+#define   DOT11OPERATIONALRATESET  13
-+  { DOT11OPERATIONALRATESET, ASN_OCTET_STR , RWRITE, var_dot11StationConfigTable, 4, { 1,1,1,11 } },
-+#define   DOT11BEACONPERIOD     14
-+  { DOT11BEACONPERIOD   , ASN_INTEGER   , RWRITE, var_dot11StationConfigTable, 4, { 1,1,1,12 } },
-+#define   DOT11DTIMPERIOD       15
-+  { DOT11DTIMPERIOD     , ASN_INTEGER   , RWRITE, var_dot11StationConfigTable, 4, { 1,1,1,13 } },
-+#define   DOT11ASSOCIATIONRESPONSETIMEOUT  16
-+  { DOT11ASSOCIATIONRESPONSETIMEOUT, ASN_INTEGER   , RWRITE, var_dot11StationConfigTable, 4, { 1,1,1,14 } },
-+#define   DOT11DISASSOCIATEREASON  17
-+  { DOT11DISASSOCIATEREASON, ASN_INTEGER   , RONLY , var_dot11StationConfigTable, 4, { 1,1,1,15 } },
-+#define   DOT11DISASSOCIATESTATION  18
-+  { DOT11DISASSOCIATESTATION, ASN_OCTET_STR , RONLY , var_dot11StationConfigTable, 4, { 1,1,1,16 } },
-+#define   DOT11DEAUTHENTICATEREASON  19
-+  { DOT11DEAUTHENTICATEREASON, ASN_INTEGER   , RONLY , var_dot11StationConfigTable, 4, { 1,1,1,17 } },
-+#define   DOT11DEAUTHENTICATESTATION  20
-+  { DOT11DEAUTHENTICATESTATION, ASN_OCTET_STR , RONLY , var_dot11StationConfigTable, 4, { 1,1,1,18 } },
-+#define   DOT11AUTHENTICATEFAILSTATUS  21
-+  { DOT11AUTHENTICATEFAILSTATUS, ASN_INTEGER   , RONLY , var_dot11StationConfigTable, 4, { 1,1,1,19 } },
-+#define   DOT11AUTHENTICATEFAILSTATION  22
-+  { DOT11AUTHENTICATEFAILSTATION, ASN_OCTET_STR , RONLY , var_dot11StationConfigTable, 4, { 1,1,1,20 } },
-+
-+#define   DOT11AUTHENTICATIONALGORITHM  26
-+  { DOT11AUTHENTICATIONALGORITHM, ASN_INTEGER   , RONLY , var_dot11AuthenticationAlgorithmsTable, 4, { 1,2,1,2 } },
-+#define   DOT11AUTHENTICATIONALGORITHMSENABLE  27
-+  { DOT11AUTHENTICATIONALGORITHMSENABLE, ASN_INTEGER   , RWRITE, var_dot11AuthenticationAlgorithmsTable, 4, { 1,2,1,3 } },
-+
-+#define   DOT11WEPDEFAULTKEYVALUE  31
-+  { DOT11WEPDEFAULTKEYVALUE, ASN_OCTET_STR , RWRITE, var_dot11WEPDefaultKeysTable, 4, { 1,3,1,2 } },
-+
-+#define   DOT11WEPKEYMAPPINGADDRESS  35
-+  { DOT11WEPKEYMAPPINGADDRESS, ASN_OCTET_STR , RWRITE, var_dot11WEPKeyMappingsTable, 4, { 1,4,1,2 } },
-+#define   DOT11WEPKEYMAPPINGWEPON  36
-+  { DOT11WEPKEYMAPPINGWEPON, ASN_INTEGER   , RWRITE, var_dot11WEPKeyMappingsTable, 4, { 1,4,1,3 } },
-+#define   DOT11WEPKEYMAPPINGVALUE  37
-+  { DOT11WEPKEYMAPPINGVALUE, ASN_OCTET_STR , RWRITE, var_dot11WEPKeyMappingsTable, 4, { 1,4,1,4 } },
-+#define   DOT11WEPKEYMAPPINGSTATUS  38
-+  { DOT11WEPKEYMAPPINGSTATUS, ASN_INTEGER   , RWRITE, var_dot11WEPKeyMappingsTable, 4, { 1,4,1,5 } },
-+
-+#define   DOT11PRIVACYINVOKED   41
-+  { DOT11PRIVACYINVOKED , ASN_INTEGER   , RWRITE, var_dot11PrivacyTable, 4, { 1,5,1,1 } },
-+#define   DOT11WEPDEFAULTKEYID  42
-+  { DOT11WEPDEFAULTKEYID, ASN_INTEGER   , RWRITE, var_dot11PrivacyTable, 4, { 1,5,1,2 } },
-+#define   DOT11WEPKEYMAPPINGLENGTH  43
-+  { DOT11WEPKEYMAPPINGLENGTH, ASN_INTEGER   , RWRITE, var_dot11PrivacyTable, 4, { 1,5,1,3 } },
-+#define   DOT11EXCLUDEUNENCRYPTED  44
-+  { DOT11EXCLUDEUNENCRYPTED, ASN_INTEGER   , RWRITE, var_dot11PrivacyTable, 4, { 1,5,1,4 } },
-+#define   DOT11WEPICVERRORCOUNT  45
-+  { DOT11WEPICVERRORCOUNT, ASN_COUNTER   , RONLY , var_dot11PrivacyTable, 4, { 1,5,1,5 } },
-+#define   DOT11WEPEXCLUDEDCOUNT  46
-+  { DOT11WEPEXCLUDEDCOUNT, ASN_COUNTER   , RONLY , var_dot11PrivacyTable, 4, { 1,5,1,6 } },
-+
-+#define   DOT11MACADDRESS       49
-+  { DOT11MACADDRESS     , ASN_OCTET_STR , RONLY , var_dot11OperationTable, 4, { 2,1,1,1 } },
-+#define   DOT11RTSTHRESHOLD     50
-+  { DOT11RTSTHRESHOLD   , ASN_INTEGER   , RWRITE, var_dot11OperationTable, 4, { 2,1,1,2 } },
-+#define   DOT11SHORTRETRYLIMIT  51
-+  { DOT11SHORTRETRYLIMIT, ASN_INTEGER   , RWRITE, var_dot11OperationTable, 4, { 2,1,1,3 } },
-+#define   DOT11LONGRETRYLIMIT   52
-+  { DOT11LONGRETRYLIMIT , ASN_INTEGER   , RWRITE, var_dot11OperationTable, 4, { 2,1,1,4 } },
-+#define   DOT11FRAGMENTATIONTHRESHOLD  53
-+  { DOT11FRAGMENTATIONTHRESHOLD, ASN_INTEGER   , RWRITE, var_dot11OperationTable, 4, { 2,1,1,5 } },
-+#define   DOT11MAXTRANSMITMSDULIFETIME  54
-+  { DOT11MAXTRANSMITMSDULIFETIME, ASN_INTEGER   , RWRITE, var_dot11OperationTable, 4, { 2,1,1,6 } },
-+#define   DOT11MAXRECEIVELIFETIME  55
-+  { DOT11MAXRECEIVELIFETIME, ASN_INTEGER   , RWRITE, var_dot11OperationTable, 4, { 2,1,1,7 } },
-+#define   DOT11MANUFACTURERID   56
-+  { DOT11MANUFACTURERID , ASN_OCTET_STR , RONLY , var_dot11OperationTable, 4, { 2,1,1,8 } },
-+#define   DOT11PRODUCTID        57
-+  { DOT11PRODUCTID      , ASN_OCTET_STR , RONLY , var_dot11OperationTable, 4, { 2,1,1,9 } },
-+
-+#define   DOT11TRANSMITTEDFRAGMENTCOUNT  60
-+  { DOT11TRANSMITTEDFRAGMENTCOUNT, ASN_COUNTER   , RONLY , var_dot11CountersTable, 4, { 2,2,1,1 } },
-+#define   DOT11MULTICASTTRANSMITTEDFRAMECOUNT  61
-+  { DOT11MULTICASTTRANSMITTEDFRAMECOUNT, ASN_COUNTER   , RONLY , var_dot11CountersTable, 4, { 2,2,1,2 } },
-+#define   DOT11FAILEDCOUNT      62
-+  { DOT11FAILEDCOUNT    , ASN_COUNTER   , RONLY , var_dot11CountersTable, 4, { 2,2,1,3 } },
-+#define   DOT11RETRYCOUNT       63
-+  { DOT11RETRYCOUNT     , ASN_COUNTER   , RONLY , var_dot11CountersTable, 4, { 2,2,1,4 } },
-+#define   DOT11MULTIPLERETRYCOUNT  64
-+  { DOT11MULTIPLERETRYCOUNT, ASN_COUNTER   , RONLY , var_dot11CountersTable, 4, { 2,2,1,5 } },
-+#define   DOT11FRAMEDUPLICATECOUNT  65
-+  { DOT11FRAMEDUPLICATECOUNT, ASN_COUNTER   , RONLY , var_dot11CountersTable, 4, { 2,2,1,6 } },
-+#define   DOT11RTSSUCCESSCOUNT  66
-+  { DOT11RTSSUCCESSCOUNT, ASN_COUNTER   , RONLY , var_dot11CountersTable, 4, { 2,2,1,7 } },
-+#define   DOT11RTSFAILURECOUNT  67
-+  { DOT11RTSFAILURECOUNT, ASN_COUNTER   , RONLY , var_dot11CountersTable, 4, { 2,2,1,8 } },
-+#define   DOT11ACKFAILURECOUNT  68
-+  { DOT11ACKFAILURECOUNT, ASN_COUNTER   , RONLY , var_dot11CountersTable, 4, { 2,2,1,9 } },
-+#define   DOT11RECEIVEDFRAGMENTCOUNT  69
-+  { DOT11RECEIVEDFRAGMENTCOUNT, ASN_COUNTER   , RONLY , var_dot11CountersTable, 4, { 2,2,1,10 } },
-+#define   DOT11MULTICASTRECEIVEDFRAMECOUNT  70
-+  { DOT11MULTICASTRECEIVEDFRAMECOUNT, ASN_COUNTER   , RONLY , var_dot11CountersTable, 4, { 2,2,1,11 } },
-+#define   DOT11FCSERRORCOUNT    71
-+  { DOT11FCSERRORCOUNT  , ASN_COUNTER   , RONLY , var_dot11CountersTable, 4, { 2,2,1,12 } },
-+#define   DOT11TRANSMITTEDFRAMECOUNT  72
-+  { DOT11TRANSMITTEDFRAMECOUNT, ASN_COUNTER   , RONLY , var_dot11CountersTable, 4, { 2,2,1,13 } },
-+#define   DOT11WEPUNDECRYPTABLECOUNT  73
-+  { DOT11WEPUNDECRYPTABLECOUNT, ASN_COUNTER   , RONLY , var_dot11CountersTable, 4, { 2,2,1,14 } },
-+
-+#define   DOT11ADDRESS          77
-+  { DOT11ADDRESS        , ASN_OCTET_STR , RWRITE, var_dot11GroupAddressesTable, 4, { 2,3,1,2 } },
-+#define   DOT11GROUPADDRESSESSTATUS  78
-+  { DOT11GROUPADDRESSESSTATUS, ASN_INTEGER   , RWRITE, var_dot11GroupAddressesTable, 4, { 2,3,1,3 } },
-+
-+#define   DOT11RESOURCETYPEIDNAME  79
-+  { DOT11RESOURCETYPEIDNAME, ASN_OCTET_STR , RONLY , var_ieee802dot11, 3, { 3,1,1 } },
-+#define   DOT11MANUFACTUREROUI  82
-+  { DOT11MANUFACTUREROUI, ASN_OCTET_STR , RONLY , var_dot11ResourceInfoTable, 5, { 3,1,2,1,1 } },
-+#define   DOT11MANUFACTURERNAME  83
-+  { DOT11MANUFACTURERNAME, ASN_OCTET_STR , RONLY , var_dot11ResourceInfoTable, 5, { 3,1,2,1,2 } },
-+#define   DOT11MANUFACTURERPRODUCTNAME  84
-+  { DOT11MANUFACTURERPRODUCTNAME, ASN_OCTET_STR , RONLY , var_dot11ResourceInfoTable, 5, { 3,1,2,1,3 } },
-+#define   DOT11MANUFACTURERPRODUCTVERSION  85
-+  { DOT11MANUFACTURERPRODUCTVERSION, ASN_OCTET_STR , RONLY , var_dot11ResourceInfoTable, 5, { 3,1,2,1,4 } },
-+
-+#define   DOT11PHYTYPE          88
-+  { DOT11PHYTYPE        , ASN_INTEGER   , RONLY , var_dot11PhyOperationTable, 4, { 4,1,1,1 } },
-+#define   DOT11CURRENTREGDOMAIN  89
-+  { DOT11CURRENTREGDOMAIN, ASN_INTEGER   , RWRITE, var_dot11PhyOperationTable, 4, { 4,1,1,2 } },
-+#define   DOT11TEMPTYPE         90
-+  { DOT11TEMPTYPE       , ASN_INTEGER   , RONLY , var_dot11PhyOperationTable, 4, { 4,1,1,3 } },
-+#define   DOT11CURRENTTXANTENNA  93
-+  { DOT11CURRENTTXANTENNA, ASN_INTEGER   , RWRITE, var_dot11PhyAntennaTable, 4, { 4,2,1,1 } },
-+#define   DOT11DIVERSITYSUPPORT  94
-+  { DOT11DIVERSITYSUPPORT, ASN_INTEGER   , RONLY , var_dot11PhyAntennaTable, 4, { 4,2,1,2 } },
-+#define   DOT11CURRENTRXANTENNA  95
-+  { DOT11CURRENTRXANTENNA, ASN_INTEGER   , RWRITE, var_dot11PhyAntennaTable, 4, { 4,2,1,3 } },
-+#define   DOT11NUMBERSUPPORTEDPOWERLEVELS  98
-+  { DOT11NUMBERSUPPORTEDPOWERLEVELS, ASN_INTEGER   , RONLY , var_dot11PhyTxPowerTable, 4, { 4,3,1,1 } },
-+#define   DOT11TXPOWERLEVEL1    99
-+  { DOT11TXPOWERLEVEL1  , ASN_INTEGER   , RONLY , var_dot11PhyTxPowerTable, 4, { 4,3,1,2 } },
-+#define   DOT11TXPOWERLEVEL2    100
-+  { DOT11TXPOWERLEVEL2  , ASN_INTEGER   , RONLY , var_dot11PhyTxPowerTable, 4, { 4,3,1,3 } },
-+#define   DOT11TXPOWERLEVEL3    101
-+  { DOT11TXPOWERLEVEL3  , ASN_INTEGER   , RONLY , var_dot11PhyTxPowerTable, 4, { 4,3,1,4 } },
-+#define   DOT11TXPOWERLEVEL4    102
-+  { DOT11TXPOWERLEVEL4  , ASN_INTEGER   , RONLY , var_dot11PhyTxPowerTable, 4, { 4,3,1,5 } },
-+#define   DOT11TXPOWERLEVEL5    103
-+  { DOT11TXPOWERLEVEL5  , ASN_INTEGER   , RONLY , var_dot11PhyTxPowerTable, 4, { 4,3,1,6 } },
-+#define   DOT11TXPOWERLEVEL6    104
-+  { DOT11TXPOWERLEVEL6  , ASN_INTEGER   , RONLY , var_dot11PhyTxPowerTable, 4, { 4,3,1,7 } },
-+#define   DOT11TXPOWERLEVEL7    105
-+  { DOT11TXPOWERLEVEL7  , ASN_INTEGER   , RONLY , var_dot11PhyTxPowerTable, 4, { 4,3,1,8 } },
-+#define   DOT11TXPOWERLEVEL8    106
-+  { DOT11TXPOWERLEVEL8  , ASN_INTEGER   , RONLY , var_dot11PhyTxPowerTable, 4, { 4,3,1,9 } },
-+#define   DOT11CURRENTTXPOWERLEVEL  107
-+  { DOT11CURRENTTXPOWERLEVEL, ASN_INTEGER   , RWRITE, var_dot11PhyTxPowerTable, 4, { 4,3,1,10 } },
-+
-+#define   DOT11HOPTIME          110
-+  { DOT11HOPTIME        , ASN_INTEGER   , RONLY , var_dot11PhyFHSSTable, 4, { 4,4,1,1 } },
-+#define   DOT11CURRENTCHANNELNUMBER  111
-+  { DOT11CURRENTCHANNELNUMBER, ASN_INTEGER   , RWRITE, var_dot11PhyFHSSTable, 4, { 4,4,1,2 } },
-+#define   DOT11MAXDWELLTIME     112
-+  { DOT11MAXDWELLTIME   , ASN_INTEGER   , RONLY , var_dot11PhyFHSSTable, 4, { 4,4,1,3 } },
-+#define   DOT11CURRENTDWELLTIME  113
-+  { DOT11CURRENTDWELLTIME, ASN_INTEGER   , RWRITE, var_dot11PhyFHSSTable, 4, { 4,4,1,4 } },
-+#define   DOT11CURRENTSET       114
-+  { DOT11CURRENTSET     , ASN_INTEGER   , RWRITE, var_dot11PhyFHSSTable, 4, { 4,4,1,5 } },
-+#define   DOT11CURRENTPATTERN   115
-+  { DOT11CURRENTPATTERN , ASN_INTEGER   , RWRITE, var_dot11PhyFHSSTable, 4, { 4,4,1,6 } },
-+#define   DOT11CURRENTINDEX     116
-+  { DOT11CURRENTINDEX   , ASN_INTEGER   , RWRITE, var_dot11PhyFHSSTable, 4, { 4,4,1,7 } },
-+
-+#define   DOT11CURRENTCHANNEL   119
-+  { DOT11CURRENTCHANNEL , ASN_INTEGER   , RWRITE, var_dot11PhyDSSSTable, 4, { 4,5,1,1 } },
-+#define   DOT11CCAMODESUPPORTED  120
-+  { DOT11CCAMODESUPPORTED, ASN_INTEGER   , RONLY , var_dot11PhyDSSSTable, 4, { 4,5,1,2 } },
-+#define   DOT11CURRENTCCAMODE   121
-+  { DOT11CURRENTCCAMODE , ASN_INTEGER   , RWRITE, var_dot11PhyDSSSTable, 4, { 4,5,1,3 } },
-+#define   DOT11EDTHRESHOLD      122
-+  { DOT11EDTHRESHOLD    , ASN_INTEGER   , RWRITE, var_dot11PhyDSSSTable, 4, { 4,5,1,4 } },
-+
-+#define   DOT11CCAWATCHDOGTIMERMAX  125
-+  { DOT11CCAWATCHDOGTIMERMAX, ASN_INTEGER   , RWRITE, var_dot11PhyIRTable, 4, { 4,6,1,1 } },
-+#define   DOT11CCAWATCHDOGCOUNTMAX  126
-+  { DOT11CCAWATCHDOGCOUNTMAX, ASN_INTEGER   , RWRITE, var_dot11PhyIRTable, 4, { 4,6,1,2 } },
-+#define   DOT11CCAWATCHDOGTIMERMIN  127
-+  { DOT11CCAWATCHDOGTIMERMIN, ASN_INTEGER   , RWRITE, var_dot11PhyIRTable, 4, { 4,6,1,3 } },
-+#define   DOT11CCAWATCHDOGCOUNTMIN  128
-+  { DOT11CCAWATCHDOGCOUNTMIN, ASN_INTEGER   , RWRITE, var_dot11PhyIRTable, 4, { 4,6,1,4 } },
-+
-+#define   DOT11REGDOMAINSSUPPORTVALUE  132
-+  { DOT11REGDOMAINSSUPPORTVALUE, ASN_INTEGER   , RONLY , var_dot11RegDomainsSupportedTable, 4, { 4,7,1,2 } },
-+
-+#define   DOT11SUPPORTEDTXANTENNA  136
-+  { DOT11SUPPORTEDTXANTENNA, ASN_INTEGER   , RWRITE, var_dot11AntennasListTable, 4, { 4,8,1,2 } },
-+#define   DOT11SUPPORTEDRXANTENNA  137
-+  { DOT11SUPPORTEDRXANTENNA, ASN_INTEGER   , RWRITE, var_dot11AntennasListTable, 4, { 4,8,1,3 } },
-+#define   DOT11DIVERSITYSELECTIONRX  138
-+  { DOT11DIVERSITYSELECTIONRX, ASN_INTEGER   , RWRITE, var_dot11AntennasListTable, 4, { 4,8,1,4 } },
-+
-+#define   DOT11SUPPORTEDDATARATESTXVALUE  142
-+  { DOT11SUPPORTEDDATARATESTXVALUE, ASN_INTEGER   , RONLY , var_dot11SupportedDataRatesTxTable, 4, { 4,9,1,2 } },
-+
-+#define   DOT11SUPPORTEDDATARATESRXVALUE  146
-+  { DOT11SUPPORTEDDATARATESRXVALUE, ASN_INTEGER   , RONLY , var_dot11SupportedDataRatesRxTable, 4, { 4,10,1,2 } },
-+};
-+// ( L = length of the oidsuffix )
-+
-+/****************************************************************************
-+*                                                                           *
-+*         init_ieee802dot11() - perform any required initialization         *
-+*                                                                           *
-+****************************************************************************/
-+void init_ieee802dot11 ( void ) {
-+
-+  /* register ourselves with the agent to handle our mib tree */
-+  REGISTER_MIB("ieee802dot11", ieee802dot11_variables, variable7,
-+               ieee802dot11_variables_oid);
-+
-+  initLists();
-+}
-+
-+/****************************************************************************
-+*                                                                           *
-+*    shutdown_ieee802dot11() - perform any required cleanup @ shutdown      *
-+*                                                                           *
-+****************************************************************************/
-+void shutdown_ieee802dot11 ( void )
-+{
-+  flushLists();
-+}
-+
-+/****************************************************************************
-+*                                                                           *
-+*   var_ieee802dot11() -                                                    *
-+*                                                                           *
-+****************************************************************************/
-+unsigned char *
-+var_ieee802dot11 ( struct variable *vp, 
-+                    oid     *name, 
-+                    size_t  *length, 
-+                    int     exact, 
-+                    size_t  *var_len, 
-+                    WriteMethod **write_method)
-+{
-+  loadTables();                                               
-+
-+  if ( header_generic ( vp, name, length, exact,var_len,write_method )
-+                                  == MATCH_FAILED )
-+    return NULL;
-+
-+  switch ( vp->magic ) {
-+
-+    case DOT11RESOURCETYPEIDNAME:
-+      if ( !haveResourceTypeIDName )
-+        return NULL;
-+      *var_len = strlen ( resourceTypeIDName );
-+      return ( UCHAR * ) resourceTypeIDName;
-+
-+    default:
-+      ERROR_MSG ( "" );
-+  }
-+
-+  return NULL;
-+}
-+
-+/****************************************************************************
-+*                                                                           *
-+*  var_dot11StationConfigTable() - return a variable value from the table   *
-+*                                                                           *
-+****************************************************************************/
-+unsigned char *
-+var_dot11StationConfigTable ( struct variable *vp,
-+                              oid     *name,
-+                              size_t  *length,
-+                              int     exact,
-+                              size_t  *var_len,
-+                              WriteMethod **write_method )
-+{
-+  int found = FALSE;
-+  oid rName [ MAX_OID_LEN ];                            // OID to be returned
-+  static char MACWork[17];
-+
-+  loadTables();
-+  memcpy (( char * ) rName, ( char * ) vp->name, ( int ) vp->namelen * sizeof ( oid ));
-+  for ( np = LIST_FIRST ( &scList ); np != NULL; np = LIST_NEXT ( np, nodes )) {
-+    sc = ( struct scTbl_data * ) np->data;
-+    rName[vp->namelen] = sc->ifIndex;
-+    if ((  exact && ( snmp_oid_compare ( rName, vp->namelen + 1, name, *length ) == 0 )) || 
-+        ( !exact && ( snmp_oid_compare ( rName, vp->namelen + 1, name, *length ) >  0 ))) {
-+
-+      switch ( vp->magic ) {      // found requested OID, now check for requested variable
-+        case DOT11STATIONID: 
-+          if ( sc->haveStationID                     ) found = TRUE; break;
-+        case DOT11MEDIUMOCCUPANCYLIMIT:
-+          if ( sc->haveMediumOccupancyLimit          ) found = TRUE; break;
-+        case DOT11CFPOLLABLE:
-+          if ( sc->haveCFPPollable                   ) found = TRUE; break;
-+        case DOT11CFPPERIOD:
-+          if ( sc->haveCFPPeriod                     ) found = TRUE; break;
-+        case DOT11CFPMAXDURATION:
-+          if ( sc->haveMaxDuration                   ) found = TRUE; break;
-+        case DOT11AUTHENTICATIONRESPONSETIMEOUT:
-+          if ( sc->haveAuthenticationResponseTimeOut ) found = TRUE; break;
-+        case DOT11PRIVACYOPTIONIMPLEMENTED:
-+          if ( sc->havePrivacyOptionImplemented      ) found = TRUE; break;
-+        case DOT11POWERMANAGEMENTMODE:
-+          if ( sc->havePowerManagementMode           ) found = TRUE; break;
-+        case DOT11DESIREDSSID:
-+          if ( sc->haveDesiredSSID                   ) found = TRUE; break;
-+        case DOT11DESIREDBSSTYPE:
-+          if ( sc->haveDesiredBSSType                ) found = TRUE; break;
-+        case DOT11OPERATIONALRATESET:
-+          if ( sc->haveOperationalRateSet            ) found = TRUE; break;
-+        case DOT11BEACONPERIOD: 
-+          if ( sc->haveBeaconPeriod                  ) found = TRUE; break;
-+        case DOT11DTIMPERIOD:
-+          if ( sc->haveDTIMPeriod                    ) found = TRUE; break;
-+        case DOT11ASSOCIATIONRESPONSETIMEOUT:
-+          if ( sc->haveAssociationResponseTimeOut    ) found = TRUE; break;
-+        case DOT11DISASSOCIATEREASON:
-+          if ( sc->disAssociationReason              ) found = TRUE; break;
-+        case DOT11DISASSOCIATESTATION:
-+          if ( sc->haveDisAssociationStation         ) found = TRUE; break;
-+        case DOT11DEAUTHENTICATEREASON:
-+          if ( sc->deAuthenticationReason            ) found = TRUE; break;
-+        case DOT11DEAUTHENTICATESTATION:
-+          if ( sc->haveDeAuthenticationStation       ) found = TRUE; break;
-+        case DOT11AUTHENTICATEFAILSTATUS:
-+          if ( sc->authenticateFailStatus            ) found = TRUE; break;
-+        case DOT11AUTHENTICATEFAILSTATION:
-+          if ( sc->haveAuthenticateFailStation       ) found = TRUE; break;
-+      }
-+    }
-+    if ( found )
-+      break;
-+  }
-+
-+  if ( !found ) 
-+    return NULL;
-+
-+  memcpy (( char * ) name, ( char * ) rName, ( vp->namelen + 1 ) * sizeof ( oid ));
-+  *length = vp->namelen + 1;
-+  *var_len = sizeof ( long );
-+  *write_method = NULL;
-+
-+  switch ( vp->magic ) {
-+
-+    case DOT11STATIONID: 
-+//    *write_method = write_dot11StationID;
-+      MACWork[ 0] = sc->stationID [ 0];
-+      MACWork[ 1] = sc->stationID [ 1];
-+      MACWork[ 2] = sc->stationID [ 3];
-+      MACWork[ 3] = sc->stationID [ 4];
-+      MACWork[ 4] = sc->stationID [ 6];
-+      MACWork[ 5] = sc->stationID [ 7];
-+      MACWork[ 6] = sc->stationID [ 9];
-+      MACWork[ 7] = sc->stationID [10];
-+      MACWork[ 8] = sc->stationID [12];
-+      MACWork[ 9] = sc->stationID [13];
-+      MACWork[10] = sc->stationID [15];
-+      MACWork[11] = sc->stationID [16];
-+      MACWork[12] = '\0';
-+      *var_len = 6;
-+      return ( UCHAR * ) htob ( MACWork );
-+
-+    case DOT11MEDIUMOCCUPANCYLIMIT:
-+//    *write_method = write_dot11MediumOccupancyLimit;
-+      sc->mediumOccupancyLimit = 5;
-+      return ( UCHAR * ) &sc->mediumOccupancyLimit;
-+
-+    case DOT11CFPOLLABLE:
-+      return ( UCHAR * ) &sc->CFPPollable;
-+
-+    case DOT11CFPPERIOD:
-+//    *write_method = write_dot11CFPPeriod;
-+      return ( UCHAR * ) &sc->CFPPeriod;
-+
-+    case DOT11CFPMAXDURATION:
-+//    *write_method = write_dot11CFPMaxDuration;
-+      return ( UCHAR * ) &sc->maxDuration;
-+
-+    case DOT11AUTHENTICATIONRESPONSETIMEOUT:
-+//    *write_method = write_dot11AuthenticationResponseTimeOut;
-+      return ( UCHAR * ) &sc->authenticationResponseTimeOut;
-+
-+    case DOT11PRIVACYOPTIONIMPLEMENTED:
-+      return ( UCHAR * ) &sc->privacyOptionImplemented;
-+
-+    case DOT11POWERMANAGEMENTMODE:
-+//    *write_method = write_dot11PowerManagementMode;
-+      return ( UCHAR * ) &sc->powerManagementMode;
-+
-+    case DOT11DESIREDSSID:
-+//    *write_method = write_dot11DesiredSSID;
-+      *var_len = strlen ( sc->desiredSSID );
-+      return ( UCHAR * ) sc->desiredSSID;
-+
-+    case DOT11DESIREDBSSTYPE:
-+//    *write_method = write_dot11DesiredBSSType;
-+      return ( UCHAR * ) &sc->desiredBSSType;
-+
-+    case DOT11OPERATIONALRATESET:
-+//    *write_method = write_dot11OperationalRateSet;
-+      *var_len = strlen ( sc->operationalRateSet );
-+      return ( UCHAR * ) sc->operationalRateSet;
-+
-+    case DOT11BEACONPERIOD: 
-+//    *write_method = write_dot11BeaconPeriod;
-+      return ( UCHAR * ) &sc->beaconPeriod;
-+
-+    case DOT11DTIMPERIOD:
-+//    *write_method = write_dot11DTIMPeriod;
-+      return ( UCHAR * ) &sc->DTIMPeriod;
-+
-+    case DOT11ASSOCIATIONRESPONSETIMEOUT:
-+//    *write_method = write_dot11AssociationResponseTimeOut;
-+      return ( UCHAR * ) &sc->associationResponseTimeOut;
-+
-+    case DOT11DISASSOCIATEREASON:
-+      return ( UCHAR * ) &sc->disAssociationReason;
-+
-+    case DOT11DISASSOCIATESTATION:
-+      MACWork[ 0] = sc->disAssociationStation[ 0];
-+      MACWork[ 1] = sc->disAssociationStation[ 1];
-+      MACWork[ 2] = sc->disAssociationStation[ 3];
-+      MACWork[ 3] = sc->disAssociationStation[ 4];
-+      MACWork[ 4] = sc->disAssociationStation[ 6];
-+      MACWork[ 5] = sc->disAssociationStation[ 7];
-+      MACWork[ 6] = sc->disAssociationStation[ 9];
-+      MACWork[ 7] = sc->disAssociationStation[10];
-+      MACWork[ 8] = sc->disAssociationStation[12];
-+      MACWork[ 9] = sc->disAssociationStation[13];
-+      MACWork[10] = sc->disAssociationStation[15];
-+      MACWork[11] = sc->disAssociationStation[16];
-+      MACWork[12] = '\0';
-+      *var_len = 6;
-+      return ( UCHAR * ) htob ( MACWork );
-+
-+    case DOT11DEAUTHENTICATEREASON:
-+      return ( UCHAR * ) &sc->deAuthenticationReason;
-+
-+    case DOT11DEAUTHENTICATESTATION:
-+      MACWork[ 0] = sc->deAuthenticationStation[ 0];
-+      MACWork[ 1] = sc->deAuthenticationStation[ 1];
-+      MACWork[ 2] = sc->deAuthenticationStation[ 3];
-+      MACWork[ 3] = sc->deAuthenticationStation[ 4];
-+      MACWork[ 4] = sc->deAuthenticationStation[ 6];
-+      MACWork[ 5] = sc->deAuthenticationStation[ 7];
-+      MACWork[ 6] = sc->deAuthenticationStation[ 9];
-+      MACWork[ 7] = sc->deAuthenticationStation[10];
-+      MACWork[ 8] = sc->deAuthenticationStation[12];
-+      MACWork[ 9] = sc->deAuthenticationStation[13];
-+      MACWork[10] = sc->deAuthenticationStation[15];
-+      MACWork[11] = sc->deAuthenticationStation[16];
-+      MACWork[12] = '\0';
-+      *var_len = 6;
-+      return ( UCHAR * ) htob ( MACWork );
-+
-+    case DOT11AUTHENTICATEFAILSTATUS:
-+      return ( UCHAR * ) &sc->authenticateFailStatus;
-+
-+    case DOT11AUTHENTICATEFAILSTATION:
-+      MACWork[ 0] = sc->authenticateFailStation[ 0];
-+      MACWork[ 1] = sc->authenticateFailStation[ 1];
-+      MACWork[ 2] = sc->authenticateFailStation[ 3];
-+      MACWork[ 3] = sc->authenticateFailStation[ 4];
-+      MACWork[ 4] = sc->authenticateFailStation[ 6];
-+      MACWork[ 5] = sc->authenticateFailStation[ 7];
-+      MACWork[ 6] = sc->authenticateFailStation[ 9];
-+      MACWork[ 7] = sc->authenticateFailStation[10];
-+      MACWork[ 8] = sc->authenticateFailStation[12];
-+      MACWork[ 9] = sc->authenticateFailStation[13];
-+      MACWork[10] = sc->authenticateFailStation[15];
-+      MACWork[11] = sc->authenticateFailStation[16];
-+      MACWork[12] = '\0';
-+      *var_len = 6;
-+      return ( UCHAR * ) htob ( MACWork );
-+
-+    default:
-+      ERROR_MSG ( "" );
-+  }
-+
-+  return NULL;
-+}
-+
-+/****************************************************************************
-+*                                                                           *
-+*  var_dot11AuthenticationAlgorithmsTable() -                               *
-+*                                                                           *
-+****************************************************************************/
-+unsigned char *
-+var_dot11AuthenticationAlgorithmsTable (  struct variable *vp,
-+                                          oid     *name,
-+                                          size_t  *length,
-+                                          int     exact,
-+                                          size_t  *var_len,
-+                                          WriteMethod **write_method )
-+{
-+  int found = FALSE;
-+  oid rName [ MAX_OID_LEN ];                            // OID to be returned
-+
-+  loadTables();
-+  memcpy (( char * ) rName, ( char * ) vp->name, ( int ) vp->namelen * sizeof ( oid ));
-+  for ( np = LIST_FIRST ( &aaList ); np != NULL; np = LIST_NEXT ( np, nodes )) {
-+    aa = ( struct aaTbl_data * ) np->data;
-+    rName[vp->namelen + 0] = aa->ifIndex;
-+    rName[vp->namelen + 1] = aa->authenticationAlgorithmsIndex;
-+    if ((  exact && ( snmp_oid_compare ( rName, vp->namelen + 2, name, *length ) == 0 )) ||
-+        ( !exact && ( snmp_oid_compare ( rName, vp->namelen + 2, name, *length ) >  0 ))) {
-+      switch ( vp->magic ) {
-+        case DOT11AUTHENTICATIONALGORITHM:
-+          if ( aa->haveAuthenticationAlgorithm    ) found = TRUE; break;
-+        case DOT11AUTHENTICATIONALGORITHMSENABLE:
-+          if ( aa->authenticationAlgorithmsEnable ) found = TRUE; break;
-+      }
-+    }
-+    if ( found )
-+      break;
-+  }
-+
-+  if ( !found ) 
-+    return NULL;
-+
-+  memcpy (( char * ) name, ( char * ) rName, ( vp->namelen + 2 ) * sizeof ( oid ));
-+  *length = vp->namelen + 2;
-+  *var_len = sizeof ( long );
-+  *write_method = NULL;
-+
-+  switch ( vp->magic ) {
-+
-+    case DOT11AUTHENTICATIONALGORITHM:
-+      return ( UCHAR * ) &aa->authenticationAlgorithm;
-+        
-+    case DOT11AUTHENTICATIONALGORITHMSENABLE:
-+//    *write_method = write_dot11AuthenticationAlgorithmsEnable;
-+      return ( UCHAR * ) &aa->authenticationAlgorithmsEnable;
-+
-+    default:
-+      ERROR_MSG ( "" );
-+  }
-+
-+  return NULL;
-+}
-+
-+/****************************************************************************
-+*                                                                           *
-+*  var_dot11WEPDefaultKeysTable() -                                         *
-+*                                                                           *
-+****************************************************************************/
-+unsigned char *
-+var_dot11WEPDefaultKeysTable ( struct variable *vp,
-+                                oid     *name,
-+                                size_t  *length,
-+                                int     exact,
-+                                size_t  *var_len,
-+                                WriteMethod **write_method )
-+{
-+  int found = FALSE;
-+  oid rName [ MAX_OID_LEN ];                            // OID to be returned
-+
-+  loadTables();
-+  memcpy (( char * ) rName, ( char * ) vp->name, ( int ) vp->namelen * sizeof ( oid ));
-+  for ( np = LIST_FIRST ( &dfList ); np != NULL; np = LIST_NEXT ( np, nodes )) {
-+    df = ( struct dfTbl_data * ) np->data;
-+    rName[vp->namelen + 0] = df->ifIndex;
-+    rName[vp->namelen + 1] = df->WEPDefaultKeyIndex;
-+    if ((  exact && ( snmp_oid_compare ( rName, vp->namelen + 2, name, *length ) == 0 )) ||
-+        ( !exact && ( snmp_oid_compare ( rName, vp->namelen + 2, name, *length ) >  0 ))) {
-+      switch ( vp->magic ) {
-+        case DOT11WEPDEFAULTKEYVALUE:
-+          if ( df->haveWEPDefaultKeyValue ) found = TRUE; break;
-+      }          
-+    }          
-+    if ( found )
-+      break;
-+  }
-+
-+  if ( !found ) 
-+    return NULL;
-+
-+  memcpy (( char * ) name, ( char * ) rName, ( vp->namelen + 2 ) * sizeof ( oid ));
-+  *length = vp->namelen + 2;
-+  *var_len = sizeof ( long );
-+  *write_method = NULL;
-+
-+  switch ( vp->magic ) {
-+
-+    case DOT11WEPDEFAULTKEYVALUE:
-+//    *write_method = write_dot11WEPDefaultKeyValue;
-+      *var_len = strlen ( df->WEPDefaultKeyValue );
-+      return ( UCHAR * ) df->WEPDefaultKeyValue;
-+
-+    default:
-+      ERROR_MSG ( "" );
-+  }
-+
-+  return NULL;
-+}
-+
-+/****************************************************************************
-+*                                                                           *
-+*  var_dot11WEPKeyMappingsTable() -                                         *
-+*                                                                           *
-+****************************************************************************/
-+unsigned char *
-+var_dot11WEPKeyMappingsTable ( struct variable *vp,
-+                                oid     *name,
-+                                size_t  *length,
-+                                int     exact,
-+                                size_t  *var_len,
-+                                WriteMethod **write_method)
-+{
-+  static char MACWork[17];
-+  int found = FALSE;
-+  oid rName [ MAX_OID_LEN ];                            // OID to be returned
-+
-+  loadTables();
-+  memcpy (( char * ) rName, ( char * ) vp->name, ( int ) vp->namelen * sizeof ( oid ));
-+  for ( np = LIST_FIRST ( &kmList ); np != NULL; np = LIST_NEXT ( np, nodes )) {
-+    km = ( struct kmTbl_data * ) np->data;
-+    rName[vp->namelen + 0] = km->ifIndex;
-+    rName[vp->namelen + 1] = km->WEPKeyMappingIndex;
-+    if ((  exact && ( snmp_oid_compare ( rName, vp->namelen + 2, name, *length ) == 0 )) ||
-+        ( !exact && ( snmp_oid_compare ( rName, vp->namelen + 2, name, *length ) >  0 ))) {
-+      switch ( vp->magic ) {
-+        case DOT11WEPKEYMAPPINGADDRESS:
-+          if ( km->haveWEPKeyMappingAddress ) found = TRUE; break;
-+        case DOT11WEPKEYMAPPINGWEPON:
-+          if ( km->haveWEPKeyMappingWEPOn   ) found = TRUE; break;
-+        case DOT11WEPKEYMAPPINGVALUE:
-+          if ( km->haveWEPKeyMappingValue   ) found = TRUE; break;
-+        case DOT11WEPKEYMAPPINGSTATUS:
-+          if ( km->haveWEPKeyMappingStatus  ) found = TRUE; break; 
-+      }
-+    }
-+    if ( found )
-+      break;
-+  }
-+
-+  if ( !found ) 
-+    return NULL;
-+
-+  memcpy (( char * ) name, ( char * ) rName, ( vp->namelen + 2 ) * sizeof ( oid ));
-+  *length = vp->namelen + 2;
-+  *var_len = sizeof ( long );
-+  *write_method = NULL;
-+
-+  switch ( vp->magic ) {
-+
-+    case DOT11WEPKEYMAPPINGADDRESS:
-+//    *write_method = write_dot11WEPKeyMappingAddress;
-+      MACWork[ 0] = km->WEPKeyMappingAddress[ 0];
-+      MACWork[ 1] = km->WEPKeyMappingAddress[ 1];
-+      MACWork[ 2] = km->WEPKeyMappingAddress[ 3];
-+      MACWork[ 3] = km->WEPKeyMappingAddress[ 4];
-+      MACWork[ 4] = km->WEPKeyMappingAddress[ 6];
-+      MACWork[ 5] = km->WEPKeyMappingAddress[ 7];
-+      MACWork[ 6] = km->WEPKeyMappingAddress[ 9];
-+      MACWork[ 7] = km->WEPKeyMappingAddress[10];
-+      MACWork[ 8] = km->WEPKeyMappingAddress[12];
-+      MACWork[ 9] = km->WEPKeyMappingAddress[13];
-+      MACWork[10] = km->WEPKeyMappingAddress[15];
-+      MACWork[11] = km->WEPKeyMappingAddress[16];
-+      MACWork[12] = '\0';
-+      *var_len = 6;
-+      return ( UCHAR * ) htob ( MACWork );
-+
-+    case DOT11WEPKEYMAPPINGWEPON:
-+//    *write_method = write_dot11WEPKeyMappingWEPOn;
-+      return ( UCHAR * ) &km->WEPKeyMappingWEPOn;
-+
-+    case DOT11WEPKEYMAPPINGVALUE:
-+//    *write_method = write_dot11WEPKeyMappingValue;
-+      *var_len = strlen ( km->WEPKeyMappingValue );
-+      return ( UCHAR * ) km->WEPKeyMappingValue;
-+
-+    case DOT11WEPKEYMAPPINGSTATUS:
-+//    *write_method = write_dot11WEPKeyMappingStatus;
-+      return ( UCHAR * ) &km->WEPKeyMappingStatus;
-+
-+    default:
-+      ERROR_MSG ( "" );
-+  }
-+  return NULL;
-+}
-+
-+/****************************************************************************
-+*                                                                           *
-+*   var_dot11PrivacyTable() -                                               *
-+*                                                                           *
-+****************************************************************************/
-+unsigned char *
-+var_dot11PrivacyTable ( struct variable *vp,
-+                        oid     *name,
-+                        size_t  *length,
-+                        int     exact,
-+                        size_t  *var_len,
-+                        WriteMethod **write_method )
-+{
-+  int found = FALSE;
-+  oid rName [ MAX_OID_LEN ];                            // OID to be returned
-+
-+  loadTables();
-+  memcpy (( char * ) rName, ( char * ) vp->name, ( int ) vp->namelen * sizeof ( oid ));
-+  for ( np = LIST_FIRST ( &prList ); np != NULL; np = LIST_NEXT ( np, nodes )) {
-+    pr = ( struct prTbl_data * ) np->data;
-+    rName[vp->namelen] = pr->ifIndex;
-+    if ((  exact && ( snmp_oid_compare ( rName, vp->namelen + 1, name, *length ) == 0 )) ||
-+        ( !exact && ( snmp_oid_compare ( rName, vp->namelen + 1, name, *length ) >  0 ))) {
-+      switch ( vp->magic ) {
-+        case DOT11PRIVACYINVOKED:
-+          if ( pr->havePrivacyInvoked      ) found = TRUE; break;
-+        case DOT11WEPDEFAULTKEYID:
-+          if ( pr->haveWEPDefaultKeyID     ) found = TRUE; break;
-+        case DOT11WEPKEYMAPPINGLENGTH:
-+          if ( pr->haveWEPKeyMappingLength ) found = TRUE; break;
-+        case DOT11EXCLUDEUNENCRYPTED:
-+          if ( pr->haveExcludeUnencrypted  ) found = TRUE; break;
-+        case DOT11WEPICVERRORCOUNT:
-+          if ( pr->haveWEPICVErrorCount    ) found = TRUE; break;
-+        case DOT11WEPEXCLUDEDCOUNT:
-+          if ( pr->haveWEPExcludedCount    ) found = TRUE; break;
-+      }      
-+    }
-+    if ( found )
-+      break;
-+  }
-+
-+  if ( !found ) 
-+    return NULL;
-+
-+  memcpy (( char * ) name, ( char * ) rName, ( vp->namelen + 1 ) * sizeof ( oid ));
-+  *length = vp->namelen + 1;
-+  *var_len = sizeof ( long );
-+  *write_method = NULL;
-+
-+  switch ( vp->magic ) {
-+
-+    case DOT11PRIVACYINVOKED:
-+//    *write_method = write_dot11PrivacyInvoked;
-+      return ( UCHAR * ) &pr->privacyInvoked;
-+
-+    case DOT11WEPDEFAULTKEYID:
-+//    *write_method = write_dot11WEPDefaultKeyID;
-+      return ( UCHAR * ) &pr->WEPDefaultKeyID;
-+
-+    case DOT11WEPKEYMAPPINGLENGTH:
-+//    *write_method = write_dot11WEPKeyMappingLength;
-+      return ( UCHAR * ) &pr->WEPKeyMappingLength;
-+
-+    case DOT11EXCLUDEUNENCRYPTED:
-+//    *write_method = write_dot11ExcludeUnencrypted;
-+      return ( UCHAR * ) &pr->excludeUnencrypted;
-+
-+    case DOT11WEPICVERRORCOUNT:
-+      return ( UCHAR * ) &pr->WEPICVErrorCount;
-+        
-+    case DOT11WEPEXCLUDEDCOUNT:
-+      return ( UCHAR * ) &pr->WEPExcludedCount;
-+        
-+    default:
-+      ERROR_MSG ( "" );
-+  }
-+
-+  return NULL;
-+}
-+
-+/****************************************************************************
-+*                                                                           *
-+*   var_dot11OperationTable() -                                             *
-+*                                                                           *
-+****************************************************************************/
-+unsigned char *
-+var_dot11OperationTable ( struct variable *vp,
-+                          oid     *name,
-+                          size_t  *length,
-+                          int     exact,
-+                          size_t  *var_len,
-+                          WriteMethod **write_method )
-+{
-+  int found = FALSE;
-+  oid rName [ MAX_OID_LEN ];                            // OID to be returned
-+  static char MACWork[17];
-+
-+  loadTables();
-+  memcpy (( char * ) rName, ( char * ) vp->name, ( int ) vp->namelen * sizeof ( oid ));
-+  for ( np = LIST_FIRST ( &opList ); np != NULL; np = LIST_NEXT ( np, nodes )) {
-+    op = ( struct opTbl_data * ) np->data;
-+    rName[vp->namelen] = op->ifIndex;
-+    if ((  exact && ( snmp_oid_compare ( rName, vp->namelen + 1, name, *length ) == 0 )) ||
-+        ( !exact && ( snmp_oid_compare ( rName, vp->namelen + 1, name, *length ) >  0 ))) {
-+
-+      switch ( vp->magic ) {      // found requested OID, now check for requested variable
-+        case DOT11MACADDRESS:             
-+          if ( op->haveMACAddress              ) found = TRUE; break;
-+        case DOT11RTSTHRESHOLD:           
-+          if ( op->haveRTSThreshold            ) found = TRUE; break;
-+        case DOT11SHORTRETRYLIMIT: 
-+          if ( op->haveShortRetryLimit         ) found = TRUE; break;
-+        case DOT11LONGRETRYLIMIT:
-+          if ( op->haveLongRetryLimit          ) found = TRUE; break;
-+        case DOT11FRAGMENTATIONTHRESHOLD: 
-+          if ( op->haveFragmentationThreshold  ) found = TRUE; break;
-+        case DOT11MAXTRANSMITMSDULIFETIME: 
-+          if ( op->haveMaxTransmitMSDULifetime ) found = TRUE; break;
-+        case DOT11MAXRECEIVELIFETIME:
-+          if ( op->haveMaxReceiveLifetime      ) found = TRUE; break;
-+        case DOT11MANUFACTURERID:
-+          if ( op->haveManufacturerID          ) found = TRUE; break;
-+        case DOT11PRODUCTID:
-+          if ( op->haveProductID               ) found = TRUE; break;
-+      }
-+    }
-+    if ( found ) 
-+      break;
-+  }
-+
-+  if ( !found )
-+    return NULL;
-+
-+  memcpy (( char * ) name, ( char * ) rName, ( vp->namelen + 1 ) * sizeof ( oid ));
-+  *length = vp->namelen + 1;
-+  *var_len = sizeof ( long );
-+  *write_method = NULL;
-+
-+  switch ( vp->magic ) {
-+
-+    case DOT11MACADDRESS:
-+      MACWork[ 0] = op->MACAddress[ 0];
-+      MACWork[ 1] = op->MACAddress[ 1];
-+      MACWork[ 2] = op->MACAddress[ 3];
-+      MACWork[ 3] = op->MACAddress[ 4];
-+      MACWork[ 4] = op->MACAddress[ 6];
-+      MACWork[ 5] = op->MACAddress[ 7];
-+      MACWork[ 6] = op->MACAddress[ 9];
-+      MACWork[ 7] = op->MACAddress[10];
-+      MACWork[ 8] = op->MACAddress[12];
-+      MACWork[ 9] = op->MACAddress[13];
-+      MACWork[10] = op->MACAddress[15];
-+      MACWork[11] = op->MACAddress[16];
-+      MACWork[12] = '\0';
-+      *var_len = 6;
-+      return ( UCHAR * ) htob ( MACWork );
-+        
-+    case DOT11RTSTHRESHOLD:
-+//    *write_method = write_dot11RTSThreshold;
-+      return ( UCHAR * ) &op->RTSThreshold;
-+
-+    case DOT11SHORTRETRYLIMIT:
-+//    *write_method = write_dot11ShortRetryLimit;
-+      return ( UCHAR * ) &op->shortRetryLimit;
-+
-+    case DOT11LONGRETRYLIMIT:
-+//    *write_method = write_dot11LongRetryLimit;
-+      return ( UCHAR * ) &op->longRetryLimit;
-+
-+    case DOT11FRAGMENTATIONTHRESHOLD:
-+//    *write_method = write_dot11FragmentationThreshold;
-+      return ( UCHAR * ) &op->fragmentationThreshold;
-+
-+    case DOT11MAXTRANSMITMSDULIFETIME:
-+//    *write_method = write_dot11MaxTransmitMSDULifetime;
-+      return ( UCHAR * ) &op->maxTransmitMSDULifetime;
-+
-+    case DOT11MAXRECEIVELIFETIME:
-+//    *write_method = write_dot11MaxReceiveLifetime;
-+      return ( UCHAR * ) &op->maxReceiveLifetime;
-+
-+    case DOT11MANUFACTURERID:
-+      *var_len = strlen ( op->manufacturerID );
-+      return ( UCHAR * ) op->manufacturerID;
-+
-+    case DOT11PRODUCTID:
-+      *var_len = strlen ( op->productID );
-+      return ( UCHAR * ) op->productID;
-+        
-+    default:
-+      ERROR_MSG ( "" );
-+  }
-+
-+  return NULL;
-+}
-+
-+/****************************************************************************
-+*                                                                           *
-+*   var_dot11CountersTable() -                                              *
-+*                                                                           *
-+****************************************************************************/
-+unsigned char *
-+var_dot11CountersTable(struct variable *vp,
-+          oid     *name,
-+          size_t  *length,
-+          int     exact,
-+          size_t  *var_len,
-+          WriteMethod **write_method)
-+{
-+  int found = FALSE;
-+  oid rName [ MAX_OID_LEN ];                            // OID to be returned
-+
-+  loadTables();
-+  memcpy (( char * ) rName, ( char * ) vp->name, ( int ) vp->namelen * sizeof ( oid ));
-+  for ( np = LIST_FIRST ( &coList ); np != NULL; np = LIST_NEXT ( np, nodes )) {
-+    co = ( struct coTbl_data * ) np->data;
-+    rName[vp->namelen] = co->ifIndex;
-+    if ((  exact && ( snmp_oid_compare ( rName, vp->namelen + 1, name, *length ) == 0 )) ||
-+        ( !exact && ( snmp_oid_compare ( rName, vp->namelen + 1, name, *length ) >  0 ))) {
-+      switch ( vp->magic ) {
-+        case DOT11TRANSMITTEDFRAGMENTCOUNT:
-+          if ( co->haveTransmittedFragmentCount    ) found = TRUE; break;
-+        case DOT11MULTICASTTRANSMITTEDFRAMECOUNT:
-+          if ( co->haveTransmittedFrameCount       ) found = TRUE; break;
-+        case DOT11FAILEDCOUNT:
-+          if ( co->haveFailedCount                 ) found = TRUE; break;
-+        case DOT11RETRYCOUNT:
-+          if ( co->haveRetryCount                  ) found = TRUE; break;
-+        case DOT11MULTIPLERETRYCOUNT:
-+          if ( co->haveMultipleRetryCount          ) found = TRUE; break;
-+        case DOT11FRAMEDUPLICATECOUNT:
-+          if ( co->haveFrameDuplicateCount         ) found = TRUE; break;
-+        case DOT11RTSSUCCESSCOUNT:
-+          if ( co->haveRTSSuccessCount             ) found = TRUE; break;
-+        case DOT11RTSFAILURECOUNT:
-+          if ( co->haveRTSFailureCount             ) found = TRUE; break;
-+        case DOT11ACKFAILURECOUNT:
-+          if ( co->haveACKFailureCount             ) found = TRUE; break;
-+        case DOT11RECEIVEDFRAGMENTCOUNT:
-+          if ( co->haveReceivedFragmentCount       ) found = TRUE; break;
-+        case DOT11MULTICASTRECEIVEDFRAMECOUNT:
-+          if ( co->haveMulticastReceivedFrameCount ) found = TRUE; break;
-+        case DOT11FCSERRORCOUNT:
-+          if ( co->haveFCSErrorCount               ) found = TRUE; break;
-+        case DOT11TRANSMITTEDFRAMECOUNT:
-+          if ( co->haveTransmittedFrameCount       ) found = TRUE; break;
-+        case DOT11WEPUNDECRYPTABLECOUNT:
-+          if ( co->haveWEPUndecryptableCount       ) found = TRUE; break;
-+      }
-+    }
-+    if ( found )
-+      break;
-+  }
-+
-+  if ( !found ) 
-+    return NULL;
-+
-+  memcpy (( char * ) name, ( char * ) rName, ( vp->namelen + 1 ) * sizeof ( oid ));
-+  *length = vp->namelen + 1;
-+  *var_len = sizeof ( long );
-+  *write_method = NULL;
-+
-+  switch ( vp->magic ) {
-+
-+    case DOT11TRANSMITTEDFRAGMENTCOUNT:       return ( UCHAR * ) &co->transmittedFragmentCount;
-+    case DOT11MULTICASTTRANSMITTEDFRAMECOUNT: return ( UCHAR * ) &co->transmittedFrameCount;
-+    case DOT11FAILEDCOUNT:                    return ( UCHAR * ) &co->failedCount;
-+    case DOT11RETRYCOUNT:                     return ( UCHAR * ) &co->retryCount;
-+    case DOT11MULTIPLERETRYCOUNT:             return ( UCHAR * ) &co->multipleRetryCount;
-+    case DOT11FRAMEDUPLICATECOUNT:            return ( UCHAR * ) &co->frameDuplicateCount;
-+    case DOT11RTSSUCCESSCOUNT:                return ( UCHAR * ) &co->RTSSuccessCount;
-+    case DOT11RTSFAILURECOUNT:                return ( UCHAR * ) &co->RTSFailureCount;
-+    case DOT11ACKFAILURECOUNT:                return ( UCHAR * ) &co->ACKFailureCount;
-+    case DOT11RECEIVEDFRAGMENTCOUNT:          return ( UCHAR * ) &co->receivedFragmentCount;
-+    case DOT11MULTICASTRECEIVEDFRAMECOUNT:    return ( UCHAR * ) &co->multicastReceivedFrameCount;
-+    case DOT11FCSERRORCOUNT:                  return ( UCHAR * ) &co->FCSErrorCount;
-+    case DOT11TRANSMITTEDFRAMECOUNT:          return ( UCHAR * ) &co->transmittedFrameCount;
-+    case DOT11WEPUNDECRYPTABLECOUNT:          return ( UCHAR * ) &co->WEPUndecryptableCount;
-+        
-+    default:
-+      ERROR_MSG ( "" );
-+  }
-+
-+  return NULL;
-+}
-+
-+/****************************************************************************
-+*                                                                           *
-+*   var_dot11GroupAddressesTable() -                                        *
-+*                                                                           *
-+****************************************************************************/
-+unsigned char *
-+var_dot11GroupAddressesTable(struct variable *vp,
-+          oid     *name,
-+          size_t  *length,
-+          int     exact,
-+          size_t  *var_len,
-+          WriteMethod **write_method)
-+{
-+  static char MACWork[17];
-+  int found = FALSE;
-+  oid rName [ MAX_OID_LEN ];                            // OID to be returned
-+
-+  loadTables();
-+  memcpy (( char * ) rName, ( char * ) vp->name, ( int ) vp->namelen * sizeof ( oid ));
-+  for ( np = LIST_FIRST ( &gaList ); np != NULL; np = LIST_NEXT ( np, nodes )) {
-+    ga = ( struct gaTbl_data * ) np->data;
-+    rName[vp->namelen + 0] = ga->ifIndex;
-+    rName[vp->namelen + 1] = ga->groupAddressesIndex;
-+    if ((  exact && ( snmp_oid_compare ( rName, vp->namelen + 2, name, *length ) == 0 )) ||
-+        ( !exact && ( snmp_oid_compare ( rName, vp->namelen + 2, name, *length ) >  0 ))) {
-+      switch ( vp->magic ) {
-+        case DOT11ADDRESS:
-+          if ( ga->haveAddress              ) found = TRUE; break;
-+        case DOT11GROUPADDRESSESSTATUS:
-+          if ( ga->haveGroupAddressesStatus ) found = TRUE; break;
-+      }
-+    }
-+    if ( found )
-+      break;
-+  }
-+
-+  if ( !found ) 
-+    return NULL;
-+
-+  memcpy (( char * ) name, ( char * ) rName, ( vp->namelen + 2 ) * sizeof ( oid ));
-+  *length = vp->namelen + 2;
-+  *var_len = sizeof ( long );
-+  *write_method = NULL;
-+
-+  switch ( vp->magic ) {
-+
-+    case DOT11ADDRESS:
-+//    *write_method = write_dot11Address;
-+      MACWork[ 0] = ga->address[ 0];
-+      MACWork[ 1] = ga->address[ 1];
-+      MACWork[ 2] = ga->address[ 3];
-+      MACWork[ 3] = ga->address[ 4];
-+      MACWork[ 4] = ga->address[ 6];
-+      MACWork[ 5] = ga->address[ 7];
-+      MACWork[ 6] = ga->address[ 9];
-+      MACWork[ 7] = ga->address[10];
-+      MACWork[ 8] = ga->address[12];
-+      MACWork[ 9] = ga->address[13];
-+      MACWork[10] = ga->address[15];
-+      MACWork[11] = ga->address[16];
-+      MACWork[12] = '\0';
-+      *var_len = 6;
-+      return ( UCHAR * ) htob ( MACWork );
-+
-+    case DOT11GROUPADDRESSESSTATUS:
-+//    *write_method = write_dot11GroupAddressesStatus;
-+      return ( UCHAR * ) &ga->groupAddressesStatus;
-+
-+    default:
-+      ERROR_MSG ( "" );
-+  }
-+  return NULL;
-+}
-+
-+/****************************************************************************
-+*                                                                           *
-+*   var_dot11ResourceInfoTable() -                                          *
-+*                                                                           *
-+****************************************************************************/
-+unsigned char *
-+var_dot11ResourceInfoTable ( struct variable *vp,
-+                              oid     *name,
-+                              size_t  *length,
-+                              int     exact,
-+                              size_t  *var_len,
-+                              WriteMethod **write_method )
-+{
-+  int found = FALSE;
-+  oid rName [ MAX_OID_LEN ];                            // OID to be returned
-+
-+  loadTables();
-+  memcpy (( char * ) rName, ( char * ) vp->name, ( int ) vp->namelen * sizeof ( oid ));
-+  for ( np = LIST_FIRST ( &riList ); np != NULL; np = LIST_NEXT ( np, nodes )) {
-+    ri = ( struct riTbl_data * ) np->data;
-+    rName[vp->namelen] = ri->ifIndex;
-+    if ((  exact && ( snmp_oid_compare ( rName, vp->namelen + 1, name, *length ) == 0 )) ||
-+        ( !exact && ( snmp_oid_compare ( rName, vp->namelen + 1, name, *length ) >  0 ))) {
-+      switch ( vp->magic ) {
-+        case DOT11MANUFACTUREROUI:
-+          if ( ri->haveManufacturerOUI            ) found = TRUE; break;
-+        case DOT11MANUFACTURERNAME:
-+          if ( ri->haveManufacturerName           ) found = TRUE; break;
-+        case DOT11MANUFACTURERPRODUCTNAME:
-+          if ( ri->haveManufacturerProductName    ) found = TRUE; break;
-+        case DOT11MANUFACTURERPRODUCTVERSION:
-+          if ( ri->haveManufacturerProductVersion ) found = TRUE; break;
-+      }
-+    }
-+    if ( found )
-+      break;
-+  }
-+
-+  if ( !found ) 
-+    return NULL;
-+
-+  memcpy (( char * ) name, ( char * ) rName, ( vp->namelen + 1 ) * sizeof ( oid ));
-+  *length = vp->namelen + 1;
-+  *var_len = sizeof ( long );
-+  *write_method = NULL;
-+
-+  switch ( vp->magic ) {
-+
-+    case DOT11MANUFACTUREROUI:
-+      *var_len = strlen ( ri->manufacturerOUI );
-+      return ( UCHAR * ) ri->manufacturerOUI;
-+        
-+    case DOT11MANUFACTURERNAME:
-+      *var_len = strlen ( ri->manufacturerName );
-+      return ( UCHAR * ) ri->manufacturerName;
-+        
-+    case DOT11MANUFACTURERPRODUCTNAME:
-+      *var_len = strlen ( ri->manufacturerProductName );
-+      return ( UCHAR * ) ri->manufacturerProductName;
-+        
-+    case DOT11MANUFACTURERPRODUCTVERSION:
-+      *var_len = strlen ( ri->manufacturerProductVersion );
-+      return ( UCHAR * ) ri->manufacturerProductVersion;
-+        
-+    default: 
-+      ERROR_MSG ( "" );
-+  }
-+
-+  return NULL;
-+}
-+
-+/****************************************************************************
-+*                                                                           *
-+*   var_dot11PhyOperationTable() -                                          *
-+*                                                                           *
-+****************************************************************************/
-+unsigned char *
-+var_dot11PhyOperationTable ( struct variable *vp,
-+                              oid     *name,
-+                              size_t  *length,
-+                              int     exact,
-+                              size_t  *var_len,
-+                              WriteMethod **write_method )
-+{
-+  int found = FALSE;
-+  oid rName [ MAX_OID_LEN ];                            // OID to be returned
-+
-+  loadTables();
-+  memcpy (( char * ) rName, ( char * ) vp->name, ( int ) vp->namelen * sizeof ( oid ));
-+  for ( np = LIST_FIRST ( &poList ); np != NULL; np = LIST_NEXT ( np, nodes )) {
-+    po = ( struct poTbl_data * ) np->data;
-+    rName[vp->namelen] = po->ifIndex;
-+    if ((  exact && ( snmp_oid_compare ( rName, vp->namelen + 1, name, *length ) == 0 )) ||
-+        ( !exact && ( snmp_oid_compare ( rName, vp->namelen + 1, name, *length ) >  0 ))) {
-+      switch ( vp->magic ) {
-+        case DOT11PHYTYPE:
-+          if ( po->havePHYType          ) found = TRUE; break;
-+        case DOT11CURRENTREGDOMAIN:
-+          if ( po->haveCurrentRegDomain ) found = TRUE; break;
-+        case DOT11TEMPTYPE:
-+          if ( po->haveTempType         ) found = TRUE; break;
-+      }
-+    }
-+    if ( found )
-+      break;
-+  }
-+
-+  if ( !found ) 
-+    return NULL;
-+
-+  memcpy (( char * ) name, ( char * ) rName, ( vp->namelen + 1 ) * sizeof ( oid ));
-+  *length = vp->namelen + 1;
-+  *var_len = sizeof ( long );
-+  *write_method = NULL;
-+
-+  switch ( vp->magic ) {
-+
-+    case DOT11PHYTYPE:
-+      return ( UCHAR * ) &po->PHYType;
-+        
-+    case DOT11CURRENTREGDOMAIN:
-+//    *write_method = write_dot11CurrentRegDomain;
-+      return ( UCHAR * ) &po->currentRegDomain;
-+
-+    case DOT11TEMPTYPE:
-+      return ( UCHAR * ) &po->tempType;
-+        
-+    default:
-+      ERROR_MSG ( "" );
-+  }
-+
-+  return NULL;
-+}
-+
-+/****************************************************************************
-+*                                                                           *
-+*   var_dot11PhyAntennaTable() -                                            *
-+*                                                                           *
-+****************************************************************************/
-+unsigned char *
-+var_dot11PhyAntennaTable ( struct variable *vp,
-+                            oid     *name,
-+                            size_t  *length,
-+                            int     exact,
-+                            size_t  *var_len,
-+                            WriteMethod **write_method )
-+{
-+  int found = FALSE;
-+  oid rName [ MAX_OID_LEN ];                            // OID to be returned
-+
-+  loadTables();
-+  memcpy (( char * ) rName, ( char * ) vp->name, ( int ) vp->namelen * sizeof ( oid ));
-+  for ( np = LIST_FIRST ( &paList ); np != NULL; np = LIST_NEXT ( np, nodes )) {
-+    pa = ( struct paTbl_data * ) np->data;
-+    rName[vp->namelen] = pa->ifIndex;
-+    if ((  exact && ( snmp_oid_compare ( rName, vp->namelen + 1, name, *length ) == 0 )) ||
-+        ( !exact && ( snmp_oid_compare ( rName, vp->namelen + 1, name, *length ) >  0 ))) {
-+      switch ( vp->magic ) {
-+        case DOT11CURRENTTXANTENNA:
-+          if ( pa->haveCurrentTxAntenna ) found = TRUE; break;
-+        case DOT11DIVERSITYSUPPORT:
-+          if ( pa->haveDiversitySupport ) found = TRUE; break;
-+        case DOT11CURRENTRXANTENNA:
-+          if ( pa->haveCurrentRxAntenna ) found = TRUE; break;
-+      }
-+    }
-+    if ( found )
-+      break;
-+  }
-+
-+  if ( !found ) 
-+    return NULL;
-+
-+  memcpy (( char * ) name, ( char * ) rName, ( vp->namelen + 1 ) * sizeof ( oid ));
-+  *length = vp->namelen + 1;
-+  *var_len = sizeof ( long );
-+  *write_method = NULL;
-+
-+  switch ( vp->magic ) {
-+
-+    case DOT11CURRENTTXANTENNA:
-+//    *write_method = write_dot11CurrentTxAntenna;
-+      return ( UCHAR * ) &pa->currentTxAntenna;
-+
-+    case DOT11DIVERSITYSUPPORT:
-+      return ( UCHAR * ) &pa->diversitySupport;
-+        
-+    case DOT11CURRENTRXANTENNA:
-+//    *write_method = write_dot11CurrentRxAntenna;
-+      return ( UCHAR * ) &pa->currentRxAntenna;
-+
-+    default:
-+      ERROR_MSG ( "" );
-+  }
-+  return NULL;
-+}
-+
-+/****************************************************************************
-+*                                                                           *
-+*   var_dot11PhyTxPowerTable() -                                            *
-+*                                                                           *
-+****************************************************************************/
-+unsigned char *
-+var_dot11PhyTxPowerTable ( struct variable *vp,
-+                            oid     *name,
-+                            size_t  *length,
-+                            int     exact,
-+                            size_t  *var_len,
-+                            WriteMethod **write_method )
-+{
-+  int found = FALSE;
-+  oid rName [ MAX_OID_LEN ];                            // OID to be returned
-+
-+  loadTables();
-+  memcpy (( char * ) rName, ( char * ) vp->name, ( int ) vp->namelen * sizeof ( oid ));
-+  for ( np = LIST_FIRST ( &ptList ); np != NULL; np = LIST_NEXT ( np, nodes )) {
-+    pt = ( struct ptTbl_data * ) np->data;
-+    rName[vp->namelen] = pt->ifIndex;
-+    if ((  exact && ( snmp_oid_compare ( rName, vp->namelen + 1, name, *length ) == 0 )) ||
-+        ( !exact && ( snmp_oid_compare ( rName, vp->namelen + 1, name, *length ) >  0 ))) {
-+      switch ( vp->magic ) {
-+        case DOT11NUMBERSUPPORTEDPOWERLEVELS:
-+          if ( pt->haveNumberSupportedPowerLevels ) found = TRUE; break;
-+        case DOT11TXPOWERLEVEL1:
-+          if ( pt->haveTxPowerLevel1   ) found = TRUE; break;
-+        case DOT11TXPOWERLEVEL2:
-+          if ( pt->haveTxPowerLevel2   ) found = TRUE; break;
-+        case DOT11TXPOWERLEVEL3:
-+          if ( pt->haveTxPowerLevel3   ) found = TRUE; break;
-+        case DOT11TXPOWERLEVEL4:
-+          if ( pt->haveTxPowerLevel4   ) found = TRUE; break;
-+        case DOT11TXPOWERLEVEL5:
-+          if ( pt->haveTxPowerLevel5   ) found = TRUE; break;
-+        case DOT11TXPOWERLEVEL6:
-+          if ( pt->haveTxPowerLevel6   ) found = TRUE; break;
-+        case DOT11TXPOWERLEVEL7:
-+          if ( pt->haveTxPowerLevel7   ) found = TRUE; break;
-+        case DOT11TXPOWERLEVEL8:
-+          if ( pt->haveTxPowerLevel8   ) found = TRUE; break;
-+        case DOT11CURRENTTXPOWERLEVEL:
-+          if ( pt->currentTxPowerLevel ) found = TRUE; break;
-+      }
-+    }
-+    if ( found )
-+      break;
-+  }
-+
-+  if ( !found ) 
-+    return NULL;
-+
-+  memcpy (( char * ) name, ( char * ) rName, ( vp->namelen + 1 ) * sizeof ( oid ));
-+  *length = vp->namelen + 1;
-+  *var_len = sizeof ( long );
-+  *write_method = NULL;
-+
-+  switch ( vp->magic ) {
-+
-+    case DOT11NUMBERSUPPORTEDPOWERLEVELS: 
-+      return ( UCHAR * ) &pt->numberSupportedPowerLevels;
-+
-+    case DOT11TXPOWERLEVEL1: return ( UCHAR * ) &pt->TxPowerLevel1;
-+    case DOT11TXPOWERLEVEL2: return ( UCHAR * ) &pt->TxPowerLevel2;
-+    case DOT11TXPOWERLEVEL3: return ( UCHAR * ) &pt->TxPowerLevel3;
-+    case DOT11TXPOWERLEVEL4: return ( UCHAR * ) &pt->TxPowerLevel4;
-+    case DOT11TXPOWERLEVEL5: return ( UCHAR * ) &pt->TxPowerLevel5;
-+    case DOT11TXPOWERLEVEL6: return ( UCHAR * ) &pt->TxPowerLevel6;
-+    case DOT11TXPOWERLEVEL7: return ( UCHAR * ) &pt->TxPowerLevel7;
-+    case DOT11TXPOWERLEVEL8: return ( UCHAR * ) &pt->TxPowerLevel8;
-+        
-+    case DOT11CURRENTTXPOWERLEVEL:
-+//    *write_method = write_dot11CurrentTxPowerLevel;
-+      return ( UCHAR * ) &pt->currentTxPowerLevel;
-+
-+    default:
-+      ERROR_MSG ( "" );
-+  }
-+
-+  return NULL;
-+}
-+
-+/****************************************************************************
-+*                                                                           *
-+*     var_dot11PhyFHSSTable() -                                             *
-+*                                                                           *
-+****************************************************************************/
-+unsigned char *
-+var_dot11PhyFHSSTable ( struct variable *vp,
-+                        oid     *name,
-+                        size_t  *length,
-+                        int     exact,
-+                        size_t  *var_len,
-+                        WriteMethod **write_method )
-+{
-+  int found = FALSE;
-+  oid rName [ MAX_OID_LEN ];                            // OID to be returned
-+
-+  loadTables();
-+  memcpy (( char * ) rName, ( char * ) vp->name, ( int ) vp->namelen * sizeof ( oid ));
-+  for ( np = LIST_FIRST ( &pfList ); np != NULL; np = LIST_NEXT ( np, nodes )) {
-+    pf = ( struct pfTbl_data * ) np->data;
-+    rName[vp->namelen] = pf->ifIndex;
-+    if ((  exact && ( snmp_oid_compare ( rName, vp->namelen + 1, name, *length ) == 0 )) ||
-+        ( !exact && ( snmp_oid_compare ( rName, vp->namelen + 1, name, *length ) >  0 ))) {
-+      switch ( vp->magic ) {
-+        case DOT11HOPTIME:
-+          if ( pf->haveHopTime              ) found = TRUE; break;
-+        case DOT11CURRENTCHANNELNUMBER:
-+          if ( pf->haveCurrentChannelNumber ) found = TRUE; break;
-+        case DOT11MAXDWELLTIME:
-+          if ( pf->haveMaxDwellTime         ) found = TRUE; break;
-+        case DOT11CURRENTDWELLTIME:
-+          if ( pf->haveCurrentDwellTime     ) found = TRUE; break;
-+        case DOT11CURRENTSET:
-+          if ( pf->haveCurrentSet           ) found = TRUE; break;
-+        case DOT11CURRENTPATTERN:
-+          if ( pf->haveCurrentPattern       ) found = TRUE; break;
-+        case DOT11CURRENTINDEX:
-+          if ( pf->haveCurrentIndex         ) found = TRUE; break;
-+      }
-+    }
-+    if ( found )
-+      break;
-+  }
-+
-+  if ( !found ) 
-+    return NULL;
-+
-+  memcpy (( char * ) name, ( char * ) rName, ( vp->namelen + 1 ) * sizeof ( oid ));
-+  *length = vp->namelen + 1;
-+  *var_len = sizeof ( long );
-+  *write_method = NULL;
-+
-+  switch ( vp->magic ) {
-+
-+    case DOT11HOPTIME:
-+      return ( UCHAR * ) &pf->hopTime;
-+        
-+    case DOT11CURRENTCHANNELNUMBER:
-+//    *write_method = write_dot11CurrentChannelNumber;
-+      return ( UCHAR * ) &pf->currentChannelNumber;
-+
-+    case DOT11MAXDWELLTIME:
-+      return ( UCHAR * ) &pf->maxDwellTime;
-+        
-+    case DOT11CURRENTDWELLTIME:
-+//    *write_method = write_dot11CurrentDwellTime;
-+      return ( UCHAR * ) &pf->currentDwellTime;
-+
-+    case DOT11CURRENTSET:
-+//    *write_method = write_dot11CurrentSet;
-+      return ( UCHAR * ) &pf->currentSet;
-+
-+    case DOT11CURRENTPATTERN:
-+//    *write_method = write_dot11CurrentPattern;
-+      return ( UCHAR * ) &pf->currentPattern;
-+
-+    case DOT11CURRENTINDEX:
-+//    *write_method = write_dot11CurrentIndex;
-+      return ( UCHAR * ) &pf->currentIndex;
-+
-+    default:
-+      ERROR_MSG ( "" );
-+  }
-+
-+  return NULL;
-+}
-+
-+/****************************************************************************
-+*                                                                           *
-+*     var_dot11PhyDSSSTable() -                                             *
-+*                                                                           *
-+****************************************************************************/
-+unsigned char *
-+var_dot11PhyDSSSTable ( struct variable *vp,
-+                        oid     *name,
-+                        size_t  *length,
-+                        int     exact,
-+                        size_t  *var_len,
-+                        WriteMethod **write_method )
-+{
-+  int found = FALSE;
-+  oid rName [ MAX_OID_LEN ];                            // OID to be returned
-+
-+  loadTables();
-+  memcpy (( char * ) rName, ( char * ) vp->name, ( int ) vp->namelen * sizeof ( oid ));
-+  for ( np = LIST_FIRST ( &pdList ); np != NULL; np = LIST_NEXT ( np, nodes )) {
-+    pd = ( struct pdTbl_data * ) np->data;
-+    rName[vp->namelen] = pd->ifIndex;
-+    if ((  exact && ( snmp_oid_compare ( rName, vp->namelen + 1, name, *length ) == 0 )) ||
-+        ( !exact && ( snmp_oid_compare ( rName, vp->namelen + 1, name, *length ) >  0 ))) {
-+      switch ( vp->magic ) {
-+        case DOT11CURRENTCHANNEL:
-+          if ( pd->haveCurrentChannel   ) found = TRUE; break;
-+        case DOT11CCAMODESUPPORTED:
-+          if ( pd->haveCCAModeSupported ) found = TRUE; break;
-+        case DOT11CURRENTCCAMODE:
-+          if ( pd->haveCurrentCCAMode   ) found = TRUE; break;
-+        case DOT11EDTHRESHOLD:
-+          if ( pd->haveEDThreshold      ) found = TRUE; break;
-+      }
-+    }
-+    if ( found )
-+      break;
-+  }
-+
-+  if ( !found ) 
-+    return NULL;
-+
-+  memcpy (( char * ) name, ( char * ) rName, ( vp->namelen + 1 ) * sizeof ( oid ));
-+  *length = vp->namelen + 1;
-+  *var_len = sizeof ( long );
-+  *write_method = NULL;
-+
-+  switch ( vp->magic ) {
-+
-+    case DOT11CURRENTCHANNEL:
-+//    *write_method = write_dot11CurrentChannel;
-+      return ( UCHAR * ) &pd->currentChannel;
-+
-+    case DOT11CCAMODESUPPORTED:
-+      return ( UCHAR * ) &pd->CCAModeSupported;
-+        
-+    case DOT11CURRENTCCAMODE:
-+//    *write_method = write_dot11CurrentCCAMode;
-+      return ( UCHAR * ) &pd->currentCCAMode;
-+
-+    case DOT11EDTHRESHOLD:
-+//    *write_method = write_dot11EDThreshold;
-+      return ( UCHAR * ) &pd->EDThreshold;
-+
-+    default:
-+      ERROR_MSG ( "" );
-+  }
-+
-+  return NULL;
-+}
-+
-+/****************************************************************************
-+*                                                                           *
-+*     var_dot11PhyIRTable() -                                             *
-+*                                                                           *
-+****************************************************************************/
-+unsigned char *
-+var_dot11PhyIRTable ( struct variable *vp,
-+                      oid     *name,
-+                      size_t  *length,
-+                      int     exact,
-+                      size_t  *var_len,
-+                      WriteMethod **write_method)
-+{
-+
-+  int found = FALSE;
-+  oid rName [ MAX_OID_LEN ];                            // OID to be returned
-+
-+  loadTables();
-+  memcpy (( char * ) rName, ( char * ) vp->name, ( int ) vp->namelen * sizeof ( oid ));
-+  for ( np = LIST_FIRST ( &piList ); np != NULL; np = LIST_NEXT ( np, nodes )) {
-+    pi = ( struct piTbl_data * ) np->data;
-+    rName[vp->namelen] = pi->ifIndex;
-+    if ((  exact && ( snmp_oid_compare ( rName, vp->namelen + 1, name, *length ) == 0 )) ||
-+        ( !exact && ( snmp_oid_compare ( rName, vp->namelen + 1, name, *length ) >  0 ))) {
-+      switch ( vp->magic ) {
-+        case DOT11CCAWATCHDOGTIMERMAX:
-+          if ( pi->CCAWatchdogTimerMax ) found = TRUE; break;
-+        case DOT11CCAWATCHDOGCOUNTMAX:
-+          if ( pi->CCAWatchdogCountMax ) found = TRUE; break;
-+        case DOT11CCAWATCHDOGTIMERMIN:
-+          if ( pi->CCAWatchdogTimerMin ) found = TRUE; break;
-+        case DOT11CCAWATCHDOGCOUNTMIN:
-+          if ( pi->CCAWatchdogCountMin ) found = TRUE; break;
-+      }
-+    }
-+    if ( found )
-+      break;
-+  }
-+
-+  if ( !found ) 
-+    return NULL;
-+
-+  memcpy (( char * ) name, ( char * ) rName, ( vp->namelen + 1 ) * sizeof ( oid ));
-+  *length = vp->namelen + 1;
-+  *var_len = sizeof ( long );
-+  *write_method = NULL;
-+
-+  switch ( vp->magic ) {
-+
-+    case DOT11CCAWATCHDOGTIMERMAX:
-+//    *write_method = write_dot11CCAWatchdogTimerMax;
-+      return ( UCHAR * ) &pi->CCAWatchdogTimerMax;
-+
-+    case DOT11CCAWATCHDOGCOUNTMAX:
-+//   *write_method = write_dot11CCAWatchdogCountMax;
-+      return ( UCHAR * ) &pi->CCAWatchdogCountMax;
-+
-+    case DOT11CCAWATCHDOGTIMERMIN:
-+//    *write_method = write_dot11CCAWatchdogTimerMin;
-+      return ( UCHAR * ) &pi->CCAWatchdogTimerMin;
-+
-+    case DOT11CCAWATCHDOGCOUNTMIN:
-+//    *write_method = write_dot11CCAWatchdogCountMin;
-+      return ( UCHAR * ) &pi->CCAWatchdogCountMin;
-+
-+    default:
-+      ERROR_MSG ( "" );
-+  }
-+
-+  return NULL;
-+}
-+
-+/****************************************************************************
-+*                                                                           *
-+*     var_dot11RegDomainsSupportedTable() -                                 *
-+*                                                                           *
-+****************************************************************************/
-+unsigned char *
-+var_dot11RegDomainsSupportedTable ( struct variable *vp,
-+                                    oid     *name,
-+                                    size_t  *length,
-+                                    int     exact,
-+                                    size_t  *var_len,
-+                                    WriteMethod **write_method)
-+{
-+  int found = FALSE;
-+  oid rName [ MAX_OID_LEN ];                            // OID to be returned
-+
-+  loadTables();
-+  memcpy (( char * ) rName, ( char * ) vp->name, ( int ) vp->namelen * sizeof ( oid ));
-+  for ( np = LIST_FIRST ( &rdList ); np != NULL; np = LIST_NEXT ( np, nodes )) {
-+    rd = ( struct rdTbl_data * ) np->data;
-+    rName[vp->namelen + 0] = rd->ifIndex;
-+    rName[vp->namelen + 1] = rd->regDomainsSupportIndex;
-+    if ((  exact && ( snmp_oid_compare ( rName, vp->namelen + 2, name, *length ) == 0 )) ||
-+        ( !exact && ( snmp_oid_compare ( rName, vp->namelen + 2, name, *length ) >  0 ))) {
-+      switch ( vp->magic ) {
-+        case DOT11REGDOMAINSSUPPORTVALUE:
-+          if ( rd->haveRegDomainsSupportValue ) found = TRUE; break;
-+      }
-+    }
-+    if ( found )
-+      break;
-+  }
-+
-+  if ( !found ) 
-+    return NULL;
-+
-+  memcpy (( char * ) name, ( char * ) rName, ( vp->namelen + 2 ) * sizeof ( oid ));
-+  *length = vp->namelen + 2;
-+  *var_len = sizeof ( long );
-+  *write_method = NULL;
-+
-+  switch ( vp->magic ) {
-+
-+    case DOT11REGDOMAINSSUPPORTVALUE:
-+      return ( UCHAR * ) &rd->regDomainsSupportValue;
-+        
-+    default:
-+      ERROR_MSG ( "" );
-+  }
-+
-+  return NULL;
-+}
-+
-+/****************************************************************************
-+*                                                                           *
-+*     var_dot11AntennasListTable() -                                        *
-+*                                                                           *
-+****************************************************************************/
-+unsigned char *
-+var_dot11AntennasListTable(struct variable *vp,
-+          oid     *name,
-+          size_t  *length,
-+          int     exact,
-+          size_t  *var_len,
-+          WriteMethod **write_method)
-+{
-+  int found = FALSE;
-+  oid rName [ MAX_OID_LEN ];                            // OID to be returned
-+
-+  loadTables();
-+  memcpy (( char * ) rName, ( char * ) vp->name, ( int ) vp->namelen * sizeof ( oid ));
-+  for ( np = LIST_FIRST ( &alList ); np != NULL; np = LIST_NEXT ( np, nodes )) {
-+    al = ( struct alTbl_data * ) np->data;
-+    rName[vp->namelen + 0] = al->ifIndex;
-+    rName[vp->namelen + 1] = al->antennaListIndex;
-+    if ((  exact && ( snmp_oid_compare ( rName, vp->namelen + 2, name, *length ) == 0 )) ||
-+        ( !exact && ( snmp_oid_compare ( rName, vp->namelen + 2, name, *length ) >  0 ))) {
-+      switch ( vp->magic ) {
-+        case DOT11SUPPORTEDTXANTENNA:
-+          if ( al->haveSupportedTxAntenna   ) found = TRUE; break;
-+        case DOT11SUPPORTEDRXANTENNA:
-+          if ( al->haveSupportedRxAntenna   ) found = TRUE; break;
-+        case DOT11DIVERSITYSELECTIONRX:
-+          if ( al->haveDiversitySelectionRx ) found = TRUE; break;
-+      }
-+    }
-+    if ( found )
-+      break;
-+  }
-+
-+  if ( !found ) 
-+    return NULL;
-+
-+  memcpy (( char * ) name, ( char * ) rName, ( vp->namelen + 2 ) * sizeof ( oid ));
-+  *length = vp->namelen + 2;
-+  *var_len = sizeof ( long );
-+  *write_method = NULL;
-+
-+  switch ( vp->magic ) {
-+
-+    case DOT11SUPPORTEDTXANTENNA:
-+//    *write_method = write_dot11SupportedTxAntenna;
-+      return ( UCHAR * ) &al->supportedTxAntenna;
-+
-+    case DOT11SUPPORTEDRXANTENNA:
-+//    *write_method = write_dot11SupportedRxAntenna;
-+      return ( UCHAR * ) &al->supportedRxAntenna;
-+
-+    case DOT11DIVERSITYSELECTIONRX:
-+//    *write_method = write_dot11DiversitySelectionRx;
-+      return ( UCHAR * ) &al->diversitySelectionRx;
-+
-+    default:
-+      ERROR_MSG ( "" );
-+  }
-+
-+  return NULL;
-+}
-+
-+/****************************************************************************
-+*                                                                           *
-+*     var_dot11SupportedDataRatesTxTable() -                                *
-+*                                                                           *
-+****************************************************************************/
-+unsigned char *
-+var_dot11SupportedDataRatesTxTable ( struct variable *vp,
-+                                      oid     *name,
-+                                      size_t  *length,
-+                                      int     exact,
-+                                      size_t  *var_len,
-+                                      WriteMethod **write_method )
-+{
-+  int found = FALSE;
-+  oid rName [ MAX_OID_LEN ];                            // OID to be returned
-+
-+  loadTables();
-+  memcpy (( char * ) rName, ( char * ) vp->name, ( int ) vp->namelen * sizeof ( oid ));
-+  for ( np = LIST_FIRST ( &rtList ); np != NULL; np = LIST_NEXT ( np, nodes )) {
-+    rt = ( struct rtTbl_data * ) np->data;
-+    rName[vp->namelen + 0] = rt->ifIndex;
-+    rName[vp->namelen + 1] = rt->supportedDataRatesTxIndex;
-+    if ((  exact && ( snmp_oid_compare ( rName, vp->namelen + 2, name, *length ) == 0 )) ||
-+        ( !exact && ( snmp_oid_compare ( rName, vp->namelen + 2, name, *length ) >  0 ))) {
-+      switch ( vp->magic ) {
-+         case DOT11SUPPORTEDDATARATESTXVALUE:
-+          if ( rt->haveSupportedDataRatesTxValue ) found = TRUE; break;
-+      }
-+    }
-+    if ( found )
-+      break;
-+  }
-+
-+  if ( !found ) 
-+    return NULL;
-+
-+  memcpy (( char * ) name, ( char * ) rName, ( vp->namelen + 2 ) * sizeof ( oid ));
-+  *length = vp->namelen + 2;
-+  *var_len = sizeof ( long );
-+  *write_method = NULL;
-+
-+  switch ( vp->magic ) {
-+
-+    case DOT11SUPPORTEDDATARATESTXVALUE:
-+      return ( UCHAR * ) &rt->supportedDataRatesTxValue;
-+        
-+    default:
-+      ERROR_MSG ( "" );
-+  }
-+
-+  return NULL;
-+}
-+
-+/****************************************************************************
-+*                                                                           *
-+*     var_dot11SupportedDataRatesRxTable() -                                *
-+*                                                                           *
-+****************************************************************************/
-+unsigned char *
-+var_dot11SupportedDataRatesRxTable ( struct variable *vp,
-+                                      oid     *name,
-+                                      size_t  *length,
-+                                      int     exact,
-+                                      size_t  *var_len,
-+                                      WriteMethod **write_method )
-+{
-+  int found = FALSE;
-+  oid rName [ MAX_OID_LEN ];                            // OID to be returned
-+
-+  loadTables();
-+  memcpy (( char * ) rName, ( char * ) vp->name, ( int ) vp->namelen * sizeof ( oid ));
-+  for ( np = LIST_FIRST ( &rrList ); np != NULL; np = LIST_NEXT ( np, nodes )) {
-+    rr = ( struct rrTbl_data * ) np->data;
-+    rName[vp->namelen + 0] = rr->ifIndex;
-+    rName[vp->namelen + 1] = rr->supportedDataRatesRxIndex;
-+    if ((  exact && ( snmp_oid_compare ( rName, vp->namelen + 2, name, *length ) == 0 )) ||
-+        ( !exact && ( snmp_oid_compare ( rName, vp->namelen + 2, name, *length ) >  0 ))) {
-+      switch ( vp->magic ) {
-+        case DOT11SUPPORTEDDATARATESRXVALUE:
-+          if ( rr->haveSupportedDataRatesRxValue ) found = TRUE; break;
-+      }
-+    }
-+    if ( found )
-+      break;
-+  }
-+
-+  if ( !found ) 
-+    return NULL;
-+
-+  memcpy (( char * ) name, ( char * ) rName, ( vp->namelen + 2 ) * sizeof ( oid ));
-+  *length = vp->namelen + 2;
-+  *var_len = sizeof ( long );
-+  *write_method = NULL;
-+
-+  switch ( vp->magic ) {
-+
-+    case DOT11SUPPORTEDDATARATESRXVALUE:
-+      return ( UCHAR * ) &rr->supportedDataRatesRxValue;
-+        
-+    default:
-+      ERROR_MSG ( "" );
-+  }
-+
-+  return NULL;
-+}
-+
-+/****************************************************************************
-+*                                                                           *
-+****************************************************************************/
-+int
-+write_dot11StationID(int      action,
-+            u_char   *var_val,
-+            u_char   var_val_type,
-+            size_t   var_val_len,
-+            u_char   *statP,
-+            oid      *name,
-+            size_t   name_len)
-+{
-+  static unsigned char string[SPRINT_MAX_LEN];
-+  int size;
-+
-+  switch ( action ) {
-+
-+    case RESERVE1:
-+      if ( var_val_type != ASN_OCTET_STR ) {
-+        fprintf ( stderr, "write to dot11StationID not ASN_OCTET_STR\n" );
-+        return SNMP_ERR_WRONGTYPE;
-+      }
-+      if ( var_val_len > sizeof ( string )) {
-+        fprintf ( stderr,"write to dot11StationID: bad length\n" );
-+        return SNMP_ERR_WRONGLENGTH;
-+      }
-+      break;
-+
-+    case RESERVE2:
-+    case FREE:
-+    case ACTION:
-+    case UNDO:
-+      break;
-+
-+    case COMMIT:
-+      break;
-+  }
-+
-+  return SNMP_ERR_NOERROR;
-+}
-+
-+/****************************************************************************
-+*                                                                           *
-+****************************************************************************/
-+int
-+write_dot11MediumOccupancyLimit(int      action,
-+            u_char   *var_val,
-+            u_char   var_val_type,
-+            size_t   var_val_len,
-+            u_char   *statP,
-+            oid      *name,
-+            size_t   name_len)
-+{
-+  static long *long_ret;
-+  int size;
-+
-+  switch ( action ) {
-+
-+    case RESERVE1:
-+      if ( var_val_type != ASN_INTEGER ) {
-+        fprintf ( stderr, "write to dot11MediumOccupancyLimit not ASN_INTEGER\n" );
-+        return SNMP_ERR_WRONGTYPE;
-+      }
-+      if ( var_val_len > sizeof ( long_ret )){
-+        fprintf ( stderr,"write to dot11MediumOccupancyLimit: bad length\n" );
-+        return SNMP_ERR_WRONGLENGTH;
-+      }
-+      break;
-+
-+    case RESERVE2:
-+    case FREE:
-+    case ACTION:
-+    case UNDO:
-+      break;
-+
-+    case COMMIT:
-+      break;
-+  }
-+
-+  return SNMP_ERR_NOERROR;
-+}
-+
-+/****************************************************************************
-+*                                                                           *
-+****************************************************************************/
-+int
-+write_dot11CFPPeriod(int      action,
-+            u_char   *var_val,
-+            u_char   var_val_type,
-+            size_t   var_val_len,
-+            u_char   *statP,
-+            oid      *name,
-+            size_t   name_len)
-+{
-+  static long *long_ret;
-+  int size;
-+
-+  switch ( action ) {
-+
-+    case RESERVE1:
-+      if ( var_val_type != ASN_INTEGER ) {