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.

Reviewed by:	brooks, wblock
MFC after:	2 weeks
Sponsored by:	SpectraLogic Corp
Differential Revision:	https://reviews.freebsd.org/D3404
This commit is contained in:
asomers 2015-08-18 15:33:23 +00:00
parent 1f76fb0f26
commit b1d32f9864
3 changed files with 42 additions and 5 deletions

View File

@ -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 $@..."

View File

@ -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

View File

@ -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