|
View:
New views
16 Messages
—
Rating Filter:
Alert me
|
|
|
[RFC] script for binding ARP <-> IP pairs-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1 Hi, Here is a new rc.d startup script, which helps to bind static ARP entries like this: static_arp_pairs="gw" arp_gw="172.16.1.254 00:1c:58:6a:7a:4c" At the beginning I was inclined to add an "options" part for this script which helps to set e.g. logging options for ARP but it looks that these would be redundant, i.e., can be done with easy /etc/sysctl.conf. Comments? Cheers, - -- Xin LI <delphij@...> http://www.delphij.net/ FreeBSD - The Power to Serve! -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.12 (FreeBSD) iEYEARECAAYFAkp7J5IACgkQi+vbBBjt66Du7QCePX+p8F8u6i/4mCGW+I//eFBu O7oAn2TdLvcH9TFHR1bY3zKlJ8NTAJx4 =OAHW -----END PGP SIGNATURE----- #!/bin/sh # # Copyright (c) 2009 Xin LI <delphij@...> # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # # Configure static ARP table # # $FreeBSD$ # # PROVIDE: arp # REQUIRE: netif # KEYWORD: nojail . /etc/rc.subr name="arp" start_cmd="arp_start" stop_cmd="arp_stop" arp_start() { if [ -n "${static_arp_pairs}" ]; then echo -n 'Binding static ARP pair:' for e in ${static_arp_pairs}; do echo -n " ${e}" eval arp_args=\$arp_${e} arp -S ${arp_args} >/dev/null 2>&1 done echo '.' fi } arp_stop() { if [ -n "${static_arp_pairs}" ]; then echo -n 'Unbinding static ARP pair:' for e in ${static_arp_pairs}; do echo -n " ${e}" eval arp_args=\$arp_${e} arp_args=`echo ${arp_args} | sed -e s,..:..:..:..:..:..,,g` arp -d ${arp_args} >/dev/null 2>&1 done echo '.' fi } load_rc_config $name run_rc_command "$1" _______________________________________________ freebsd-rc@... mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-rc To unsubscribe, send any mail to "freebsd-rc-unsubscribe@..." |
|
|
Re: [RFC] script for binding ARP <-> IP pairsXin LI wrote:
> Hi, > > Here is a new rc.d startup script, which helps to bind static ARP > entries like this: > > static_arp_pairs="gw" > arp_gw="172.16.1.254 00:1c:58:6a:7a:4c" > > At the beginning I was inclined to add an "options" part for this script > which helps to set e.g. logging options for ARP but it looks that these > would be redundant, i.e., can be done with easy /etc/sysctl.conf. > > Comments? This looks pretty good. My only suggestion would be to change the file name, $name and PROVIDE to static_arp (and then in your example above the second var would be static_arp_gw). I realize that currently we have a non-trivial number of legacy variables that don't match their related script names and/or $name, however going forward my preference would be that we not add any more examples of this. I also think it's a bit more descriptive of what you're doing in the script. hth, Doug _______________________________________________ freebsd-rc@... mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-rc To unsubscribe, send any mail to "freebsd-rc-unsubscribe@..." |
|
|
Re: [RFC] script for binding ARP <-> IP pairsHi, Doug,
Doug Barton wrote: > Xin LI wrote: >> Hi, >> >> Here is a new rc.d startup script, which helps to bind static ARP >> entries like this: >> >> static_arp_pairs="gw" >> arp_gw="172.16.1.254 00:1c:58:6a:7a:4c" >> >> At the beginning I was inclined to add an "options" part for this script >> which helps to set e.g. logging options for ARP but it looks that these >> would be redundant, i.e., can be done with easy /etc/sysctl.conf. >> >> Comments? > > This looks pretty good. My only suggestion would be to change the file > name, $name and PROVIDE to static_arp (and then in your example above > the second var would be static_arp_gw). I realize that currently we > have a non-trivial number of legacy variables that don't match their > related script names and/or $name, however going forward my preference > would be that we not add any more examples of this. I also think it's > a bit more descriptive of what you're doing in the script. with rc.conf.5 and defaults/rc.conf changes. Cheers, -- Xin LI <delphij@...> http://www.delphij.net/ FreeBSD - The Power to Serve! Index: etc/defaults/rc.conf =================================================================== --- etc/defaults/rc.conf (revision 196086) +++ etc/defaults/rc.conf (working copy) @@ -357,6 +357,7 @@ ### Network routing options: ### defaultrouter="NO" # Set to default gateway (or NO). +static_arp_pairs="" # Set to static ARP list (or leave empty). static_routes="" # Set to static route list (or leave empty). natm_static_routes="" # Set to static route list for NATM (or leave empty). gateway_enable="NO" # Set to YES if this host will be a gateway. Index: etc/rc.d/Makefile =================================================================== --- etc/rc.d/Makefile (revision 196086) +++ etc/rc.d/Makefile (working copy) @@ -32,7 +32,7 @@ random rarpd resolv rfcomm_pppd_server root \ route6d routed routing rpcbind rtadvd rwho \ savecore sdpd securelevel sendmail \ - serial sppp statd swap1 \ + serial static_arp sppp statd swap1 \ syscons sysctl syslogd \ timed tmp \ ugidfw \ Index: etc/rc.d/static_arp =================================================================== --- etc/rc.d/static_arp (revision 0) +++ etc/rc.d/static_arp (revision 0) @@ -0,0 +1,70 @@ +#!/bin/sh +# +# Copyright (c) 2009 Xin LI <delphij@...> +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# +# Configure static ARP table +# +# $FreeBSD$ +# + +# PROVIDE: static_arp +# REQUIRE: netif +# KEYWORD: nojail + +. /etc/rc.subr + +name="static_arp" +start_cmd="static_arp_start" +stop_cmd="static_arp_stop" + +static_arp_start() +{ + if [ -n "${static_arp_pairs}" ]; then + echo -n 'Binding static ARP pair:' + for e in ${static_arp_pairs}; do + echo -n " ${e}" + eval arp_args=\$arp_${e} + arp -S ${arp_args} >/dev/null 2>&1 + done + echo '.' + fi +} + +static_arp_stop() +{ + if [ -n "${static_arp_pairs}" ]; then + echo -n 'Unbinding static ARP pair:' + for e in ${static_arp_pairs}; do + echo -n " ${e}" + eval arp_args=\$arp_${e} + arp_args=`echo ${arp_args} | sed -e s,..:..:..:..:..:..,,g` + arp -d ${arp_args} >/dev/null 2>&1 + done + echo '.' + fi +} + +load_rc_config $name +run_rc_command "$1" Index: share/man/man5/rc.conf.5 =================================================================== --- share/man/man5/rc.conf.5 (revision 196086) +++ share/man/man5/rc.conf.5 (working copy) @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd April 10, 2009 +.Dd August 10, 2009 .Dt RC.CONF 5 .Os .Sh NAME @@ -2227,6 +2227,23 @@ .Pq Vt str The IPv6 equivalent of .Va defaultrouter . +.It Va static_arp_pairs +.Pq Vt str +Set to the list of static ARP paris that are to be added at system +boot time. +For each whitespace separated +.Ar element +in the value, a +.Va +arp_ Ns Aq Ar element +variable is assumed to exist whose contents will later be passed to a +.Dq Nm arp Cm -S +operation. +For example +.Bd -literal +static_arp_pairs="gw" +arp_gw="192.168.1.1 00:01:02:03:04:05" +.Ed .It Va static_routes .Pq Vt str Set to the list of static routes that are to be added at system _______________________________________________ freebsd-rc@... mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-rc To unsubscribe, send any mail to "freebsd-rc-unsubscribe@..." |
|
|
Re: [RFC] script for binding ARP <-> IP pairsXin LI wrote:
> Thanks for your comments, I have put together the revised patch, along > with rc.conf.5 and defaults/rc.conf changes. Glad to help. This looks fine except that you need an entry for static_arp_enable in defaults rc.conf and rc.conf.5. Once you get that into the patch I would send it to -net for a final review, then ask re@ to commit it. Since this is off by default and affects only a small group of users I don't see any reason we can't add it, even at this late date. Doug -- This .signature sanitized for your protection _______________________________________________ freebsd-rc@... mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-rc To unsubscribe, send any mail to "freebsd-rc-unsubscribe@..." |
|
|
Re: [RFC] script for binding ARP <-> IP pairsHi, Doug,
Doug Barton wrote: > Xin LI wrote: > >> Thanks for your comments, I have put together the revised patch, along >> with rc.conf.5 and defaults/rc.conf changes. > > Glad to help. This looks fine except that you need an entry for > static_arp_enable in defaults rc.conf and rc.conf.5. This script does not require the enable knob. If the static_arp_pairs is not empty then the script would add the entries, otherwise it will not do that. Do you think we need an "enable" knob for it? I can add it but I don't feel strongly for the idea, since it would make a redundant entry to represent the same semantic. Cheers, -- Xin LI <delphij@...> http://www.delphij.net/ FreeBSD - The Power to Serve! _______________________________________________ freebsd-rc@... mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-rc To unsubscribe, send any mail to "freebsd-rc-unsubscribe@..." |
|
|
Re: [RFC] script for binding ARP <-> IP pairsOn Sun, 9 Aug 2009, Xin LI wrote:
> Hi, Doug, > > Doug Barton wrote: >> Xin LI wrote: >> >>> Thanks for your comments, I have put together the revised patch, along >>> with rc.conf.5 and defaults/rc.conf changes. >> >> Glad to help. This looks fine except that you need an entry for >> static_arp_enable in defaults rc.conf and rc.conf.5. > > This script does not require the enable knob. If the static_arp_pairs > is not empty then the script would add the entries, otherwise it will > not do that. Do you think we need an "enable" knob for it? I can add > it but I don't feel strongly for the idea, since it would make a > redundant entry to represent the same semantic. I missed the fact that you're not using rcvar. I'm sort of ambivalent about that, as I prefer things to be consistent, but I'm not actively opposed to it. If no one else has an objection go ahead and send it to -net. Doug -- This .signature sanitized for your protection _______________________________________________ freebsd-rc@... mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-rc To unsubscribe, send any mail to "freebsd-rc-unsubscribe@..." |
|
|
Re: [RFC] script for binding ARP <-> IP pairsHi,
On Mon, Aug 10, 2009 at 7:34 AM, Doug Barton <dougb@...> wrote: > On Sun, 9 Aug 2009, Xin LI wrote: > > Hi, Doug, >> >> Doug Barton wrote: >> >>> Xin LI wrote: >>> >>> Thanks for your comments, I have put together the revised patch, along >>>> with rc.conf.5 and defaults/rc.conf changes. >>>> >>> >>> Glad to help. This looks fine except that you need an entry for >>> static_arp_enable in defaults rc.conf and rc.conf.5. >>> >> >> This script does not require the enable knob. If the static_arp_pairs >> is not empty then the script would add the entries, otherwise it will >> not do that. Do you think we need an "enable" knob for it? I can add >> it but I don't feel strongly for the idea, since it would make a >> redundant entry to represent the same semantic. >> > > I missed the fact that you're not using rcvar. I'm sort of ambivalent about > that, as I prefer things to be I guess you could compare this to the cloned_interfaces rcvar... > consistent, but I'm not actively opposed to it. If no one else has an > objection go ahead and send it to -net. > Just a bit of QC/improvement: Index: etc/rc.d/static_arp =================================================================== - echo -n 'Binding static ARP pair:' + echo -n 'Binding static ARP pair(s):' - arp_args=`echo ${arp_args} | sed -e s,..:..:..:..:..:..,,g` + arp_args=`echo ${arp_args} | awk '{ print $1 }'` Index: share/man/man5/rc.conf.5 =================================================================== -Set to the list of static ARP paris that are to be added at system +Set to the list of static ARP pairs that are to be added at system Regards, Adrian Penisoara EnterpriseBSD _______________________________________________ freebsd-rc@... mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-rc To unsubscribe, send any mail to "freebsd-rc-unsubscribe@..." |
|
|
Re: [RFC] script for binding ARP <-> IP pairs-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1 Hi, Adrian, Adrian Penisoara wrote: [...] > Just a bit of QC/improvement: > > Index: etc/rc.d/static_arp > =================================================================== > - echo -n 'Binding static ARP pair:' > + echo -n 'Binding static ARP pair(s):' Thanks, I have changed both. > - arp_args=`echo ${arp_args} | sed -e > s,..:..:..:..:..:..,,g` > + arp_args=`echo ${arp_args} | awk '{ print $1 }'` After carefully reading the sh(1) manual, I find another way which does not need to use any sed/awk at all: arp -d ${arp_args%%[ ]*} > /dev/null 2>&1 > Index: share/man/man5/rc.conf.5 > =================================================================== > -Set to the list of static ARP paris that are to be added at system > +Set to the list of static ARP pairs that are to be added at system Thanks, changed in the patch. Here is the revised patch based on your comments. Cheers, - -- Xin LI <delphij@...> http://www.delphij.net/ FreeBSD - The Power to Serve! -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.12 (FreeBSD) iEYEARECAAYFAkqAbRYACgkQi+vbBBjt66ADfwCgp79vVw0kMv1qYYc7Lmjkwn6s FEAAnjjOxHVBifAKpbnnU01XOZynij6W =P5jW -----END PGP SIGNATURE----- Index: etc/defaults/rc.conf =================================================================== --- etc/defaults/rc.conf (revision 196086) +++ etc/defaults/rc.conf (working copy) @@ -357,6 +357,7 @@ ### Network routing options: ### defaultrouter="NO" # Set to default gateway (or NO). +static_arp_pairs="" # Set to static ARP list (or leave empty). static_routes="" # Set to static route list (or leave empty). natm_static_routes="" # Set to static route list for NATM (or leave empty). gateway_enable="NO" # Set to YES if this host will be a gateway. Index: etc/rc.d/Makefile =================================================================== --- etc/rc.d/Makefile (revision 196086) +++ etc/rc.d/Makefile (working copy) @@ -32,7 +32,7 @@ random rarpd resolv rfcomm_pppd_server root \ route6d routed routing rpcbind rtadvd rwho \ savecore sdpd securelevel sendmail \ - serial sppp statd swap1 \ + serial static_arp sppp statd swap1 \ syscons sysctl syslogd \ timed tmp \ ugidfw \ Index: etc/rc.d/static_arp =================================================================== --- etc/rc.d/static_arp (revision 0) +++ etc/rc.d/static_arp (revision 0) @@ -0,0 +1,69 @@ +#!/bin/sh +# +# Copyright (c) 2009 Xin LI <delphij@...> +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# +# Configure static ARP table +# +# $FreeBSD$ +# + +# PROVIDE: static_arp +# REQUIRE: netif +# KEYWORD: nojail + +. /etc/rc.subr + +name="static_arp" +start_cmd="static_arp_start" +stop_cmd="static_arp_stop" + +static_arp_start() +{ + if [ -n "${static_arp_pairs}" ]; then + echo -n 'Binding static ARP pair(s):' + for e in ${static_arp_pairs}; do + echo -n " ${e}" + eval arp_args=\$arp_${e} + arp -S ${arp_args} >/dev/null 2>&1 + done + echo '.' + fi +} + +static_arp_stop() +{ + if [ -n "${static_arp_pairs}" ]; then + echo -n 'Unbinding static ARP pair(s):' + for e in ${static_arp_pairs}; do + echo -n " ${e}" + eval arp_args=\$arp_${e} + arp -d ${arp_args%%[ ]*} > /dev/null 2>&1 + done + echo '.' + fi +} + +load_rc_config $name +run_rc_command "$1" Index: share/man/man5/rc.conf.5 =================================================================== --- share/man/man5/rc.conf.5 (revision 196086) +++ share/man/man5/rc.conf.5 (working copy) @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd April 10, 2009 +.Dd August 10, 2009 .Dt RC.CONF 5 .Os .Sh NAME @@ -2227,6 +2227,23 @@ .Pq Vt str The IPv6 equivalent of .Va defaultrouter . +.It Va static_arp_pairs +.Pq Vt str +Set to the list of static ARP pairs that are to be added at system +boot time. +For each whitespace separated +.Ar element +in the value, a +.Va +arp_ Ns Aq Ar element +variable is assumed to exist whose contents will later be passed to a +.Dq Nm arp Cm -S +operation. +For example +.Bd -literal +static_arp_pairs="gw" +arp_gw="192.168.1.1 00:01:02:03:04:05" +.Ed .It Va static_routes .Pq Vt str Set to the list of static routes that are to be added at system _______________________________________________ freebsd-rc@... mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-rc To unsubscribe, send any mail to "freebsd-rc-unsubscribe@..." |
|
|
Re: [RFC] script for binding ARP <-> IP pairsHi,
On Mon, Aug 10, 2009 at 8:13 PM, Adrian Penisoara <ady@...>wrote: > Hi, > > On Mon, Aug 10, 2009 at 7:34 AM, Doug Barton <dougb@...> wrote: > >> On Sun, 9 Aug 2009, Xin LI wrote: >> >> Hi, Doug, >>> >>> Doug Barton wrote: >>> >>>> Xin LI wrote: >>>> >>>> Thanks for your comments, I have put together the revised patch, along >>>>> with rc.conf.5 and defaults/rc.conf changes. >>>>> >>>> >>>> Glad to help. This looks fine except that you need an entry for >>>> static_arp_enable in defaults rc.conf and rc.conf.5. >>>> >>> >>> This script does not require the enable knob. If the static_arp_pairs >>> is not empty then the script would add the entries, otherwise it will >>> not do that. Do you think we need an "enable" knob for it? I can add >>> it but I don't feel strongly for the idea, since it would make a >>> redundant entry to represent the same semantic. >>> >> >> I missed the fact that you're not using rcvar. I'm sort of ambivalent >> about that, as I prefer things to be > > > I guess you could compare this to the cloned_interfaces rcvar... > > I stand corrected: it's rather more similar to the "static_routes / route_xxx" concept. I guess we have an entire class of such rc subroutines which are not $name_enable'd. Regards, Adrian. _______________________________________________ freebsd-rc@... mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-rc To unsubscribe, send any mail to "freebsd-rc-unsubscribe@..." |
|
|
Re: [RFC] script for binding ARP <-> IP pairs-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1 Any objections for the attached patch? I'll commit this version if everybody is happy with it and then see if re@ would approve it for 8.0-RELEASE. Cheers, - -- Xin LI <delphij@...> http://www.delphij.net/ FreeBSD - The Power to Serve! -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.12 (FreeBSD) iEYEARECAAYFAkqTMpQACgkQi+vbBBjt66CoRQCgwRQaFjKsZE8+jj/CXGdl0I8n 74oAn0ptg/pwgHSDmw9iUbQcEXlJULhu =UvH8 -----END PGP SIGNATURE----- Index: etc/defaults/rc.conf =================================================================== --- etc/defaults/rc.conf (revision 196516) +++ etc/defaults/rc.conf (working copy) @@ -357,6 +357,7 @@ ### Network routing options: ### defaultrouter="NO" # Set to default gateway (or NO). +static_arp_pairs="" # Set to static ARP list (or leave empty). static_routes="" # Set to static route list (or leave empty). natm_static_routes="" # Set to static route list for NATM (or leave empty). gateway_enable="NO" # Set to YES if this host will be a gateway. Index: etc/rc.d/Makefile =================================================================== --- etc/rc.d/Makefile (revision 196516) +++ etc/rc.d/Makefile (working copy) @@ -32,7 +32,7 @@ random rarpd resolv rfcomm_pppd_server root \ route6d routed routing rpcbind rtadvd rwho \ savecore sdpd securelevel sendmail \ - serial sppp statd swap1 \ + serial sppp statd static_arp swap1 \ syscons sysctl syslogd \ timed tmp \ ugidfw \ Index: etc/rc.d/static_arp =================================================================== --- etc/rc.d/static_arp (revision 0) +++ etc/rc.d/static_arp (revision 0) @@ -0,0 +1,69 @@ +#!/bin/sh +# +# Copyright (c) 2009 Xin LI <delphij@...> +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# +# Configure static ARP table +# +# $FreeBSD$ +# + +# PROVIDE: static_arp +# REQUIRE: netif +# KEYWORD: nojail + +. /etc/rc.subr + +name="static_arp" +start_cmd="static_arp_start" +stop_cmd="static_arp_stop" + +static_arp_start() +{ + if [ -n "${static_arp_pairs}" ]; then + echo -n 'Binding static ARP pair(s):' + for e in ${static_arp_pairs}; do + echo -n " ${e}" + eval arp_args=\$arp_${e} + arp -S ${arp_args} >/dev/null 2>&1 + done + echo '.' + fi +} + +static_arp_stop() +{ + if [ -n "${static_arp_pairs}" ]; then + echo -n 'Unbinding static ARP pair(s):' + for e in ${static_arp_pairs}; do + echo -n " ${e}" + eval arp_args=\$arp_${e} + arp -d ${arp_args%%[ ]*} > /dev/null 2>&1 + done + echo '.' + fi +} + +load_rc_config $name +run_rc_command "$1" Index: share/man/man5/rc.conf.5 =================================================================== --- share/man/man5/rc.conf.5 (revision 196516) +++ share/man/man5/rc.conf.5 (working copy) @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd April 10, 2009 +.Dd August 10, 2009 .Dt RC.CONF 5 .Os .Sh NAME @@ -2227,6 +2227,23 @@ .Pq Vt str The IPv6 equivalent of .Va defaultrouter . +.It Va static_arp_pairs +.Pq Vt str +Set to the list of static ARP pairs that are to be added at system +boot time. +For each whitespace separated +.Ar element +in the value, a +.Va +arp_ Ns Aq Ar element +variable is assumed to exist whose contents will later be passed to a +.Dq Nm arp Cm -S +operation. +For example +.Bd -literal +static_arp_pairs="gw" +arp_gw="192.168.1.1 00:01:02:03:04:05" +.Ed .It Va static_routes .Pq Vt str Set to the list of static routes that are to be added at system _______________________________________________ freebsd-rc@... mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-rc To unsubscribe, send any mail to "freebsd-rc-unsubscribe@..." |
|
|
Re: [RFC] script for binding ARP <-> IP pairsXin LI wrote:
> Any objections for the attached patch? I'll commit this version if > everybody is happy with it and then see if re@ would approve it for > 8.0-RELEASE. Sorry if I wasn't clear before, but all of the rc.conf variables should be prepended with static_arp_ (as opposed to just arp_). So rather than arp_args you'd want static_arp_args. I realize you're not using set_rcvar() but it's still a good idea to do that for consistency's sake, as well as to make it easier for admins to sort stuff, etc. Please make sure you change that in the man page as well. Other than that it looks fine to me. Silly question that I'm sorry just occurred to me right now, have you tested this with IPv6? :) Doug -- This .signature sanitized for your protection _______________________________________________ freebsd-rc@... mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-rc To unsubscribe, send any mail to "freebsd-rc-unsubscribe@..." |
|
|
Re: [RFC] script for binding ARP <-> IP pairsDoug Barton <dougb@...> wrote
in <4A93351E.2020107@...>: do> Xin LI wrote: do> > Any objections for the attached patch? I'll commit this version if do> > everybody is happy with it and then see if re@ would approve it for do> > 8.0-RELEASE. do> do> Sorry if I wasn't clear before, but all of the rc.conf variables do> should be prepended with static_arp_ (as opposed to just arp_). So do> rather than arp_args you'd want static_arp_args. I realize you're not do> using set_rcvar() but it's still a good idea to do that for do> consistency's sake, as well as to make it easier for admins to sort do> stuff, etc. Please make sure you change that in the man page as well. I agree with this. do> Silly question that I'm sorry just occurred to me right now, have you do> tested this with IPv6? :) IPv6 uses NDP (see ndp(8)), not ARP, so no consideration is needed for $static_arp_* variables at least. -- Hiroki |
|
|
Re: [RFC] script for binding ARP <-> IP pairs-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1 Doug Barton wrote: > Xin LI wrote: >> Any objections for the attached patch? I'll commit this version if >> everybody is happy with it and then see if re@ would approve it for >> 8.0-RELEASE. > > Sorry if I wasn't clear before, but all of the rc.conf variables > should be prepended with static_arp_ (as opposed to just arp_). So > rather than arp_args you'd want static_arp_args. I realize you're not > using set_rcvar() but it's still a good idea to do that for > consistency's sake, as well as to make it easier for admins to sort > stuff, etc. Please make sure you change that in the man page as well. that "arp_args" are not changed because they are intermediate variables that are intended as "arp(1) arguments". I have marked these as local. > Other than that it looks fine to me. > > Silly question that I'm sorry just occurred to me right now, have you > tested this with IPv6? :) I think IPv6 would need to use "ndp" instead (cross referenced from arp(8)) but am not sure. Because the script rely on space or tab as separator I think it would just work after a simple s/arp/ndp/g for ndp but I don't have a local production IPv6 network for the test... Cheers, - -- Xin LI <delphij@...> http://www.delphij.net/ FreeBSD - The Power to Serve! -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.12 (FreeBSD) iEYEARECAAYFAkqTO3cACgkQi+vbBBjt66CtWwCZARUOgOP3AoZEEEeCCXl9ziVT ZwsAoIC1cmv6d0QY7z1RjEoFcfz0Sey/ =py3J -----END PGP SIGNATURE----- Index: etc/defaults/rc.conf =================================================================== --- etc/defaults/rc.conf (revision 196516) +++ etc/defaults/rc.conf (working copy) @@ -357,6 +357,7 @@ ### Network routing options: ### defaultrouter="NO" # Set to default gateway (or NO). +static_arp_pairs="" # Set to static ARP list (or leave empty). static_routes="" # Set to static route list (or leave empty). natm_static_routes="" # Set to static route list for NATM (or leave empty). gateway_enable="NO" # Set to YES if this host will be a gateway. Index: etc/rc.d/Makefile =================================================================== --- etc/rc.d/Makefile (revision 196516) +++ etc/rc.d/Makefile (working copy) @@ -32,7 +32,7 @@ random rarpd resolv rfcomm_pppd_server root \ route6d routed routing rpcbind rtadvd rwho \ savecore sdpd securelevel sendmail \ - serial sppp statd swap1 \ + serial sppp statd static_arp swap1 \ syscons sysctl syslogd \ timed tmp \ ugidfw \ Index: etc/rc.d/static_arp =================================================================== --- etc/rc.d/static_arp (revision 0) +++ etc/rc.d/static_arp (revision 0) @@ -0,0 +1,71 @@ +#!/bin/sh +# +# Copyright (c) 2009 Xin LI <delphij@...> +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# +# Configure static ARP table +# +# $FreeBSD$ +# + +# PROVIDE: static_arp +# REQUIRE: netif +# KEYWORD: nojail + +. /etc/rc.subr + +name="static_arp" +start_cmd="static_arp_start" +stop_cmd="static_arp_stop" + +static_arp_start() +{ + if [ -n "${static_arp_pairs}" ]; then + echo -n 'Binding static ARP pair(s):' + for e in ${static_arp_pairs}; do + local arp_args + echo -n " ${e}" + eval arp_args=\$static_arp_${e} + arp -S ${arp_args} >/dev/null 2>&1 + done + echo '.' + fi +} + +static_arp_stop() +{ + if [ -n "${static_arp_pairs}" ]; then + echo -n 'Unbinding static ARP pair(s):' + for e in ${static_arp_pairs}; do + local arp_args + echo -n " ${e}" + eval arp_args=\$static_arp_${e} + arp -d ${arp_args%%[ ]*} > /dev/null 2>&1 + done + echo '.' + fi +} + +load_rc_config $name +run_rc_command "$1" Index: share/man/man5/rc.conf.5 =================================================================== --- share/man/man5/rc.conf.5 (revision 196516) +++ share/man/man5/rc.conf.5 (working copy) @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd April 10, 2009 +.Dd August 25, 2009 .Dt RC.CONF 5 .Os .Sh NAME @@ -2227,6 +2227,22 @@ .Pq Vt str The IPv6 equivalent of .Va defaultrouter . +.It Va static_arp_pairs +.Pq Vt str +Set to the list of static ARP pairs that are to be added at system +boot time. +For each whitespace separated +.Ar element +in the value, a +.Va static_arp_ Ns Aq Ar element +variable is assumed to exist whose contents will later be passed to a +.Dq Nm arp Cm -S +operation. +For example +.Bd -literal +static_arp_pairs="gw" +static_arp_gw="192.168.1.1 00:01:02:03:04:05" +.Ed .It Va static_routes .Pq Vt str Set to the list of static routes that are to be added at system _______________________________________________ freebsd-rc@... mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-rc To unsubscribe, send any mail to "freebsd-rc-unsubscribe@..." |
|
|
Re: [RFC] script for binding ARP <-> IP pairsHi,
On Tue, Aug 25, 2009 at 3:16 AM, Xin LI <delphij@...> wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > Doug Barton wrote: > > Xin LI wrote: > >> Any objections for the attached patch? I'll commit this version if > >> everybody is happy with it and then see if re@ would approve it for > >> 8.0-RELEASE. > > > > Sorry if I wasn't clear before, but all of the rc.conf variables > > should be prepended with static_arp_ (as opposed to just arp_). So > > rather than arp_args you'd want static_arp_args. I realize you're not > > using set_rcvar() but it's still a good idea to do that for > > consistency's sake, as well as to make it easier for admins to sort > > stuff, etc. Please make sure you change that in the man page as well. > For consistency we should leave it as "arp_xxx" like it's currently done for static_routes/route_xxx and ipv6_static_routes/ipv6_route_xxx ... If we want to keep consistency then either leave it as "static_arp_pairs/arp_xxx" or change it to something like "static_arps/arp_xxx > > > I see. I have corrected arp_ prefixes to static_arp_ prefixes. Note > that "arp_args" are not changed because they are intermediate variables > that are intended as "arp(1) arguments". I have marked these as local. > > > Other than that it looks fine to me. > > > > Silly question that I'm sorry just occurred to me right now, have you > > tested this with IPv6? :) > > I think IPv6 would need to use "ndp" instead (cross referenced from > arp(8)) but am not sure. Because the script rely on space or tab as > separator I think it would just work after a simple s/arp/ndp/g for ndp > but I don't have a local production IPv6 network for the test... > > Cheers, > - -- > Xin LI <delphij@...> http://www.delphij.net/ > FreeBSD - The Power to Serve! > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v2.0.12 (FreeBSD) > > iEYEARECAAYFAkqTO3cACgkQi+vbBBjt66CtWwCZARUOgOP3AoZEEEeCCXl9ziVT > ZwsAoIC1cmv6d0QY7z1RjEoFcfz0Sey/ > =py3J > -----END PGP SIGNATURE----- > > Index: etc/defaults/rc.conf > =================================================================== > --- etc/defaults/rc.conf (revision 196516) > +++ etc/defaults/rc.conf (working copy) > @@ -357,6 +357,7 @@ > > ### Network routing options: ### > defaultrouter="NO" # Set to default gateway (or NO). > +static_arp_pairs="" # Set to static ARP list (or leave empty). > static_routes="" # Set to static route list (or leave > empty). > natm_static_routes="" # Set to static route list for NATM (or > leave empty). > gateway_enable="NO" # Set to YES if this host will be a > gateway. > Please add commented line(s) as an example on how to use this, like for ipv6_static_routes: #static_arp_pairs="xxx" # An example to set an ARP static entry #arp_xxx="10.20.30.40 00:11:22:33:44:55" Regards, Adrian Penisoara EnterpriseBSD _______________________________________________ freebsd-rc@... mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-rc To unsubscribe, send any mail to "freebsd-rc-unsubscribe@..." |
|
|
Re: [RFC] script for binding ARP <-> IP pairsXin LI wrote:
> Doug Barton wrote: >> Xin LI wrote: >>> Any objections for the attached patch? I'll commit this version if >>> everybody is happy with it and then see if re@ would approve it for >>> 8.0-RELEASE. >> Sorry if I wasn't clear before, but all of the rc.conf variables >> should be prepended with static_arp_ (as opposed to just arp_). So >> rather than arp_args you'd want static_arp_args. I realize you're not >> using set_rcvar() but it's still a good idea to do that for >> consistency's sake, as well as to make it easier for admins to sort >> stuff, etc. Please make sure you change that in the man page as well. > > I see. I have corrected arp_ prefixes to static_arp_ prefixes. Note > that "arp_args" are not changed because they are intermediate variables > that are intended as "arp(1) arguments". I have marked these as local. That look great, commit it when you are ready. :) >> Other than that it looks fine to me. > >> Silly question that I'm sorry just occurred to me right now, have you >> tested this with IPv6? :) > > I think IPv6 would need to use "ndp" instead (cross referenced from > arp(8)) but am not sure. Because the script rely on space or tab as > separator I think it would just work after a simple s/arp/ndp/g for ndp > but I don't have a local production IPv6 network for the test... Sorry, I had intended that as a joke since in general we're trying to achieve parity in IPv6 for the features in IPv4. Looking back it's not even that funny to me anymore .... :) Doug -- This .signature sanitized for your protection _______________________________________________ freebsd-rc@... mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-rc To unsubscribe, send any mail to "freebsd-rc-unsubscribe@..." |
|
|
Re: [RFC] script for binding ARP <-> IP pairsAdrian Penisoara wrote:
>> For consistency we should leave it as "arp_xxx" like it's currently done >> for static_routes/route_xxx and ipv6_static_routes/ipv6_route_xxx ... The fact that there are legacy examples that don't use a consistent prepend is not a reason to add more. Doug -- This .signature sanitized for your protection _______________________________________________ freebsd-rc@... mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-rc To unsubscribe, send any mail to "freebsd-rc-unsubscribe@..." |
| Free embeddable forum powered by Nabble | Forum Help |