Add muninlite and xinetd
authorRISCi_ATOM <bob@bobcall.me>
Mon, 23 Mar 2020 21:09:01 +0000 (17:09 -0400)
committerRISCi_ATOM <bob@bobcall.me>
Mon, 23 Mar 2020 21:09:01 +0000 (17:09 -0400)
18 files changed:
admin/muninlite/Makefile [new file with mode: 0644]
admin/muninlite/files/etc/xinetd.d/munin [new file with mode: 0644]
admin/muninlite/patches/001-fix_disks.patch [new file with mode: 0644]
admin/muninlite/patches/002-hostname.patch [new file with mode: 0644]
admin/muninlite/patches/100-fix-no-ethtool.patch [new file with mode: 0644]
admin/muninlite/patches/110-fix-uptime-days.patch [new file with mode: 0644]
admin/muninlite/patches/200-add-tap-dev.patch [new file with mode: 0644]
admin/muninlite/patches/210-add-bridge-devs.patch [new file with mode: 0644]
admin/muninlite/patches/220-modify-ifname-parser.patch [new file with mode: 0644]
admin/muninlite/patches/230-fix-available-interface-parsing.patch [new file with mode: 0644]
admin/muninlite/patches/240-fix-irqstats.patch [new file with mode: 0644]
net/xinetd/Makefile [new file with mode: 0644]
net/xinetd/files/xinetd.conf [new file with mode: 0644]
net/xinetd/files/xinetd.init [new file with mode: 0644]
net/xinetd/patches/001-ar.patch [new file with mode: 0644]
net/xinetd/patches/002-destdir.patch [new file with mode: 0644]
net/xinetd/patches/003-rpc_fix.patch [new file with mode: 0644]
net/xinetd/patches/004-ident-bind.patch [new file with mode: 0644]

