We're having an issue where our static IP customers get disconnected
and resstablish connection to the server immediately but are assigned
the same IP address of course. So, for a short while there are two
interfaces (ppp3 and ppp256 for example) that both have the same static
IP address assigned.

Eventually the "stale" interface is dropped as a result of lcp
timeouts... ours are set to 20 second intervals and 5 failures. So
that's 100 seconds before the link will be removed. We'd like to look
into making this a much shorter interval for our static customers only.

Couple options I've thought of:

* Sending lcp-* attributes via our RADIUS server. I see some
vendor-specific options related to the lcp stuff in our RADIUS server's
dictionary file, but it does not appear that radiusclient (included
with ppp 2.4.3) supports anything like this.

* Using a TTY specific options file for individual users. Problem is,
how do we get the options in the correct file before the user connects?
ip-up script perhaps? I assume the options file is parsed and read in
before ip-up runs however, so this most likely won't work.

* Have the ip-up script check whether or not another interface exists
on the system with the same IP, bring it down (either with ifconfig or
killing the associated pppd process). Downside here is that when we
have 700 users reconnecting at once this could lead to a lot of
overhead and other resource competition issues.

I guess another option would be to write a small daemon that checks for
duplicate IP's on the system every 5-10 seconds or so and cleans up the
"older" of the two.

Seems like there should be a graceful way to handle this with pppd
though. Any way to make pppd itself check for another interface
already on the system with the same ip and either a) reuse this
interface somehow or b) bring the other interface down first?
Thanks for any suggestions.