I run a custom python script to update various dynamic DNS servers through launchctl and it runs every 15 minutes. This is both overkill and underkill.
It would be nice
I don't think launchd has any built-in trigger for the network coming up, but you can monitor file paths for changes. So if we can find a file that is updated when the network connects, we can implement the desired functionality.
One such file is /var/run/resolv.conf - this file is written whenever the computer renews a DHCP lease. It will be updated when you first connect, and periodically as the DHCP lease is renewed (the timing is set by the DHCP server).
Here is an example launchd plist file.
Label
org.example.on-dhcp-renew
ProgramArguments
/Users/darrin/bin/on-dhcp-renew.sh
WatchPaths
/var/run/resolv.conf
This will only work if you use DHCP addressing for your LAN - as the DHCP client is the program that updates your resolv.conf file.