summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorasomers <asomers@FreeBSD.org>2015-09-01 18:57:57 +0000
committerasomers <asomers@FreeBSD.org>2015-09-01 18:57:57 +0000
commit2fa34e5809264269064cfede258aced90aee2795 (patch)
tree78b11ee8da515726b7d60c3cf11f76c0b76cf09e
parentfc011ff3b1637ca763f3585da46960b83b26141e (diff)
downloadFreeBSD-src-2fa34e5809264269064cfede258aced90aee2795.zip
FreeBSD-src-2fa34e5809264269064cfede258aced90aee2795.tar.gz
MFC r286892
Serve /etc/eui64 via NIS. The C library already knows how to lookup eui64 entries from NIS. For example, fwcontrol(8) does it. But /var/yp/Makefile.dist doesn't build the eui64 maps, and ypinit(8) doesn't push them to slaves. This change fixes that.
-rw-r--r--usr.sbin/ypserv/Makefile.yp38
-rw-r--r--usr.sbin/ypserv/ypinit.84
-rw-r--r--usr.sbin/ypserv/ypinit.sh5
3 files changed, 42 insertions, 5 deletions
diff --git a/usr.sbin/ypserv/Makefile.yp b/usr.sbin/ypserv/Makefile.yp
index 33ca444..fc207b6 100644
--- a/usr.sbin/ypserv/Makefile.yp
+++ b/usr.sbin/ypserv/Makefile.yp
@@ -103,6 +103,7 @@ YPMAPDIR = $(YPDIR)/$(DOMAIN)
# passwd file will be generated from the master.passwd file automagically.
#
ETHERS = $(YPSRCDIR)/ethers # ethernet addresses (for rarpd)
+EUI64 = $(YPSRCDIR)/eui64 # eui64 addresses (for firewire)
BOOTPARAMS= $(YPSRCDIR)/bootparams # for booting Sun boxes (bootparamd)
HOSTS = $(YPSRCDIR)/hosts
IPNODES = $(YPDIR)/ipnodes
@@ -143,8 +144,8 @@ TARGETS= servers hosts networks protocols rpc services shells group
#TARGETS+= aliases
# Sanity checks: filter out targets we can't build
-# Note that we don't build the ethers or boorparams maps by default
-# since /etc/ethers and /etc/bootparams are not likely to be present
+# Note that we don't build the ethers, eui64, or boorparams maps by default
+# since /etc/ethers, /etc/eui64 and /etc/bootparams are not likely to be present
# on all systems.
.if exists($(ETHERS))
TARGETS+= ethers
@@ -152,6 +153,12 @@ TARGETS+= ethers
ETHERS= /dev/null
.endif
+.if exists($(EUI64))
+TARGETS+= eui64
+.else
+EUI64= /dev/null
+.endif
+
.if exists($(BOOTPARAMS))
TARGETS+= bootparams
.else
@@ -195,6 +202,7 @@ IPNODES= /dev/null
all: $(TARGETS)
ethers: ethers.byname ethers.byaddr
+eui64: eui64.byname eui64.byid
bootparam: bootparams
hosts: hosts.byname hosts.byaddr
ipnodes: ipnodes.byname ipnodes.byaddr
@@ -294,6 +302,32 @@ ethers.byaddr: $(ETHERS)
@if [ ! $(NOPUSH) ]; then echo "Pushed $@ map." ; fi
.endif
+eui64.byname: $(EUI64)
+ @echo "Updating $@..."
+.if ${EUI64} == "/dev/null"
+ @echo "EUI64 source file not found -- skipping"
+.else
+ @$(AWK) '{ if ($$1 != "" && $$1 !~ "^#.*" && $$1 != "+") \
+ print $$2"\t"$$0 }' $(EUI64) | $(DBLOAD) -i $(EUI64) \
+ -o $(YPMAPDIR)/$@ - $(TMP); $(RMV) $(TMP) $@
+ @$(DBLOAD) -c
+ @if [ ! $(NOPUSH) ]; then $(YPPUSH) -d $(DOMAIN) $@; fi
+ @if [ ! $(NOPUSH) ]; then echo "Pushed $@ map." ; fi
+.endif
+
+eui64.byid: $(EUI64)
+ @echo "Updating $@..."
+.if ${EUI64} == "/dev/null"
+ @echo "EUI64 source file not found -- skipping"
+.else
+ @$(AWK) '{ if ($$1 != "" && $$1 !~ "^#.*" && $$1 != "+") \
+ print $$1"\t"$$0 }' $(EUI64) | $(DBLOAD) -i $(EUI64) \
+ -o $(YPMAPDIR)/$@ - $(TMP); $(RMV) $(TMP) $@
+ @$(DBLOAD) -c
+ @if [ ! $(NOPUSH) ]; then $(YPPUSH) -d $(DOMAIN) $@; fi
+ @if [ ! $(NOPUSH) ]; then echo "Pushed $@ map." ; fi
+.endif
+
bootparams: $(BOOTPARAMS)
@echo "Updating $@..."
diff --git a/usr.sbin/ypserv/ypinit.8 b/usr.sbin/ypserv/ypinit.8
index 524ec5e..6952530 100644
--- a/usr.sbin/ypserv/ypinit.8
+++ b/usr.sbin/ypserv/ypinit.8
@@ -30,7 +30,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd November 10, 1997
+.Dd August 18, 2015
.Dt YPINIT 8
.Os
.Sh NAME
@@ -147,6 +147,8 @@ can propagate updates on the master to all of the slaves.
Bootparams source file
.It Pa /etc/ethers
Ethers data source file
+.It Pa /etc/eui64
+EUI64 data source file
.It Pa /etc/group
Group source file
.It Pa /etc/hosts
diff --git a/usr.sbin/ypserv/ypinit.sh b/usr.sbin/ypserv/ypinit.sh
index 374308e..a55e4cb 100644
--- a/usr.sbin/ypserv/ypinit.sh
+++ b/usr.sbin/ypserv/ypinit.sh
@@ -14,8 +14,9 @@ MAPLIST="master.passwd.byname master.passwd.byuid passwd.byname passwd.byuid \
group.byname group.bygid hosts.byname hosts.byaddr services.byname \
rpc.byname rpc.bynumber networks.byname networks.byaddr netgroup \
netgroup.byuser netgroup.byhost netid.byname publickey.byname \
- bootparams ethers.byname ethers.byaddr amd.host mail.aliases \
- ypservers protocols.byname protocols.bynumber netmasks.byaddr"
+ bootparams ethers.byname ethers.byaddr eui64.byname eui64.byid \
+ amd.host mail.aliases ypservers protocols.byname protocols.bynumber \
+ netmasks.byaddr"
ERROR_EXISTS="NO"
umask 077
OpenPOWER on IntegriCloud