DoIP requires fast IP assignment, faster than what RFC 3927 can guarantee, and so it defines its' own AutoIP timing parameters
Add a compile-time option to use DoIP timing parameters instead of default RFC 3927 parameters. This option is useful for use of zcip in automotive use-cases. In pratice, it decreases AutoIP allocation time from ~10s to ~2s, at the expense of less resilience to collisions Signed-off-by: Ricardo Leite <[email protected]> --- configs/TEST_nommu_defconfig | 1 + configs/TEST_noprintf_defconfig | 1 + configs/TEST_rh9_defconfig | 1 + configs/android2_defconfig | 1 + configs/android_502_defconfig | 1 + configs/android_defconfig | 1 + configs/android_ndk_defconfig | 1 + configs/cygwin_defconfig | 1 + configs/freebsd_defconfig | 1 + networking/zcip.c | 25 ++++++++++++++++++++++++- 10 files changed, 33 insertions(+), 1 deletion(-) diff --git a/configs/TEST_nommu_defconfig b/configs/TEST_nommu_defconfig index 415f5a802..3f8ca40d7 100644 --- a/configs/TEST_nommu_defconfig +++ b/configs/TEST_nommu_defconfig @@ -769,6 +769,7 @@ CONFIG_FEATURE_WGET_STATUSBAR=y CONFIG_FEATURE_WGET_AUTHENTICATION=y CONFIG_FEATURE_WGET_LONG_OPTIONS=y CONFIG_ZCIP=y +# CONFIG_ZCIP_USE_ISO_13400_TIMINGS is not set CONFIG_TCPSVD=y CONFIG_TUNCTL=y CONFIG_FEATURE_TUNCTL_UG=y diff --git a/configs/TEST_noprintf_defconfig b/configs/TEST_noprintf_defconfig index 9b378fd55..5cfd5b3d7 100644 --- a/configs/TEST_noprintf_defconfig +++ b/configs/TEST_noprintf_defconfig @@ -781,6 +781,7 @@ CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS="" # CONFIG_FEATURE_WGET_AUTHENTICATION is not set # CONFIG_FEATURE_WGET_LONG_OPTIONS is not set # CONFIG_ZCIP is not set +# CONFIG_ZCIP_USE_ISO_13400_TIMINGS is not set # # Print Utilities diff --git a/configs/TEST_rh9_defconfig b/configs/TEST_rh9_defconfig index 4ac62b9da..1fe074e79 100644 --- a/configs/TEST_rh9_defconfig +++ b/configs/TEST_rh9_defconfig @@ -791,6 +791,7 @@ CONFIG_FEATURE_WGET_AUTHENTICATION=y CONFIG_FEATURE_WGET_LONG_OPTIONS=y CONFIG_FEATURE_WGET_TIMEOUT=y CONFIG_ZCIP=y +# CONFIG_ZCIP_USE_ISO_13400_TIMINGS is not set # # Print Utilities diff --git a/configs/android2_defconfig b/configs/android2_defconfig index d4b8f1616..eceabbc20 100644 --- a/configs/android2_defconfig +++ b/configs/android2_defconfig @@ -828,6 +828,7 @@ CONFIG_FEATURE_WGET_AUTHENTICATION=y # CONFIG_FEATURE_WGET_LONG_OPTIONS is not set CONFIG_FEATURE_WGET_TIMEOUT=y # CONFIG_ZCIP is not set +# CONFIG_ZCIP_USE_ISO_13400_TIMINGS is not set # # Print Utilities diff --git a/configs/android_502_defconfig b/configs/android_502_defconfig index 503157c12..c5600fecc 100644 --- a/configs/android_502_defconfig +++ b/configs/android_502_defconfig @@ -970,6 +970,7 @@ CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS="-R -n" CONFIG_UDPSVD=y CONFIG_VCONFIG=y # CONFIG_ZCIP is not set +# CONFIG_ZCIP_USE_ISO_13400_TIMINGS is not set # # Print Utilities diff --git a/configs/android_defconfig b/configs/android_defconfig index 92a66048a..c1d38328b 100644 --- a/configs/android_defconfig +++ b/configs/android_defconfig @@ -858,6 +858,7 @@ CONFIG_FEATURE_WGET_AUTHENTICATION=y # CONFIG_FEATURE_WGET_LONG_OPTIONS is not set CONFIG_FEATURE_WGET_TIMEOUT=y # CONFIG_ZCIP is not set +# CONFIG_ZCIP_USE_ISO_13400_TIMINGS is not set # # Print Utilities diff --git a/configs/android_ndk_defconfig b/configs/android_ndk_defconfig index 03d497d2e..641807585 100644 --- a/configs/android_ndk_defconfig +++ b/configs/android_ndk_defconfig @@ -885,6 +885,7 @@ CONFIG_FEATURE_WGET_AUTHENTICATION=y # CONFIG_FEATURE_WGET_LONG_OPTIONS is not set CONFIG_FEATURE_WGET_TIMEOUT=y # CONFIG_ZCIP is not set +# CONFIG_ZCIP_USE_ISO_13400_TIMINGS is not set # # Print Utilities diff --git a/configs/cygwin_defconfig b/configs/cygwin_defconfig index c09bc9281..30c90d587 100644 --- a/configs/cygwin_defconfig +++ b/configs/cygwin_defconfig @@ -831,6 +831,7 @@ CONFIG_FEATURE_WGET_AUTHENTICATION=y CONFIG_FEATURE_WGET_LONG_OPTIONS=y CONFIG_FEATURE_WGET_TIMEOUT=y # CONFIG_ZCIP is not set +# CONFIG_ZCIP_USE_ISO_13400_TIMINGS is not set # # Print Utilities diff --git a/configs/freebsd_defconfig b/configs/freebsd_defconfig index 6cbd54895..c09197be3 100644 --- a/configs/freebsd_defconfig +++ b/configs/freebsd_defconfig @@ -810,6 +810,7 @@ CONFIG_FEATURE_WGET_AUTHENTICATION=y CONFIG_FEATURE_WGET_LONG_OPTIONS=y CONFIG_FEATURE_WGET_TIMEOUT=y # CONFIG_ZCIP is not set +# CONFIG_ZCIP_USE_ISO_13400_TIMINGS is not set # # Print Utilities diff --git a/networking/zcip.c b/networking/zcip.c index 311dfbe4c..5116483d9 100644 --- a/networking/zcip.c +++ b/networking/zcip.c @@ -24,6 +24,15 @@ //config: //config: See http://www.zeroconf.org for further details, and "zcip.script" //config: in the busybox examples. +//config: +//config:config ZCIP_USE_ISO_13400_TIMINGS +//config: bool "Use ISO 13400 (DoIP) timings" +//config: default y +//config: depends on ZCIP +//config: help +//config: Use timings from ISO 13400-2 (for DoIP) instead of RFC 3927, +//config: which dramatically speeds up AutoIP allocation time at the cost +//config: of less resilience to collisions. //applet:IF_ZCIP(APPLET(zcip, BB_DIR_SBIN, BB_SUID_DROP)) @@ -73,12 +82,26 @@ struct arp_packet { enum { /* 0-1 seconds before sending 1st probe */ PROBE_WAIT = 1, + +#if ENABLE_ZCIP_USE_ISO_13400_TIMINGS + /** + * DoIP-specific timings, see ISO 13400-2, Section 9.1.2.2, Table 15 + */ + /* 0-1 seconds between probes */ + PROBE_MIN = 0, + PROBE_MAX = 1, + PROBE_NUM = 1, /* total probes to send */ + ANNOUNCE_INTERVAL = 1, /* 1 seconds between announces */ + ANNOUNCE_NUM = 1, /* announces to send */ +#else /* 1-2 seconds between probes */ PROBE_MIN = 1, PROBE_MAX = 2, PROBE_NUM = 3, /* total probes to send */ - ANNOUNCE_INTERVAL = 2, /* 2 seconds between announces */ + ANNOUNCE_INTERVAL = 2, /* 2 seconds between announces */ ANNOUNCE_NUM = 3, /* announces to send */ +#endif + /* if probe/announce sees a conflict, multiply RANDOM(NUM_CONFLICT) by... */ CONFLICT_MULTIPLIER = 2, /* if we monitor and see a conflict, how long is defend state? */ -- 2.30.0 _______________________________________________ busybox mailing list [email protected] http://lists.busybox.net/mailman/listinfo/busybox
