Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 9 Jul 2021 05:00:41 +0700
From:      Eugene Grosbein <eugen@grosbein.net>
To:        Rozhuk Ivan <rozhuk.im@gmail.com>, freebsd-net@freebsd.org, freebsd-hackers@FreeBSD.org
Subject:   Re: How to run script on network address change?
Message-ID:  <886e5afe-7b4f-db1d-4d41-08a7457c6bdc@grosbein.net>
In-Reply-To: <20210620165215.0f3dd15c@rimwks.local>
References:  <20210620165215.0f3dd15c@rimwks.local>

next in thread | previous in thread | raw e-mail | index | archive | help
20.06.2021 20:52, Rozhuk Ivan wrote
> Hi!
> 
> 
> I have FreeBSD 13@amd64 router with DHCP client on uplink.
> 
> How to run script on IP address change?

Here is my /etc/dhclient-enter-hooks I use with FreeBSD 11 and stock dhclient
for a system with two distinct ISP uplinks. It replaces some of default hooks:

#!/bin/sh

# Ignore ISP DNS servers as we run our own resolver
add_new_resolv_conf() {
  return 0
}

add_new_address() {
	# Perform interface configuration
        eval "$IFCONFIG $interface \
                inet $new_ip_address \
                netmask $new_subnet_mask \
                broadcast $new_broadcast_address \
                $medium"

	# Save ISP gateway address with interface description for easy access
        eval '$IFCONFIG $interface description "gw $new_routers"'

	# Generate nice logs
        $LOGGER "New IP Address ($interface): $new_ip_address"
        $LOGGER "New Subnet Mask ($interface): $new_subnet_mask"
        $LOGGER "New Broadcast Address ($interface): $new_broadcast_address"
        $LOGGER "New Routers ($interface): $new_routers"

	# Some additional logic may be added here like switching default route
 
        return 0
}
# EOF




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?886e5afe-7b4f-db1d-4d41-08a7457c6bdc>