diff --git a/admin/muninlite/Makefile b/admin/muninlite/Makefile
new file mode 100644 (file)
index 0000000..522f534
--- /dev/null
@@ -0,0 +1,54 @@
+#
+# 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:=muninlite
+PKG_VERSION:=1.0.4
+PKG_RELEASE:=10
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=@SF/$(PKG_NAME)
+PKG_HASH:=736482dd6d6849d014d975b1f5794f20dda6e123dbba2d8c2f169c8e787e6f7e
+PKG_LICENSE:=GPL-2.0-or-later
+PKG_LICENSE_FILES:=LICENSE
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/muninlite
+  SECTION:=admin
+  CATEGORY:=Administration
+  DEPENDS:=+xinetd
+  TITLE:=Munin node implemented in shell
+  URL:=http://sourceforge.net/projects/muninlite/
+  PKG_MAINTAINER:=Jonathan McCrohan <jmccrohan@gmail.com>
+endef
+
+define Package/muninlite/Default/description
+       Munin node implemented in shell.
+       Munin is a monitoring system for Unix networks.
+endef
+
+define Package/muninlite/install
+       $(INSTALL_DIR) $(1)/usr/sbin/
+       $(INSTALL_BIN) $(PKG_BUILD_DIR)/munin-node $(1)/usr/sbin/
+       $(INSTALL_DIR) $(1)/etc/xinetd.d
+       $(INSTALL_DATA) ./files/etc/xinetd.d/munin $(1)/etc/xinetd.d/
+endef
+
+define Package/muninlite/conffiles
+/etc/xinetd.d/munin
+endef
+
+define Build/Configure
+endef
+
+define Build/Compile
+       $(MAKE) -C $(PKG_BUILD_DIR)
+endef
+
+$(eval $(call BuildPackage,muninlite))
diff --git a/admin/muninlite/files/etc/xinetd.d/munin b/admin/muninlite/files/etc/xinetd.d/munin
new file mode 100644 (file)
index 0000000..012d71b
--- /dev/null
@@ -0,0 +1,10 @@
+service munin
+{
+       socket_type     = stream
+       protocol        = tcp
+       wait            = no
+       user            = root
+       group           = root
+       server          = /usr/sbin/munin-node
+       disable         = no
+}
diff --git a/admin/muninlite/patches/001-fix_disks.patch b/admin/muninlite/patches/001-fix_disks.patch
new file mode 100644 (file)
index 0000000..a2264a8
--- /dev/null
@@ -0,0 +1,10 @@
+--- a/plugins/df
++++ b/plugins/df
+@@ -19,6 +19,6 @@ fetch_df() {
+   do
+     PINFO=$(df -P $PART | tail -1);
+     PNAME=$(echo $PINFO | cut -d\  -f1 | sed 's/[\/.-]/_/g')
+-    echo "$PNAME.value" $(echo $PINFO | cut -f5 -d\  | sed -e 's/\%//g')
++    echo "$PNAME.value" $(echo $PINFO | sed -e 's/\%//g' -e 's/  */ /g' | cut -f5 -d' ')
+   done
+ }
diff --git a/admin/muninlite/patches/002-hostname.patch b/admin/muninlite/patches/002-hostname.patch
new file mode 100644 (file)
index 0000000..5d87168
--- /dev/null
@@ -0,0 +1,11 @@
+--- a/munin-node.in
++++ b/munin-node.in
+@@ -113,7 +113,7 @@ PLUGINS=$RES
+ # ===== MAIN LOOP =====
+ FUNCTIONS="list nodes config fetch version quit"
+-HOSTNAME=$(hostname -f 2>/dev/null || hostname)
++HOSTNAME=$(/sbin/uci get "system.@system[0].hostname" 2>/dev/null || cat /proc/sys/kernel/hostname)
+ echo "# munin node at $HOSTNAME"
+ while read arg0 arg1 
+ do 
diff --git a/admin/muninlite/patches/100-fix-no-ethtool.patch b/admin/muninlite/patches/100-fix-no-ethtool.patch
new file mode 100644 (file)
index 0000000..88f7e30
--- /dev/null
@@ -0,0 +1,21 @@
+--- a/plugins/if_
++++ b/plugins/if_
+@@ -15,10 +15,14 @@ config_if() {
+   echo "up.min 0"
+   echo "up.negative down"
+   echo "up.cdef up,8,*"
+-  if ethtool $1 | grep -q Speed; then
+-    MAX=$(($(ethtool $1 | grep Speed | sed -e 's/[[:space:]]\{1,\}/ /g' -e 's/^ //' -e 's/M.*//' | cut -d\  -f2) * 1000000))
+-    echo "up.max $MAX"
+-    echo "down.max $MAX"
++  if [ -n "$(which ethtool)" ]; then
++      if [ -x "$(which ethtool)" ]; then
++              if ethtool $1 | grep -q Speed; then
++                      MAX=$(($(ethtool $1 | grep Speed | sed -e 's/[[:space:]]\{1,\}/ /g' -e 's/^ //' -e 's/M.*//' | cut -d\  -f2) * 1000000))
++                      echo "up.max $MAX"
++                      echo "down.max $MAX"
++              fi
++      fi
+   fi
+ }
+ fetch_if() {
diff --git a/admin/muninlite/patches/110-fix-uptime-days.patch b/admin/muninlite/patches/110-fix-uptime-days.patch
new file mode 100644 (file)
index 0000000..d9aa43f
--- /dev/null
@@ -0,0 +1,12 @@
+--- a/plugins/uptime
++++ b/plugins/uptime
+@@ -4,8 +4,7 @@ config_uptime() {
+   echo "graph_vlabel uptime in days"
+   echo "uptime.label uptime"
+   echo "uptime.draw AREA"
+-  echo "uptime.cdef uptime,86400,/"
+ }
+ fetch_uptime() {
+-  echo "uptime.value" $(cut -d\  -f1 /proc/uptime)
++  awk '{printf "uptime.value %.2f",$1/86400; print ""}' /proc/uptime
+ }
diff --git a/admin/muninlite/patches/200-add-tap-dev.patch b/admin/muninlite/patches/200-add-tap-dev.patch
new file mode 100644 (file)
index 0000000..fa46ce6
--- /dev/null
@@ -0,0 +1,20 @@
+--- a/munin-node.in
++++ b/munin-node.in
+@@ -72,7 +72,7 @@ RES=""
+ for PLUG in $PLUGINS
+ do 
+   if [ "$PLUG" = "if_" ]; then  
+-    for INTER in $(grep '^ *\(ppp\|eth\|wlan\|ath\|ra\|ipsec\)\([^:]\)\{1,\}:' /proc/net/dev | cut -f1 -d: | sed 's/ //g');
++    for INTER in $(grep '^ *\(ppp\|eth\|wlan\|ath\|ra\|ipsec\|tap\)\([^:]\)\{1,\}:' /proc/net/dev | cut -f1 -d: | sed 's/ //g');
+     do
+       INTERRES=$(echo $INTER | sed 's/\./VLAN/')
+       RES="$RES if_$INTERRES"
+@@ -80,7 +80,7 @@ do
+       eval "config_if_${INTERRES}() { config_if $INTER $@; };"
+     done
+   elif [ "$PLUG" = "if_err_" ]; then
+-    for INTER in $(grep '^ *\(ppp\|eth\|wlan\|ath\|ra\|ipsec\)\([^:]\)\{1,\}:' /proc/net/dev | cut -f1 -d: | sed 's/ //g');
++    for INTER in $(grep '^ *\(ppp\|eth\|wlan\|ath\|ra\|ipsec\|tap\)\([^:]\)\{1,\}:' /proc/net/dev | cut -f1 -d: | sed 's/ //g');
+     do
+       INTERRES=$(echo $INTER | sed 's/\./VLAN/')
+       RES="$RES if_err_$INTERRES"
diff --git a/admin/muninlite/patches/210-add-bridge-devs.patch b/admin/muninlite/patches/210-add-bridge-devs.patch
new file mode 100644 (file)
index 0000000..1a76e97
--- /dev/null
@@ -0,0 +1,24 @@
+--- a/munin-node.in
++++ b/munin-node.in
+@@ -72,17 +72,17 @@ RES=""
+ for PLUG in $PLUGINS
+ do 
+   if [ "$PLUG" = "if_" ]; then  
+-    for INTER in $(grep '^ *\(ppp\|eth\|wlan\|ath\|ra\|ipsec\|tap\)\([^:]\)\{1,\}:' /proc/net/dev | cut -f1 -d: | sed 's/ //g');
++    for INTER in $(grep '^ *\(ppp\|eth\|wlan\|ath\|ra\|ipsec\|tap\|br-\)\([^:]\)\{1,\}:' /proc/net/dev | cut -f1 -d: | sed 's/ //g');
+     do
+-      INTERRES=$(echo $INTER | sed 's/\./VLAN/')
++      INTERRES=$(echo $INTER | sed -e 's/\./VLAN/' -e 's/\-/_/')
+       RES="$RES if_$INTERRES"
+       eval "fetch_if_${INTERRES}() { fetch_if $INTER $@; };"
+       eval "config_if_${INTERRES}() { config_if $INTER $@; };"
+     done
+   elif [ "$PLUG" = "if_err_" ]; then
+-    for INTER in $(grep '^ *\(ppp\|eth\|wlan\|ath\|ra\|ipsec\|tap\)\([^:]\)\{1,\}:' /proc/net/dev | cut -f1 -d: | sed 's/ //g');
++    for INTER in $(grep '^ *\(ppp\|eth\|wlan\|ath\|ra\|ipsec\|tap\|br-\)\([^:]\)\{1,\}:' /proc/net/dev | cut -f1 -d: | sed 's/ //g');
+     do
+-      INTERRES=$(echo $INTER | sed 's/\./VLAN/')
++      INTERRES=$(echo $INTER | sed -e 's/\./VLAN/' -e 's/\-/_/')
+       RES="$RES if_err_$INTERRES"
+       eval "fetch_if_err_${INTERRES}() { fetch_if_err $INTER $@; };"
+       eval "config_if_err_${INTERRES}() { config_if_err $INTER $@; };"
diff --git a/admin/muninlite/patches/220-modify-ifname-parser.patch b/admin/muninlite/patches/220-modify-ifname-parser.patch
new file mode 100644 (file)
index 0000000..6a2ba23
--- /dev/null
@@ -0,0 +1,22 @@
+--- a/plugins/if_
++++ b/plugins/if_
+@@ -26,7 +26,7 @@ config_if() {
+   fi
+ }
+ fetch_if() {
+-  IINFO=$(grep "$1:" /proc/net/dev | cut -d: -f2 | sed -e 's/  / /g')
++  IINFO=$(grep "$1:" /proc/net/dev | cut -d: -f2 | sed -e 's/  */ /g' -e 's/^[ \t]*//')
+   echo "down.value" $(echo $IINFO | cut -d\  -f1)
+   echo "up.value" $(echo $IINFO | cut -d\  -f9)
+ }
+--- a/plugins/if_err_
++++ b/plugins/if_err_
+@@ -15,7 +15,7 @@ config_if_err() {
+   echo "trans.warning 1"
+ }
+ fetch_if_err() {
+-  IINFO=$(grep "$1:" /proc/net/dev | cut -d: -f2 | sed -e 's/  / /g')
++  IINFO=$(grep "$1:" /proc/net/dev | cut -d: -f2 | sed -e 's/  */ /g' -e 's/^[ \t]*//')
+   echo "rcvd.value" $(echo $IINFO | cut -d\  -f3)
+   echo "trans.value" $(echo $IINFO | cut -d\  -f11)
+ }
diff --git a/admin/muninlite/patches/230-fix-available-interface-parsing.patch b/admin/muninlite/patches/230-fix-available-interface-parsing.patch
new file mode 100644 (file)
index 0000000..2f227e5
--- /dev/null
@@ -0,0 +1,20 @@
+--- a/munin-node.in
++++ b/munin-node.in
+@@ -72,7 +72,7 @@ RES=""
+ for PLUG in $PLUGINS
+ do 
+   if [ "$PLUG" = "if_" ]; then  
+-    for INTER in $(grep '^ *\(ppp\|eth\|wlan\|ath\|ra\|ipsec\|tap\|br-\)\([^:]\)\{1,\}:' /proc/net/dev | cut -f1 -d: | sed 's/ //g');
++    for INTER in $(grep -E '^ *(ppp|eth|wlan|ath|ra|ipsec|tap|br-)[^:]{1,}:' /proc/net/dev | cut -f1 -d: | sed 's/ //g');
+     do
+       INTERRES=$(echo $INTER | sed -e 's/\./VLAN/' -e 's/\-/_/')
+       RES="$RES if_$INTERRES"
+@@ -80,7 +80,7 @@ do
+       eval "config_if_${INTERRES}() { config_if $INTER $@; };"
+     done
+   elif [ "$PLUG" = "if_err_" ]; then
+-    for INTER in $(grep '^ *\(ppp\|eth\|wlan\|ath\|ra\|ipsec\|tap\|br-\)\([^:]\)\{1,\}:' /proc/net/dev | cut -f1 -d: | sed 's/ //g');
++    for INTER in $(grep -E '^ *(ppp|eth|wlan|ath|ra|ipsec|tap|br-)[^:]{1,}:' /proc/net/dev | cut -f1 -d: | sed 's/ //g');
+     do
+       INTERRES=$(echo $INTER | sed -e 's/\./VLAN/' -e 's/\-/_/')
+       RES="$RES if_err_$INTERRES"
diff --git a/admin/muninlite/patches/240-fix-irqstats.patch b/admin/muninlite/patches/240-fix-irqstats.patch
new file mode 100644 (file)
index 0000000..4e2fb23
--- /dev/null
@@ -0,0 +1,10 @@
+--- a/plugins/irqstats 2007-11-30 11:39:08.000000000 +0100
++++ b/plugins/irqstats 2018-08-29 08:20:50.809468406 +0200
+@@ -1,6 +1,6 @@
+ config_irqstats() {
+   echo "graph_title Individual interrupts
+-graph_args --base 1000 -l 0;
++graph_args --base 1000 -l 0
+ graph_vlabel interrupts / \${graph_period}
+ graph_category system"
+   CPUS=$(grep 'CPU[0-9]' /proc/interrupts | wc -w)
diff --git a/net/xinetd/Makefile b/net/xinetd/Makefile
new file mode 100644 (file)
index 0000000..a105009
--- /dev/null
@@ -0,0 +1,68 @@
+#
+# Copyright (C) 2006-2015 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:=xinetd
+PKG_VERSION:=2.3.15
+PKG_RELEASE:=5
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://github.com/xinetd-org/xinetd/archive
+PKG_HASH:=bf4e060411c75605e4dcbdf2ac57c6bd9e1904470a2f91e01ba31b50a80a5be3
+PKG_LICENSE:=xinetd
+PKG_LICENSE_FILES:=COPYRIGHT
+PKG_CPE_ID:=cpe:/a:xinetd:xinetd
+
+PKG_INSTALL:=1
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/xinetd
+  SECTION:=net
+  CATEGORY:=Network
+  TITLE:=A powerful and secure super-server
+  URL:=https://github.com/xinetd-org
+  PKG_MAINTAINER:=Jonathan McCrohan <jmccrohan@gmail.com>
+endef
+
+define Package/xinetd/description
+       xinetd has access control mechanisms, extensive logging capabilities,
+       the ability to make services available based on time, can place limits
+       on the number of servers that can be started, and has deployable
+       defence mechanisms to protect against port scanners, among other
+       things.
+endef
+
+define Package/xinetd/conffiles
+/etc/xinetd.conf
+/etc/xinetd.d/
+endef
+
+TARGET_CFLAGS += -DNO_RPC
+TARGET_CPPFLAGS += -DHAVE_RLIM_T
+
+CONFIGURE_ARGS += \
+       --without-libwrap \
+       --with-loadavg
+
+CONFIGURE_VARS += \
+       ac_cv_header_rpc_pmap_clnt_h=no \
+       ac_cv_header_rpc_rpc_h=no \
+       ac_cv_header_rpc_rpcent_h=no
+
+define Package/xinetd/install
+       $(INSTALL_DIR) $(1)/usr/sbin
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/xinetd $(1)/usr/sbin/
+       $(INSTALL_DIR) $(1)/etc
+       $(INSTALL_DATA) ./files/xinetd.conf $(1)/etc/xinetd.conf
+       $(INSTALL_DIR) $(1)/etc/xinetd.d
+       $(INSTALL_DIR) $(1)/etc/init.d
+       $(INSTALL_BIN) ./files/xinetd.init $(1)/etc/init.d/xinetd
+endef
+
+$(eval $(call BuildPackage,xinetd))
diff --git a/net/xinetd/files/xinetd.conf b/net/xinetd/files/xinetd.conf
new file mode 100644 (file)
index 0000000..bd473ed
--- /dev/null
@@ -0,0 +1,6 @@
+defaults
+{
+
+}
+
+includedir /etc/xinetd.d
diff --git a/net/xinetd/files/xinetd.init b/net/xinetd/files/xinetd.init
new file mode 100644 (file)
index 0000000..1437f58
--- /dev/null
@@ -0,0 +1,15 @@
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2006-2011 OpenWrt.org
+
+START=50
+
+SERVICE_USE_PID=1
+
+start() {
+       service_start /usr/sbin/xinetd -pidfile /var/run/xinetd.pid
+}
+
+stop() {
+       service_stop /usr/sbin/xinetd
+}
+
diff --git a/net/xinetd/patches/001-ar.patch b/net/xinetd/patches/001-ar.patch
new file mode 100644 (file)
index 0000000..4d961ba
--- /dev/null
@@ -0,0 +1,66 @@
+--- a/libs/src/misc/Makefile.in
++++ b/libs/src/misc/Makefile.in
+@@ -62,7 +62,7 @@ libopt: clean
+ $(LIBNAME): $(OBJECTS)
+-      ar r $@ $?
++      $(AR) r $@ $?
+       $(RANLIB) $@
+ install: $(LIBNAME)
+--- a/libs/src/portable/Makefile.in
++++ b/libs/src/portable/Makefile.in
+@@ -57,7 +57,7 @@ libopt: clean
+ $(LIBNAME): $(OBJECTS)
+-      ar r $@ $?
++      $(AR) r $@ $?
+       $(RANLIB) $@
+ install: $(LIBNAME)
+--- a/libs/src/pset/Makefile.in
++++ b/libs/src/pset/Makefile.in
+@@ -53,7 +53,7 @@ libopt: clean
+       mv $(LIBNAME) $(LIBDIR)/optimized
+ $(LIBNAME): $(OBJECTS)
+-      ar r $@ $?
++      $(AR) r $@ $?
+       $(RANLIB) $@
+ install: $(LIBNAME)
+--- a/libs/src/sio/Makefile.in
++++ b/libs/src/sio/Makefile.in
+@@ -52,7 +52,7 @@ libopt: clean
+       $(INSTALL) $(FMODE) $(LIBNAME) $(LIBDIR)/optimized
+ $(LIBNAME): $(OBJECTS)
+-      ar r $@ $?
++      $(AR) r $@ $?
+       $(RANLIB) $@
+ install: $(LIBNAME)
+--- a/libs/src/str/Makefile.in
++++ b/libs/src/str/Makefile.in
+@@ -63,7 +63,7 @@ libopt: clean
+       $(INSTALL) $(FMODE) $(LIBNAME) $(LIBDIR)-O
+ $(LIBNAME): $(OBJECTS)
+-      ar r $@ $?
++      $(AR) r $@ $?
+       $(RANLIB) $@
+ LINT_IGNORE=possible pointer alignment|RCSid unused
+--- a/libs/src/xlog/Makefile.in
++++ b/libs/src/xlog/Makefile.in
+@@ -58,7 +58,7 @@ libopt: clean
+       $(INSTALL) $(FMODE) $(LIBNAME) $(LIBDIR)/optimized
+ $(LIBNAME): $(OBJECTS)
+-      ar r $@ $?
++      $(AR) r $@ $?
+       $(RANLIB) $@
+ install: $(LIBNAME)
diff --git a/net/xinetd/patches/002-destdir.patch b/net/xinetd/patches/002-destdir.patch
new file mode 100644 (file)
index 0000000..89075c8
--- /dev/null
@@ -0,0 +1,27 @@
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -75,15 +75,15 @@ dlibxlog: dlibsio dlibstr
+ install: build
+       for i in $(DAEMONDIR) $(BINDIR) $(MANDIR)/man5 $(MANDIR)/man8 ; do \
+-         test -d $$i || mkdir -p $$i ; done
+-      $(INSTALL_CMD) -m 755 xinetd/xinetd $(DAEMONDIR)
+-      $(INSTALL_CMD) -m 755 xinetd/itox $(DAEMONDIR)
+-      $(INSTALL_CMD) -m 755 $(SRCDIR)/xinetd/xconv.pl $(DAEMONDIR)
+-      $(INSTALL_CMD) -m 644 $(SRCDIR)/xinetd/xinetd.conf.man $(MANDIR)/man5/xinetd.conf.5
+-      $(INSTALL_CMD) -m 644 $(SRCDIR)/xinetd/xinetd.log.man $(MANDIR)/man8/xinetd.log.8
+-      $(INSTALL_CMD) -m 644 $(SRCDIR)/xinetd/xinetd.man $(MANDIR)/man8/xinetd.8
+-      $(INSTALL_CMD) -m 644 $(SRCDIR)/xinetd/itox.8 $(MANDIR)/man8/itox.8
+-      $(INSTALL_CMD) -m 644 $(SRCDIR)/xinetd/xconv.pl.8 $(MANDIR)/man8/xconv.pl.8
++         test -d $(DESTDIR)$$i || mkdir -p $(DESTDIR)$$i ; done
++      $(INSTALL_CMD) -m 755 xinetd/xinetd $(DESTDIR)$(DAEMONDIR)
++      $(INSTALL_CMD) -m 755 xinetd/itox $(DESTDIR)$(DAEMONDIR)
++      $(INSTALL_CMD) -m 755 $(SRCDIR)/xinetd/xconv.pl $(DESTDIR)$(DAEMONDIR)
++      $(INSTALL_CMD) -m 644 $(SRCDIR)/xinetd/xinetd.conf.man $(DESTDIR)$(MANDIR)/man5/xinetd.conf.5
++      $(INSTALL_CMD) -m 644 $(SRCDIR)/xinetd/xinetd.log.man $(DESTDIR)$(MANDIR)/man8/xinetd.log.8
++      $(INSTALL_CMD) -m 644 $(SRCDIR)/xinetd/xinetd.man $(DESTDIR)$(MANDIR)/man8/xinetd.8
++      $(INSTALL_CMD) -m 644 $(SRCDIR)/xinetd/itox.8 $(DESTDIR)$(MANDIR)/man8/itox.8
++      $(INSTALL_CMD) -m 644 $(SRCDIR)/xinetd/xconv.pl.8 $(DESTDIR)$(MANDIR)/man8/xconv.pl.8
+       @echo "You must put your xinetd.conf in /etc/xinetd.conf"
+       @echo "There is a sample config file in xinetd/sample.conf and you can"
+       @echo "use xconv.pl to convert your old inetd.conf file to an xinetd format"
diff --git a/net/xinetd/patches/003-rpc_fix.patch b/net/xinetd/patches/003-rpc_fix.patch
new file mode 100644 (file)
index 0000000..11f47e7
--- /dev/null
@@ -0,0 +1,19 @@
+--- a/xinetd/confparse.c
++++ b/xinetd/confparse.c
+@@ -745,7 +745,7 @@ static status_e check_entry( struct serv
+          }
+    }
+-/* #ifndef NO_RPC */
++#ifndef NO_RPC
+ #if defined(HAVE_RPC_RPCENT_H) || defined(HAVE_NETDB_H)
+    if ( SC_IS_RPC( scp ) && !SC_IS_UNLISTED( scp ) )
+    {
+@@ -759,6 +759,7 @@ static status_e check_entry( struct serv
+       SC_RPCDATA( scp )->rd_program_number = rep->r_number ;
+    }
+    else
++#endif
+ #endif   /* ! NO_RPC */
+    {
+        if ( !SC_IS_UNLISTED( scp ) ) 
diff --git a/net/xinetd/patches/004-ident-bind.patch b/net/xinetd/patches/004-ident-bind.patch
new file mode 100644 (file)
index 0000000..0da0148
--- /dev/null
@@ -0,0 +1,42 @@
+xinetd: socket bind: Invalid argument (errno = 22) when using USERID on ipv6
+
+Use right size of addresses in bind() call. Also use getpeername addresses when
+connecting to ident service to prevent address family mismatch between socket(),
+bind() and connect() calls.
+
+Author: Jan Safranek <jsafrane@redhat.com>
+Reviewed-By: Adam Tkac <atkac@redhat.com>
+
+#diff -up xinetd-2.3.14/xinetd/ident.c.orig xinetd-2.3.14/xinetd/ident.c
+--- a/xinetd/ident.c
++++ b/xinetd/ident.c
+@@ -97,7 +97,13 @@ idresult_e log_remote_user( const struct
+    }
+    CLEAR( sin_contact );
+-   sin_remote = *CONN_XADDRESS( SERVER_CONNECTION( serp ) ) ;
++
++   sin_len = sizeof( sin_remote );
++   if ( getpeername( SERVER_FD( serp ), &sin_remote.sa, &sin_len ) == -1 )
++   {
++      msg( LOG_ERR, func, "(%d) getpeername: %m", getpid() ) ;
++      return( IDR_ERROR ) ;
++   }
+    sin_contact = sin_remote;
+    memcpy( &sin_bind, &sin_local, sizeof(sin_bind) ) ;
+    local_port = 0;
+@@ -127,7 +133,13 @@ idresult_e log_remote_user( const struct
+       msg( LOG_ERR, func, "socket creation: %m" ) ;
+       return( IDR_ERROR ) ;
+    }
+-   if ( bind(sd, &sin_bind.sa, sizeof(sin_bind.sa)) == -1 )
++
++   if ( sin_bind.sa.sa_family == AF_INET ) 
++      sin_len = sizeof( sin_bind.sa_in ) ;
++   else
++      sin_len = sizeof( sin_bind.sa_in6 ) ;
++
++   if ( bind(sd, &sin_bind.sa, sin_len) == -1 )
+    { 
+       msg( LOG_ERR, func, "socket bind: %m" ) ;
+       (void) Sclose( sd ) ;