freebsd-dev/usr.sbin/ppp/Makefile
Brian Somers 8fa6ebe47d Solve the ``first connection'' problem that occurs on
demand-dial links with dynamic IP numbers where the program
that causes the dial bind()s to an interface address that is
subsequently changed after ppp negotiation.

The problem is defeated by adding negotiated addresses to the
tun interface as additional alias addresses and providing a set
of ``iface'' commands for managing the interface.  Libalias is
also required (and what a name clash!) - it happily IP-aliases
the address so that the source is that of the primary (negotiated)
interface and un-IP-aliases it on the way back.

An ``enable iface-alias'' is done implicitly by the -alias command
line switch.  If -alias isn't given, iface-aliasing is disabled by
default and can't be enabled 'till an ``alias enable yes'' is done.
``alias enable no'' silently disables iface-alias.

So, for dynamic-IP-type-connections, running ``ppp -alias -auto blah''
will work for the first connection, although existing bindings will
not survive a disconnect/connect as the TCP peer will be trying to
send to the old IP address - the packets won't route.

It's now a lot easier to add IPXCP to ppp with minor updates to
the new iface.[ch] (if anyone ever gets 'round to it).

It's also now possible to manually add interface aliases with
something like ``iface add 1.2.3.4/24 5.6.7.8''.  This allows
multi-homed ppp links :-)
1998-10-22 02:32:50 +00:00

52 lines
1.3 KiB
Makefile

# $Id: Makefile,v 1.49 1998/10/20 00:19:38 brian Exp $
PROG= ppp
SRCS= arp.c async.c auth.c bundle.c cbcp.c ccp.c chap.c chat.c command.c \
datalink.c deflate.c defs.c filter.c fsm.c hdlc.c id.c iface.c ip.c \
ipcp.c iplist.c lcp.c link.c log.c lqr.c main.c mbuf.c modem.c \
mp.c pap.c physical.c pred.c probe.c prompt.c route.c server.c \
sig.c slcompress.c systems.c throughput.c timer.c tun.c vjcomp.c
CFLAGS+=-Wall
LDADD+= -lutil -lz
DPADD+= ${LIBUTIL} ${LIBZ}
BINMODE=4554
BINOWN= root
BINGRP= network
MAN8= ppp.8
LDADD+= -lmd -lcrypt
DPADD+= ${LIBMD} ${LIBCRYPT}
.if defined(RELEASE_CRUNCH)
CFLAGS+=-DRELEASE_CRUNCH
.endif
.if defined(NOALIAS)
CFLAGS+=-DNOALIAS
.else
.if !defined(RELEASE_CRUNCH)
SRCS+= alias_cmd.c
LDADD+= -lalias
DPADD+= ${LIBALIAS}
.endif
.endif
.if exists(${.CURDIR}/../../secure) && !defined(NOCRYPT) && !defined(NOSECURE) && !defined(RELEASE_CRUNCH)
DISTRIBUTION=des
CFLAGS+=-DHAVE_DES
SRCS+= chap_ms.c
LDADD+= -ldes
DPADD+= ${LIBDES}
.endif
.if defined(RELEASE_CRUNCH)
# We must create these objects because the crunchgen will link them,
# and we don't want any unused symbols to spoil the final link.
CFLAGS+=-DNOALIAS
SRCS+= alias_cmd.c chap_ms.c
chap_ms.o alias_cmd.o:
>null_${.PREFIX}.c
cc -c -o ${.TARGET} null_${.PREFIX}.c
.endif
.include <bsd.prog.mk>