Subject: Re: pppd IPv4-only -> dual stack migration
To: None <tech-net@netbsd.org>
From: None <itojun@iijlab.net>
List: tech-net
Date: 04/17/2000 15:00:48
>>I recnetly update my system, i386, with source upto April 14, 2000 and
>>found that the pppd demand-dialling didn't work for me any more.  The
>>error messages is
>>"pppd: local/remote LL address required for demand-dialling"
>>I would like to know how to solve it.  I have no problem before update my
>>system upto April 14, 2000.  Thanks.
>	sorry, I think I messed it up.  please try adding "noipv6" to your
>	configuration.

	Is the change acceptable?
	- disable IPv6CP by default, to be friendly with IPv4-only config files
	- rename "ipv6" option to "ipv6cp-ifid"
	- add a new option "ipv6", which enables IPv6CP

	or is it better to leave it as is (to keep pppd in sync with ppp-2.3.x
	distribution) and document it everywhere? ("disable ipv6cp if you
	don't want one")?

itojun


Index: ipv6cp.c
===================================================================
RCS file: /cvsroot/basesrc/usr.sbin/pppd/pppd/ipv6cp.c,v
retrieving revision 1.4
diff -u -r1.4 ipv6cp.c
--- ipv6cp.c	2000/01/20 04:55:52	1.4
+++ ipv6cp.c	2000/04/17 05:56:34
@@ -122,13 +122,15 @@
 static int setifaceid __P((char **arg));
 
 static option_t ipv6cp_option_list[] = {
-    { "ipv6", o_special, setifaceid,
-      "Set interface identifiers for IPV6" },
+    { "ipv6", o_bool, &ipv6cp_protent.enabled_flag,
+      "Enable IPv6 and IPv6CP", 1 },
     { "noipv6", o_bool, &ipv6cp_protent.enabled_flag,
       "Disable IPv6 and IPv6CP" },
     { "-ipv6", o_bool, &ipv6cp_protent.enabled_flag,
       "Disable IPv6 and IPv6CP" },
 
+    { "ipv6cp-ifid", o_special, setifaceid,
+      "Set interface identifiers for IPV6" },
     { "ipv6cp-accept-local", o_bool, &ipv6cp_allowoptions[0].accept_local,
       "Accept peer's interface identifier for us", 1 },
     { "ipv6cp-use-ipaddr", o_bool, &ipv6cp_allowoptions[0].use_ip,
@@ -174,7 +176,12 @@
     ipv6cp_close,
     ipv6cp_printpkt,
     NULL,
+#if 0
     1,
+#else
+    /* old configurations can choke with IPv6CP, disable by default for now */
+    0,
+#endif
     "IPV6CP",
     "IPV6",
     ipv6cp_option_list,
Index: pppd.8
===================================================================
RCS file: /cvsroot/basesrc/usr.sbin/pppd/pppd/pppd.8,v
retrieving revision 1.26
diff -u -r1.26 pppd.8
--- pppd.8	1999/10/28 09:41:56	1.26
+++ pppd.8	2000/04/17 05:56:38
@@ -197,14 +197,6 @@
 negotiation, unless the \fIipcp-accept-local\fR and/or
 \fIipcp-accept-remote\fR options are given, respectively.
 .TP
-.B ipv6 \fI<local_interface_identifier>\fR,\fI<remote_interface_identifier>
-Set the local and/or remote 64-bit interface identifier. Either one may be
-omitted. The identifier must be specified in standard ascii notation of
-IPv6 addresses (e.g. ::dead:beef). If the
-\fIipv6cp-use-ipaddr\fR
-option is given, the local identifier is the local IPv4 address (see above).
-Otherwise the identifier is randomized.
-.TP
 .B active-filter \fIfilter-expression
 Specifies a packet filter to be applied to data packets to determine
 which packets are to be regarded as link activity, and therefore reset
@@ -354,6 +346,22 @@
 option is given, the \fIstring\fR supplied is given as the 6th
 parameter to those scripts.
 .TP
+.B ipv6
+Enable IPv6CP negotiation and IPv6 communication.
+This needs to be specified explicitly if you want IPv6CP.
+This is for backward compatibility with IPv4-only configurations.
+.\"This option should
+.\"only be required if the peer is buggy and gets confused by requests
+.\"from pppd for IPv6CP negotiation.
+.TP
+.B ipv6cp-ifid \fI<local_interface_identifier>\fR,\fI<remote_interface_identifier>
+Set the local and/or remote 64-bit interface identifier. Either one may be
+omitted. The identifier must be specified in standard ascii notation of
+IPv6 addresses (e.g. ::dead:beef). If the
+\fIipv6cp-use-ipaddr\fR
+option is given, the local identifier is the local IPv4 address (see above).
+Otherwise the identifier is randomized.
+.TP
 .B ipv6cp-max-configure \fIn
 Set the maximum number of IPv6CP configure-request transmissions to
 \fIn\fR (default 10).
@@ -608,9 +616,10 @@
 from pppd for IPCP negotiation.
 .TP
 .B noipv6
-Disable IPv6CP negotiation and IPv6 communication. This option should
-only be required if the peer is buggy and gets confused by requests
-from pppd for IPv6CP negotiation.
+Disable IPv6CP negotiation and IPv6 communication.
+.\"This option should
+.\"only be required if the peer is buggy and gets confused by requests
+.\"from pppd for IPv6CP negotiation.
 .TP
 .B noipdefault
 Disables the default behaviour when no local IP address is specified,