Extend device specific callbacks to ICMPv6 and ARP. Fix some IPv6 compilation errors that have crept in
This commit is contained in:
parent
4c69ef2ad1
commit
b94321cfb4
@ -83,6 +83,7 @@ CONFIG_ARCH="arm"
|
|||||||
# CONFIG_ARCH_CHIP_KL is not set
|
# CONFIG_ARCH_CHIP_KL is not set
|
||||||
# CONFIG_ARCH_CHIP_LM is not set
|
# CONFIG_ARCH_CHIP_LM is not set
|
||||||
# CONFIG_ARCH_CHIP_TIVA is not set
|
# CONFIG_ARCH_CHIP_TIVA is not set
|
||||||
|
# CONFIG_ARCH_CHIP_LPC11XX is not set
|
||||||
# CONFIG_ARCH_CHIP_LPC17XX is not set
|
# CONFIG_ARCH_CHIP_LPC17XX is not set
|
||||||
# CONFIG_ARCH_CHIP_LPC214X is not set
|
# CONFIG_ARCH_CHIP_LPC214X is not set
|
||||||
# CONFIG_ARCH_CHIP_LPC2378 is not set
|
# CONFIG_ARCH_CHIP_LPC2378 is not set
|
||||||
@ -91,7 +92,9 @@ CONFIG_ARCH="arm"
|
|||||||
# CONFIG_ARCH_CHIP_NUC1XX is not set
|
# CONFIG_ARCH_CHIP_NUC1XX is not set
|
||||||
# CONFIG_ARCH_CHIP_SAMA5 is not set
|
# CONFIG_ARCH_CHIP_SAMA5 is not set
|
||||||
# CONFIG_ARCH_CHIP_SAMD is not set
|
# CONFIG_ARCH_CHIP_SAMD is not set
|
||||||
|
# CONFIG_ARCH_CHIP_SAML is not set
|
||||||
# CONFIG_ARCH_CHIP_SAM34 is not set
|
# CONFIG_ARCH_CHIP_SAM34 is not set
|
||||||
|
# CONFIG_ARCH_CHIP_SAMV7 is not set
|
||||||
CONFIG_ARCH_CHIP_STM32=y
|
CONFIG_ARCH_CHIP_STM32=y
|
||||||
# CONFIG_ARCH_CHIP_STR71X is not set
|
# CONFIG_ARCH_CHIP_STR71X is not set
|
||||||
# CONFIG_ARCH_ARM7TDMI is not set
|
# CONFIG_ARCH_ARM7TDMI is not set
|
||||||
@ -100,6 +103,7 @@ CONFIG_ARCH_CHIP_STM32=y
|
|||||||
# CONFIG_ARCH_CORTEXM0 is not set
|
# CONFIG_ARCH_CORTEXM0 is not set
|
||||||
# CONFIG_ARCH_CORTEXM3 is not set
|
# CONFIG_ARCH_CORTEXM3 is not set
|
||||||
CONFIG_ARCH_CORTEXM4=y
|
CONFIG_ARCH_CORTEXM4=y
|
||||||
|
# CONFIG_ARCH_CORTEXM7 is not set
|
||||||
# CONFIG_ARCH_CORTEXA5 is not set
|
# CONFIG_ARCH_CORTEXA5 is not set
|
||||||
# CONFIG_ARCH_CORTEXA8 is not set
|
# CONFIG_ARCH_CORTEXA8 is not set
|
||||||
CONFIG_ARCH_FAMILY="armv7-m"
|
CONFIG_ARCH_FAMILY="armv7-m"
|
||||||
@ -107,13 +111,19 @@ CONFIG_ARCH_CHIP="stm32"
|
|||||||
# CONFIG_ARMV7M_USEBASEPRI is not set
|
# CONFIG_ARMV7M_USEBASEPRI is not set
|
||||||
CONFIG_ARCH_HAVE_CMNVECTOR=y
|
CONFIG_ARCH_HAVE_CMNVECTOR=y
|
||||||
# CONFIG_ARMV7M_CMNVECTOR is not set
|
# CONFIG_ARMV7M_CMNVECTOR is not set
|
||||||
|
# CONFIG_ARMV7M_LAZYFPU is not set
|
||||||
CONFIG_ARCH_HAVE_FPU=y
|
CONFIG_ARCH_HAVE_FPU=y
|
||||||
|
# CONFIG_ARCH_HAVE_DPFPU is not set
|
||||||
# CONFIG_ARCH_FPU is not set
|
# CONFIG_ARCH_FPU is not set
|
||||||
# CONFIG_ARMV7M_MPU is not set
|
# CONFIG_ARMV7M_MPU is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# ARMV7M Configuration Options
|
# ARMV7M Configuration Options
|
||||||
#
|
#
|
||||||
|
# CONFIG_ARMV7M_HAVE_ICACHE is not set
|
||||||
|
# CONFIG_ARMV7M_HAVE_DCACHE is not set
|
||||||
|
# CONFIG_ARMV7M_HAVE_ITCM is not set
|
||||||
|
# CONFIG_ARMV7M_HAVE_DTCM is not set
|
||||||
# CONFIG_ARMV7M_TOOLCHAIN_ATOLLIC is not set
|
# CONFIG_ARMV7M_TOOLCHAIN_ATOLLIC is not set
|
||||||
# CONFIG_ARMV7M_TOOLCHAIN_BUILDROOT is not set
|
# CONFIG_ARMV7M_TOOLCHAIN_BUILDROOT is not set
|
||||||
# CONFIG_ARMV7M_TOOLCHAIN_CODEREDW is not set
|
# CONFIG_ARMV7M_TOOLCHAIN_CODEREDW is not set
|
||||||
@ -122,8 +132,10 @@ CONFIG_ARMV7M_TOOLCHAIN_CODESOURCERYW=y
|
|||||||
# CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL is not set
|
# CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL is not set
|
||||||
# CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIW is not set
|
# CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIW is not set
|
||||||
# CONFIG_ARMV7M_TOOLCHAIN_RAISONANCE is not set
|
# CONFIG_ARMV7M_TOOLCHAIN_RAISONANCE is not set
|
||||||
|
CONFIG_ARMV7M_HAVE_STACKCHECK=y
|
||||||
# CONFIG_ARMV7M_STACKCHECK is not set
|
# CONFIG_ARMV7M_STACKCHECK is not set
|
||||||
# CONFIG_ARMV7M_ITMSYSLOG is not set
|
# CONFIG_ARMV7M_ITMSYSLOG is not set
|
||||||
|
# CONFIG_SERIAL_TERMIOS is not set
|
||||||
CONFIG_SDIO_DMA=y
|
CONFIG_SDIO_DMA=y
|
||||||
CONFIG_SDIO_DMAPRIO=0x00010000
|
CONFIG_SDIO_DMAPRIO=0x00010000
|
||||||
# CONFIG_SDIO_WIDTH_D1_ONLY is not set
|
# CONFIG_SDIO_WIDTH_D1_ONLY is not set
|
||||||
@ -151,6 +163,7 @@ CONFIG_SDIO_DMAPRIO=0x00010000
|
|||||||
# CONFIG_ARCH_CHIP_STM32L152V8 is not set
|
# CONFIG_ARCH_CHIP_STM32L152V8 is not set
|
||||||
# CONFIG_ARCH_CHIP_STM32L152VB is not set
|
# CONFIG_ARCH_CHIP_STM32L152VB is not set
|
||||||
# CONFIG_ARCH_CHIP_STM32L162ZD is not set
|
# CONFIG_ARCH_CHIP_STM32L162ZD is not set
|
||||||
|
# CONFIG_ARCH_CHIP_STM32L162VE is not set
|
||||||
# CONFIG_ARCH_CHIP_STM32F100C8 is not set
|
# CONFIG_ARCH_CHIP_STM32F100C8 is not set
|
||||||
# CONFIG_ARCH_CHIP_STM32F100CB is not set
|
# CONFIG_ARCH_CHIP_STM32F100CB is not set
|
||||||
# CONFIG_ARCH_CHIP_STM32F100R8 is not set
|
# CONFIG_ARCH_CHIP_STM32F100R8 is not set
|
||||||
@ -184,6 +197,8 @@ CONFIG_SDIO_DMAPRIO=0x00010000
|
|||||||
# CONFIG_ARCH_CHIP_STM32F107VC is not set
|
# CONFIG_ARCH_CHIP_STM32F107VC is not set
|
||||||
# CONFIG_ARCH_CHIP_STM32F207IG is not set
|
# CONFIG_ARCH_CHIP_STM32F207IG is not set
|
||||||
# CONFIG_ARCH_CHIP_STM32F207ZE is not set
|
# CONFIG_ARCH_CHIP_STM32F207ZE is not set
|
||||||
|
# CONFIG_ARCH_CHIP_STM32F302K6 is not set
|
||||||
|
# CONFIG_ARCH_CHIP_STM32F302K8 is not set
|
||||||
# CONFIG_ARCH_CHIP_STM32F302CB is not set
|
# CONFIG_ARCH_CHIP_STM32F302CB is not set
|
||||||
# CONFIG_ARCH_CHIP_STM32F302CC is not set
|
# CONFIG_ARCH_CHIP_STM32F302CC is not set
|
||||||
# CONFIG_ARCH_CHIP_STM32F302RB is not set
|
# CONFIG_ARCH_CHIP_STM32F302RB is not set
|
||||||
@ -196,6 +211,24 @@ CONFIG_SDIO_DMAPRIO=0x00010000
|
|||||||
# CONFIG_ARCH_CHIP_STM32F303RC is not set
|
# CONFIG_ARCH_CHIP_STM32F303RC is not set
|
||||||
# CONFIG_ARCH_CHIP_STM32F303VB is not set
|
# CONFIG_ARCH_CHIP_STM32F303VB is not set
|
||||||
# CONFIG_ARCH_CHIP_STM32F303VC is not set
|
# CONFIG_ARCH_CHIP_STM32F303VC is not set
|
||||||
|
# CONFIG_ARCH_CHIP_STM32F372C8 is not set
|
||||||
|
# CONFIG_ARCH_CHIP_STM32F372R8 is not set
|
||||||
|
# CONFIG_ARCH_CHIP_STM32F372V8 is not set
|
||||||
|
# CONFIG_ARCH_CHIP_STM32F372CB is not set
|
||||||
|
# CONFIG_ARCH_CHIP_STM32F372RB is not set
|
||||||
|
# CONFIG_ARCH_CHIP_STM32F372VB is not set
|
||||||
|
# CONFIG_ARCH_CHIP_STM32F372CC is not set
|
||||||
|
# CONFIG_ARCH_CHIP_STM32F372RC is not set
|
||||||
|
# CONFIG_ARCH_CHIP_STM32F372VC is not set
|
||||||
|
# CONFIG_ARCH_CHIP_STM32F373C8 is not set
|
||||||
|
# CONFIG_ARCH_CHIP_STM32F373R8 is not set
|
||||||
|
# CONFIG_ARCH_CHIP_STM32F373V8 is not set
|
||||||
|
# CONFIG_ARCH_CHIP_STM32F373CB is not set
|
||||||
|
# CONFIG_ARCH_CHIP_STM32F373RB is not set
|
||||||
|
# CONFIG_ARCH_CHIP_STM32F373VB is not set
|
||||||
|
# CONFIG_ARCH_CHIP_STM32F373CC is not set
|
||||||
|
# CONFIG_ARCH_CHIP_STM32F373RC is not set
|
||||||
|
# CONFIG_ARCH_CHIP_STM32F373VC is not set
|
||||||
# CONFIG_ARCH_CHIP_STM32F401RE is not set
|
# CONFIG_ARCH_CHIP_STM32F401RE is not set
|
||||||
# CONFIG_ARCH_CHIP_STM32F411RE is not set
|
# CONFIG_ARCH_CHIP_STM32F411RE is not set
|
||||||
# CONFIG_ARCH_CHIP_STM32F405RG is not set
|
# CONFIG_ARCH_CHIP_STM32F405RG is not set
|
||||||
@ -228,6 +261,7 @@ CONFIG_ARCH_CHIP_STM32F407VG=y
|
|||||||
# CONFIG_STM32_STM32F20XX is not set
|
# CONFIG_STM32_STM32F20XX is not set
|
||||||
# CONFIG_STM32_STM32F207 is not set
|
# CONFIG_STM32_STM32F207 is not set
|
||||||
# CONFIG_STM32_STM32F30XX is not set
|
# CONFIG_STM32_STM32F30XX is not set
|
||||||
|
# CONFIG_STM32_STM32F37XX is not set
|
||||||
CONFIG_STM32_STM32F40XX=y
|
CONFIG_STM32_STM32F40XX=y
|
||||||
# CONFIG_STM32_STM32F401 is not set
|
# CONFIG_STM32_STM32F401 is not set
|
||||||
# CONFIG_STM32_STM32F411 is not set
|
# CONFIG_STM32_STM32F411 is not set
|
||||||
@ -328,6 +362,7 @@ CONFIG_STM32_USART6=y
|
|||||||
# CONFIG_STM32_IWDG is not set
|
# CONFIG_STM32_IWDG is not set
|
||||||
# CONFIG_STM32_WWDG is not set
|
# CONFIG_STM32_WWDG is not set
|
||||||
CONFIG_STM32_SPI=y
|
CONFIG_STM32_SPI=y
|
||||||
|
# CONFIG_STM32_NOEXT_VECTORS is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Alternate Pin Mapping
|
# Alternate Pin Mapping
|
||||||
@ -362,6 +397,8 @@ CONFIG_STM32_USART=y
|
|||||||
#
|
#
|
||||||
# SDIO Configuration
|
# SDIO Configuration
|
||||||
#
|
#
|
||||||
|
# CONFIG_STM32_HAVE_RTC_COUNTER is not set
|
||||||
|
# CONFIG_STM32_HAVE_RTC_SUBSECONDS is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Ethernet MAC configuration
|
# Ethernet MAC configuration
|
||||||
@ -478,6 +515,12 @@ CONFIG_NSH_MMCSDSLOTNO=0
|
|||||||
# Board-Specific Options
|
# Board-Specific Options
|
||||||
#
|
#
|
||||||
CONFIG_STM32F4DISBB=y
|
CONFIG_STM32F4DISBB=y
|
||||||
|
CONFIG_LIB_BOARDCTL=y
|
||||||
|
# CONFIG_BOARDCTL_TSCTEST is not set
|
||||||
|
# CONFIG_BOARDCTL_ADCTEST is not set
|
||||||
|
# CONFIG_BOARDCTL_PWMTEST is not set
|
||||||
|
# CONFIG_BOARDCTL_GRAPHICS is not set
|
||||||
|
# CONFIG_BOARDCTL_IOCTL is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# RTOS Features
|
# RTOS Features
|
||||||
@ -606,11 +649,16 @@ CONFIG_SPI=y
|
|||||||
# CONFIG_SPI_OWNBUS is not set
|
# CONFIG_SPI_OWNBUS is not set
|
||||||
CONFIG_SPI_EXCHANGE=y
|
CONFIG_SPI_EXCHANGE=y
|
||||||
# CONFIG_SPI_CMDDATA is not set
|
# CONFIG_SPI_CMDDATA is not set
|
||||||
|
# CONFIG_SPI_CALLBACK is not set
|
||||||
# CONFIG_SPI_BITBANG is not set
|
# CONFIG_SPI_BITBANG is not set
|
||||||
# CONFIG_I2S is not set
|
# CONFIG_I2S is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# Timer Driver Support
|
||||||
|
#
|
||||||
|
# CONFIG_TIMER is not set
|
||||||
# CONFIG_RTC is not set
|
# CONFIG_RTC is not set
|
||||||
# CONFIG_WATCHDOG is not set
|
# CONFIG_WATCHDOG is not set
|
||||||
# CONFIG_TIMER is not set
|
|
||||||
# CONFIG_ANALOG is not set
|
# CONFIG_ANALOG is not set
|
||||||
# CONFIG_AUDIO_DEVICES is not set
|
# CONFIG_AUDIO_DEVICES is not set
|
||||||
# CONFIG_VIDEO_DEVICES is not set
|
# CONFIG_VIDEO_DEVICES is not set
|
||||||
@ -658,10 +706,13 @@ CONFIG_NETDEVICES=y
|
|||||||
# CONFIG_ETH0_PHY_AM79C874 is not set
|
# CONFIG_ETH0_PHY_AM79C874 is not set
|
||||||
# CONFIG_ETH0_PHY_KS8721 is not set
|
# CONFIG_ETH0_PHY_KS8721 is not set
|
||||||
# CONFIG_ETH0_PHY_KSZ8051 is not set
|
# CONFIG_ETH0_PHY_KSZ8051 is not set
|
||||||
|
# CONFIG_ETH0_PHY_KSZ8061 is not set
|
||||||
# CONFIG_ETH0_PHY_KSZ8081 is not set
|
# CONFIG_ETH0_PHY_KSZ8081 is not set
|
||||||
# CONFIG_ETH0_PHY_KSZ90x1 is not set
|
# CONFIG_ETH0_PHY_KSZ90x1 is not set
|
||||||
# CONFIG_ETH0_PHY_DP83848C is not set
|
# CONFIG_ETH0_PHY_DP83848C is not set
|
||||||
CONFIG_ETH0_PHY_LAN8720=y
|
CONFIG_ETH0_PHY_LAN8720=y
|
||||||
|
# CONFIG_ETH0_PHY_LAN8740 is not set
|
||||||
|
# CONFIG_ETH0_PHY_LAN8740A is not set
|
||||||
# CONFIG_ETH0_PHY_DM9161 is not set
|
# CONFIG_ETH0_PHY_DM9161 is not set
|
||||||
# CONFIG_PIPES is not set
|
# CONFIG_PIPES is not set
|
||||||
# CONFIG_PM is not set
|
# CONFIG_PM is not set
|
||||||
@ -703,7 +754,6 @@ CONFIG_STANDARD_SERIAL=y
|
|||||||
# CONFIG_SERIAL_IFLOWCONTROL is not set
|
# CONFIG_SERIAL_IFLOWCONTROL is not set
|
||||||
# CONFIG_SERIAL_OFLOWCONTROL is not set
|
# CONFIG_SERIAL_OFLOWCONTROL is not set
|
||||||
CONFIG_ARCH_HAVE_SERIAL_TERMIOS=y
|
CONFIG_ARCH_HAVE_SERIAL_TERMIOS=y
|
||||||
# CONFIG_SERIAL_TERMIOS is not set
|
|
||||||
CONFIG_USART6_SERIAL_CONSOLE=y
|
CONFIG_USART6_SERIAL_CONSOLE=y
|
||||||
# CONFIG_OTHER_SERIAL_CONSOLE is not set
|
# CONFIG_OTHER_SERIAL_CONSOLE is not set
|
||||||
# CONFIG_NO_SERIAL_CONSOLE is not set
|
# CONFIG_NO_SERIAL_CONSOLE is not set
|
||||||
@ -755,6 +805,7 @@ CONFIG_NET_GUARDSIZE=2
|
|||||||
#
|
#
|
||||||
# CONFIG_NET_MULTILINK is not set
|
# CONFIG_NET_MULTILINK is not set
|
||||||
CONFIG_NET_ETHERNET=y
|
CONFIG_NET_ETHERNET=y
|
||||||
|
# CONFIG_NET_TUN is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Network Device Operations
|
# Network Device Operations
|
||||||
@ -873,7 +924,6 @@ CONFIG_FAT_LFN=y
|
|||||||
CONFIG_FAT_MAXFNAME=32
|
CONFIG_FAT_MAXFNAME=32
|
||||||
# CONFIG_FS_FATTIME is not set
|
# CONFIG_FS_FATTIME is not set
|
||||||
# CONFIG_FAT_DMAMEMORY is not set
|
# CONFIG_FAT_DMAMEMORY is not set
|
||||||
# CONFIG_NFS is not set
|
|
||||||
# CONFIG_FS_NXFFS is not set
|
# CONFIG_FS_NXFFS is not set
|
||||||
# CONFIG_FS_ROMFS is not set
|
# CONFIG_FS_ROMFS is not set
|
||||||
# CONFIG_FS_SMARTFS is not set
|
# CONFIG_FS_SMARTFS is not set
|
||||||
@ -944,6 +994,7 @@ CONFIG_LIBC_TMPDIR="/tmp"
|
|||||||
CONFIG_LIBC_MAX_TMPFILE=32
|
CONFIG_LIBC_MAX_TMPFILE=32
|
||||||
CONFIG_ARCH_LOWPUTC=y
|
CONFIG_ARCH_LOWPUTC=y
|
||||||
# CONFIG_LIBC_LOCALTIME is not set
|
# CONFIG_LIBC_LOCALTIME is not set
|
||||||
|
# CONFIG_TIME_EXTENDED is not set
|
||||||
CONFIG_LIB_SENDFILE_BUFSIZE=512
|
CONFIG_LIB_SENDFILE_BUFSIZE=512
|
||||||
# CONFIG_ARCH_ROMGETC is not set
|
# CONFIG_ARCH_ROMGETC is not set
|
||||||
# CONFIG_ARCH_OPTIMIZED_FUNCTIONS is not set
|
# CONFIG_ARCH_OPTIMIZED_FUNCTIONS is not set
|
||||||
@ -1012,10 +1063,10 @@ CONFIG_EXAMPLES_NSH_CXXINITIALIZE=y
|
|||||||
# CONFIG_EXAMPLES_NXTEXT is not set
|
# CONFIG_EXAMPLES_NXTEXT is not set
|
||||||
# CONFIG_EXAMPLES_OSTEST is not set
|
# CONFIG_EXAMPLES_OSTEST is not set
|
||||||
# CONFIG_EXAMPLES_PIPE is not set
|
# CONFIG_EXAMPLES_PIPE is not set
|
||||||
|
# CONFIG_EXAMPLES_PPPD is not set
|
||||||
# CONFIG_EXAMPLES_POSIXSPAWN is not set
|
# CONFIG_EXAMPLES_POSIXSPAWN is not set
|
||||||
# CONFIG_EXAMPLES_QENCODER is not set
|
# CONFIG_EXAMPLES_QENCODER is not set
|
||||||
# CONFIG_EXAMPLES_RGMP is not set
|
# CONFIG_EXAMPLES_RGMP is not set
|
||||||
# CONFIG_EXAMPLES_ROMFS is not set
|
|
||||||
# CONFIG_EXAMPLES_SENDMAIL is not set
|
# CONFIG_EXAMPLES_SENDMAIL is not set
|
||||||
# CONFIG_EXAMPLES_SERIALBLASTER is not set
|
# CONFIG_EXAMPLES_SERIALBLASTER is not set
|
||||||
# CONFIG_EXAMPLES_SERIALRX is not set
|
# CONFIG_EXAMPLES_SERIALRX is not set
|
||||||
@ -1058,7 +1109,6 @@ CONFIG_EXAMPLES_NSH_CXXINITIALIZE=y
|
|||||||
#
|
#
|
||||||
# CONFIG_NETUTILS_CODECS is not set
|
# CONFIG_NETUTILS_CODECS is not set
|
||||||
# CONFIG_NETUTILS_FTPC is not set
|
# CONFIG_NETUTILS_FTPC is not set
|
||||||
# CONFIG_NETUTILS_FTPD is not set
|
|
||||||
# CONFIG_NETUTILS_JSON is not set
|
# CONFIG_NETUTILS_JSON is not set
|
||||||
# CONFIG_NETUTILS_DNSCLIENT is not set
|
# CONFIG_NETUTILS_DNSCLIENT is not set
|
||||||
# CONFIG_NETUTILS_SMTP is not set
|
# CONFIG_NETUTILS_SMTP is not set
|
||||||
@ -1071,6 +1121,7 @@ CONFIG_NETUTILS_NETLIB=y
|
|||||||
# CONFIG_NETUTILS_NTPCLIENT is not set
|
# CONFIG_NETUTILS_NTPCLIENT is not set
|
||||||
# CONFIG_NETUTILS_DISCOVER is not set
|
# CONFIG_NETUTILS_DISCOVER is not set
|
||||||
# CONFIG_NETUTILS_XMLRPC is not set
|
# CONFIG_NETUTILS_XMLRPC is not set
|
||||||
|
# CONFIG_NETUTILS_PPPD is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# FreeModBus
|
# FreeModBus
|
||||||
@ -1104,6 +1155,7 @@ CONFIG_NSH_BUILTIN_APPS=y
|
|||||||
# CONFIG_NSH_DISABLE_CD is not set
|
# CONFIG_NSH_DISABLE_CD is not set
|
||||||
# CONFIG_NSH_DISABLE_CP is not set
|
# CONFIG_NSH_DISABLE_CP is not set
|
||||||
# CONFIG_NSH_DISABLE_CMP is not set
|
# CONFIG_NSH_DISABLE_CMP is not set
|
||||||
|
CONFIG_NSH_DISABLE_DATE=y
|
||||||
# CONFIG_NSH_DISABLE_DD is not set
|
# CONFIG_NSH_DISABLE_DD is not set
|
||||||
# CONFIG_NSH_DISABLE_DF is not set
|
# CONFIG_NSH_DISABLE_DF is not set
|
||||||
# CONFIG_NSH_DISABLE_DELROUTE is not set
|
# CONFIG_NSH_DISABLE_DELROUTE is not set
|
||||||
@ -1125,6 +1177,7 @@ CONFIG_NSH_BUILTIN_APPS=y
|
|||||||
# CONFIG_NSH_DISABLE_MKRD is not set
|
# CONFIG_NSH_DISABLE_MKRD is not set
|
||||||
# CONFIG_NSH_DISABLE_MH is not set
|
# CONFIG_NSH_DISABLE_MH is not set
|
||||||
# CONFIG_NSH_DISABLE_MOUNT is not set
|
# CONFIG_NSH_DISABLE_MOUNT is not set
|
||||||
|
# CONFIG_NSH_DISABLE_MV is not set
|
||||||
# CONFIG_NSH_DISABLE_MW is not set
|
# CONFIG_NSH_DISABLE_MW is not set
|
||||||
# CONFIG_NSH_DISABLE_PS is not set
|
# CONFIG_NSH_DISABLE_PS is not set
|
||||||
# CONFIG_NSH_DISABLE_PUT is not set
|
# CONFIG_NSH_DISABLE_PUT is not set
|
||||||
@ -1162,7 +1215,6 @@ CONFIG_NSH_FILEIOSIZE=512
|
|||||||
CONFIG_NSH_CONSOLE=y
|
CONFIG_NSH_CONSOLE=y
|
||||||
# CONFIG_NSH_ALTCONDEV is not set
|
# CONFIG_NSH_ALTCONDEV is not set
|
||||||
CONFIG_NSH_ARCHINIT=y
|
CONFIG_NSH_ARCHINIT=y
|
||||||
CONFIG_LIB_BOARDCTL=y
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Networking Configuration
|
# Networking Configuration
|
||||||
@ -1225,123 +1277,19 @@ CONFIG_NSH_MAX_ROUNDTRIP=20
|
|||||||
#
|
#
|
||||||
# System Libraries and NSH Add-Ons
|
# System Libraries and NSH Add-Ons
|
||||||
#
|
#
|
||||||
|
|
||||||
#
|
|
||||||
# Custom Free Memory Command
|
|
||||||
#
|
|
||||||
# CONFIG_SYSTEM_FREE is not set
|
# CONFIG_SYSTEM_FREE is not set
|
||||||
|
|
||||||
#
|
|
||||||
# EMACS-like Command Line Editor
|
|
||||||
#
|
|
||||||
# CONFIG_SYSTEM_CLE is not set
|
# CONFIG_SYSTEM_CLE is not set
|
||||||
|
|
||||||
#
|
|
||||||
# CU Minimal Terminal
|
|
||||||
#
|
|
||||||
# CONFIG_SYSTEM_CUTERM is not set
|
# CONFIG_SYSTEM_CUTERM is not set
|
||||||
|
|
||||||
#
|
|
||||||
# FLASH Program Installation
|
|
||||||
#
|
|
||||||
# CONFIG_SYSTEM_INSTALL is not set
|
# CONFIG_SYSTEM_INSTALL is not set
|
||||||
|
|
||||||
#
|
|
||||||
# FLASH Erase-all Command
|
|
||||||
#
|
|
||||||
|
|
||||||
#
|
|
||||||
# Intel HEX to binary conversion
|
|
||||||
#
|
|
||||||
# CONFIG_SYSTEM_HEX2BIN is not set
|
# CONFIG_SYSTEM_HEX2BIN is not set
|
||||||
|
|
||||||
#
|
|
||||||
# I2C tool
|
|
||||||
#
|
|
||||||
|
|
||||||
#
|
|
||||||
# INI File Parser
|
|
||||||
#
|
|
||||||
# CONFIG_SYSTEM_INIFILE is not set
|
# CONFIG_SYSTEM_INIFILE is not set
|
||||||
|
|
||||||
#
|
|
||||||
# NxPlayer media player library / command Line
|
|
||||||
#
|
|
||||||
|
|
||||||
#
|
|
||||||
# RAM test
|
|
||||||
#
|
|
||||||
# CONFIG_SYSTEM_RAMTEST is not set
|
# CONFIG_SYSTEM_RAMTEST is not set
|
||||||
|
|
||||||
#
|
|
||||||
# readline()
|
|
||||||
#
|
|
||||||
CONFIG_SYSTEM_READLINE=y
|
CONFIG_SYSTEM_READLINE=y
|
||||||
CONFIG_READLINE_ECHO=y
|
CONFIG_READLINE_ECHO=y
|
||||||
|
|
||||||
#
|
|
||||||
# P-Code Support
|
|
||||||
#
|
|
||||||
|
|
||||||
#
|
|
||||||
# PHY Tool
|
|
||||||
#
|
|
||||||
|
|
||||||
#
|
|
||||||
# Power Off
|
|
||||||
#
|
|
||||||
# CONFIG_SYSTEM_POWEROFF is not set
|
# CONFIG_SYSTEM_POWEROFF is not set
|
||||||
|
|
||||||
#
|
|
||||||
# RAMTRON
|
|
||||||
#
|
|
||||||
# CONFIG_SYSTEM_RAMTRON is not set
|
# CONFIG_SYSTEM_RAMTRON is not set
|
||||||
|
|
||||||
#
|
|
||||||
# SD Card
|
|
||||||
#
|
|
||||||
# CONFIG_SYSTEM_SDCARD is not set
|
# CONFIG_SYSTEM_SDCARD is not set
|
||||||
|
|
||||||
#
|
|
||||||
# Sudoku
|
|
||||||
#
|
|
||||||
# CONFIG_SYSTEM_SUDOKU is not set
|
# CONFIG_SYSTEM_SUDOKU is not set
|
||||||
|
|
||||||
#
|
|
||||||
# Sysinfo
|
|
||||||
#
|
|
||||||
# CONFIG_SYSTEM_SYSINFO is not set
|
# CONFIG_SYSTEM_SYSINFO is not set
|
||||||
|
|
||||||
#
|
|
||||||
# Temperature
|
|
||||||
#
|
|
||||||
|
|
||||||
#
|
|
||||||
# VI Work-Alike Editor
|
|
||||||
#
|
|
||||||
# CONFIG_SYSTEM_VI is not set
|
# CONFIG_SYSTEM_VI is not set
|
||||||
|
|
||||||
#
|
|
||||||
# Stack Monitor
|
|
||||||
#
|
|
||||||
|
|
||||||
#
|
|
||||||
# USB CDC/ACM Device Commands
|
|
||||||
#
|
|
||||||
|
|
||||||
#
|
|
||||||
# USB Composite Device Commands
|
|
||||||
#
|
|
||||||
|
|
||||||
#
|
|
||||||
# USB Mass Storage Device Commands
|
|
||||||
#
|
|
||||||
|
|
||||||
#
|
|
||||||
# USB Monitor
|
|
||||||
#
|
|
||||||
|
|
||||||
#
|
|
||||||
# Zmodem Commands
|
|
||||||
#
|
|
||||||
# CONFIG_SYSTEM_ZMODEM is not set
|
# CONFIG_SYSTEM_ZMODEM is not set
|
||||||
|
@ -336,8 +336,8 @@ EXTERN const net_ipv6addr_t g_ipv6_llnetmask; /* Netmask for local link addres
|
|||||||
* of:
|
* of:
|
||||||
*
|
*
|
||||||
* 1. An 80-bit prefix of zeros,
|
* 1. An 80-bit prefix of zeros,
|
||||||
* 2. Te next 16 bits are one, and
|
* 2. The next 16 bits are one, and
|
||||||
* 3. he remaining, least-significant 32 bits contain the IPv4 address.
|
* 3. The remaining, least-significant 32 bits contain the IPv4 address.
|
||||||
*
|
*
|
||||||
* This macro encodes an IPv4 address in an IPv6 address in this fashion.
|
* This macro encodes an IPv4 address in an IPv6 address in this fashion.
|
||||||
*
|
*
|
||||||
@ -355,8 +355,8 @@ EXTERN const net_ipv6addr_t g_ipv6_llnetmask; /* Netmask for local link addres
|
|||||||
{ \
|
{ \
|
||||||
memset(ipv6addr, 0, 5 * sizeof(uint16_t)); \
|
memset(ipv6addr, 0, 5 * sizeof(uint16_t)); \
|
||||||
ipv6addr[5] = 0xffff; \
|
ipv6addr[5] = 0xffff; \
|
||||||
ipv6addr[6] = (uint16_t)((uint32_t)ip4addr >> 16); \
|
ipv6addr[6] = (uint16_t)((uint32_t)ipv4addr >> 16); \
|
||||||
ipv6addr[7] = (uint16_t)ip4addr & 0xffff; \
|
ipv6addr[7] = (uint16_t)ipv4addr & 0xffff; \
|
||||||
} \
|
} \
|
||||||
while (0)
|
while (0)
|
||||||
|
|
||||||
|
@ -520,7 +520,7 @@ uint16_t ipv6_chksum(FAR struct net_driver_s *dev);
|
|||||||
* Function: netdev_ipv6_hdrlen
|
* Function: netdev_ipv6_hdrlen
|
||||||
*
|
*
|
||||||
* Description:
|
* Description:
|
||||||
* Provide header lenght for interface based on device
|
* Provide header length for interface based on device
|
||||||
*
|
*
|
||||||
* Input Parameters:
|
* Input Parameters:
|
||||||
* dev Device structure pointer
|
* dev Device structure pointer
|
||||||
|
@ -87,8 +87,8 @@
|
|||||||
|
|
||||||
/* Allocate a new ARP data callback */
|
/* Allocate a new ARP data callback */
|
||||||
|
|
||||||
#define arp_callback_alloc(conn) devif_callback_alloc(&(conn)->list)
|
#define arp_callback_alloc(dev) devif_callback_alloc(&(dev)->d_callbacks)
|
||||||
#define arp_callback_free(conn,cb) devif_callback_free(cb, &(conn)->list)
|
#define arp_callback_free(dev,cb) devif_callback_free(cb, &(dev)->d_callbacks)
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Public Types
|
* Public Types
|
||||||
@ -140,6 +140,7 @@ struct arp_send_s
|
|||||||
#ifdef CONFIG_NETDEV_MULTINIC
|
#ifdef CONFIG_NETDEV_MULTINIC
|
||||||
uint8_t snd_ifname[IFNAMSIZ]; /* Interface name */
|
uint8_t snd_ifname[IFNAMSIZ]; /* Interface name */
|
||||||
#endif
|
#endif
|
||||||
|
int16_t snd_result; /* The result of the send operation */
|
||||||
in_addr_t snd_ipaddr; /* The IP address to be queried */
|
in_addr_t snd_ipaddr; /* The IP address to be queried */
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
@ -171,12 +172,6 @@ struct arp_notify_s
|
|||||||
* Public Data
|
* Public Data
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#ifdef CONFIG_NET_ARP_SEND
|
|
||||||
/* This is the singleton "connection" structure */
|
|
||||||
|
|
||||||
extern struct arp_conn_s g_arp_conn;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Public Function Prototypes
|
* Public Function Prototypes
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
@ -52,10 +52,6 @@
|
|||||||
* Public Data
|
* Public Data
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
/* This is the singleton "connection" structure */
|
|
||||||
|
|
||||||
struct arp_conn_s g_arp_conn;
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Private Functions
|
* Private Functions
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
@ -87,7 +83,7 @@ int arp_poll(FAR struct net_driver_s *dev, devif_poll_callback_t callback)
|
|||||||
|
|
||||||
/* Perform the ARP callbacks */
|
/* Perform the ARP callbacks */
|
||||||
|
|
||||||
(void)devif_callback_execute(dev, &g_arp_conn, ARP_POLL, g_arp_conn.list);
|
(void)devif_callback_execute(dev, NULL, ARP_POLL, dev->d_callbacks);
|
||||||
|
|
||||||
/* Call back into the driver */
|
/* Call back into the driver */
|
||||||
|
|
||||||
|
@ -81,6 +81,25 @@
|
|||||||
* Private Functions
|
* Private Functions
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Function: arp_send_terminate
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
static void arp_send_terminate(FAR struct arp_send_s *state, int result)
|
||||||
|
{
|
||||||
|
/* Don't allow any further call backs. */
|
||||||
|
|
||||||
|
state->snd_sent = true;
|
||||||
|
state->snd_result = (int16_t)result;
|
||||||
|
state->snd_cb->flags = 0;
|
||||||
|
state->snd_cb->priv = NULL;
|
||||||
|
state->snd_cb->event = NULL;
|
||||||
|
|
||||||
|
/* Wake up the waiting thread */
|
||||||
|
|
||||||
|
sem_post(&state->snd_sem);
|
||||||
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Function: arp_send_interrupt
|
* Function: arp_send_interrupt
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
@ -95,18 +114,15 @@ static uint16_t arp_send_interrupt(FAR struct net_driver_s *dev,
|
|||||||
|
|
||||||
if (state)
|
if (state)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_NETDEV_MULTINIC
|
/* Check if the network is still up */
|
||||||
/* Is this the device that we need to route this request? */
|
|
||||||
|
|
||||||
if (strncmp((FAR const char *)dev->d_ifname, (FAR const char *)state->snd_ifname, IFNAMSIZ) != 0)
|
if ((flags & NETDEV_DOWN) != 0)
|
||||||
{
|
{
|
||||||
/* No... pass on this one and wait for the device that we want */
|
nlldbg("ERROR: Interface is down\n");
|
||||||
|
arp_send_terminate(state, -ENETUNREACH);
|
||||||
return flags;
|
return flags;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Check if the outgoing packet is available. It may have been claimed
|
/* Check if the outgoing packet is available. It may have been claimed
|
||||||
* by a send interrupt serving a different thread -OR- if the output
|
* by a send interrupt serving a different thread -OR- if the output
|
||||||
* buffer currently contains unprocessed incoming data. In these cases
|
* buffer currently contains unprocessed incoming data. In these cases
|
||||||
@ -138,14 +154,7 @@ static uint16_t arp_send_interrupt(FAR struct net_driver_s *dev,
|
|||||||
|
|
||||||
/* Don't allow any further call backs. */
|
/* Don't allow any further call backs. */
|
||||||
|
|
||||||
state->snd_sent = true;
|
arp_send_terminate(state, OK);
|
||||||
state->snd_cb->flags = 0;
|
|
||||||
state->snd_cb->priv = NULL;
|
|
||||||
state->snd_cb->event = NULL;
|
|
||||||
|
|
||||||
/* Wake up the waiting thread */
|
|
||||||
|
|
||||||
sem_post(&state->snd_sem);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return flags;
|
return flags;
|
||||||
@ -281,7 +290,7 @@ int arp_send(in_addr_t ipaddr)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
save = net_lock();
|
save = net_lock();
|
||||||
state.snd_cb = arp_callback_alloc(&g_arp_conn);
|
state.snd_cb = arp_callback_alloc(dev);
|
||||||
if (!state.snd_cb)
|
if (!state.snd_cb)
|
||||||
{
|
{
|
||||||
ndbg("ERROR: Failed to allocate a cllback\n");
|
ndbg("ERROR: Failed to allocate a cllback\n");
|
||||||
@ -332,6 +341,7 @@ int arp_send(in_addr_t ipaddr)
|
|||||||
/* Arm/re-arm the callback */
|
/* Arm/re-arm the callback */
|
||||||
|
|
||||||
state.snd_sent = false;
|
state.snd_sent = false;
|
||||||
|
state.snd_result = -EBUSY;
|
||||||
state.snd_cb->flags = ARP_POLL;
|
state.snd_cb->flags = ARP_POLL;
|
||||||
state.snd_cb->priv = (FAR void *)&state;
|
state.snd_cb->priv = (FAR void *)&state;
|
||||||
state.snd_cb->event = arp_send_interrupt;
|
state.snd_cb->event = arp_send_interrupt;
|
||||||
@ -356,6 +366,16 @@ int arp_send(in_addr_t ipaddr)
|
|||||||
}
|
}
|
||||||
while (!state.snd_sent);
|
while (!state.snd_sent);
|
||||||
|
|
||||||
|
/* Check the result of the send operation */
|
||||||
|
|
||||||
|
ret = state.snd_result;
|
||||||
|
if (ret < 0)
|
||||||
|
{
|
||||||
|
/* Break out on a send failure */
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
/* Now wait for response to the ARP response to be received. The
|
/* Now wait for response to the ARP response to be received. The
|
||||||
* optimal delay would be the work case round trip time.
|
* optimal delay would be the work case round trip time.
|
||||||
* NOTE: The network is locked.
|
* NOTE: The network is locked.
|
||||||
@ -372,6 +392,8 @@ int arp_send(in_addr_t ipaddr)
|
|||||||
|
|
||||||
if (ret == OK)
|
if (ret == OK)
|
||||||
{
|
{
|
||||||
|
/* Break out if arp_wait() fails */
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -381,7 +403,7 @@ int arp_send(in_addr_t ipaddr)
|
|||||||
}
|
}
|
||||||
|
|
||||||
sem_destroy(&state.snd_sem);
|
sem_destroy(&state.snd_sem);
|
||||||
arp_callback_free(&g_arp_conn, state.snd_cb);
|
arp_callback_free(dev, state.snd_cb);
|
||||||
errout_with_lock:
|
errout_with_lock:
|
||||||
net_unlock(save);
|
net_unlock(save);
|
||||||
errout:
|
errout:
|
||||||
|
@ -61,61 +61,67 @@
|
|||||||
* TCP_ACKDATA, XYZ_NEWDATA, and TCP_CLOSE flags may be set at the same time,
|
* TCP_ACKDATA, XYZ_NEWDATA, and TCP_CLOSE flags may be set at the same time,
|
||||||
* whereas the others are mutually exclusive.
|
* whereas the others are mutually exclusive.
|
||||||
*
|
*
|
||||||
* TCP_ACKDATA IN: Signifies that the outstanding data was ACKed and
|
* TCP_ACKDATA IN: Signifies that the outstanding data was ACKed and
|
||||||
* the socket layer should send out new data instead
|
* the socket layer should send out new data instead
|
||||||
* of retransmitting the last data (TCP only)
|
* of retransmitting the last data (TCP only)
|
||||||
* OUT: Input state must be preserved on output.
|
* OUT: Input state must be preserved on output.
|
||||||
*
|
*
|
||||||
* TCP_NEWDATA IN: Set to indicate that the peer has sent us new data.
|
* TCP_NEWDATA IN: Set to indicate that the peer has sent us new data.
|
||||||
* UDP_NEWDATA OUT: Cleared (only) by the socket layer logic to indicate
|
* UDP_NEWDATA OUT: Cleared (only) by the socket layer logic to indicate
|
||||||
* PKT_NEWDATA that the new data was consumed, suppressing further
|
* PKT_NEWDATA that the new data was consumed, suppressing further
|
||||||
* ICMP_NEWDATA attempts to process the new data.
|
* ICMP_NEWDATA attempts to process the new data.
|
||||||
* ICMPv6_NEWDATA
|
* ICMPv6_NEWDATA
|
||||||
*
|
*
|
||||||
* TCP_SNDACK IN: Not used; always zero
|
* TCP_SNDACK IN: Not used; always zero
|
||||||
* OUT: Set by the socket layer if the new data was consumed
|
* OUT: Set by the socket layer if the new data was consumed
|
||||||
* and an ACK should be sent in the response. (TCP only)
|
* and an ACK should be sent in the response. (TCP only)
|
||||||
*
|
*
|
||||||
* TCP_REXMIT IN: Tells the socket layer to retransmit the data that
|
* TCP_REXMIT IN: Tells the socket layer to retransmit the data that
|
||||||
* was last sent. (TCP only)
|
* was last sent. (TCP only)
|
||||||
* OUT: Not used
|
* OUT: Not used
|
||||||
*
|
*
|
||||||
* ARP_POLL IN: Used for polling the socket layer. This is provided
|
* ARP_POLL IN: Used for polling the socket layer. This is provided
|
||||||
* TCP_POLL periodically from the drivers to support (1) timed
|
* TCP_POLL periodically from the drivers to support (1) timed
|
||||||
* UDP_POLL operations, and (2) to check if the socket layer has
|
* UDP_POLL operations, and (2) to check if the socket layer has
|
||||||
* PKT_POLL data that it wants to send
|
* PKT_POLL data that it wants to send
|
||||||
* ICMP_POLL OUT: Not used
|
* ICMP_POLL OUT: Not used
|
||||||
* ICMPv6_POLL
|
* ICMPv6_POLL
|
||||||
*
|
*
|
||||||
* TCP_BACKLOG IN: There is a new connection in the backlog list set
|
* TCP_BACKLOG IN: There is a new connection in the backlog list set
|
||||||
* up by the listen() command. (TCP only)
|
* up by the listen() command. (TCP only)
|
||||||
* OUT: Not used
|
* OUT: Not used
|
||||||
*
|
*
|
||||||
* TCP_CLOSE IN: The remote host has closed the connection, thus the
|
* TCP_CLOSE IN: The remote host has closed the connection, thus the
|
||||||
* connection has gone away. (TCP only)
|
* connection has gone away. (TCP only)
|
||||||
* OUT: The socket layer signals that it wants to close the
|
* OUT: The socket layer signals that it wants to close the
|
||||||
* connection. (TCP only)
|
* connection. (TCP only)
|
||||||
*
|
*
|
||||||
* TCP_ABORT IN: The remote host has aborted the connection, thus the
|
* TCP_ABORT IN: The remote host has aborted the connection, thus the
|
||||||
* connection has gone away. (TCP only)
|
* connection has gone away. (TCP only)
|
||||||
* OUT: The socket layer signals that it wants to abort the
|
* OUT: The socket layer signals that it wants to abort the
|
||||||
* connection. (TCP only)
|
* connection. (TCP only)
|
||||||
*
|
*
|
||||||
* TCP_CONNECTED IN: We have got a connection from a remote host and have
|
* TCP_CONNECTED IN: We have got a connection from a remote host and have
|
||||||
* set up a new connection for it, or an active connection
|
* set up a new connection for it, or an active connection
|
||||||
* has been successfully established. (TCP only)
|
* has been successfully established. (TCP only)
|
||||||
* OUT: Not used
|
* OUT: Not used
|
||||||
*
|
*
|
||||||
* TCP_TIMEDOUT IN: The connection has been aborted due to too many
|
* TCP_TIMEDOUT IN: The connection has been aborted due to too many
|
||||||
* retransmissions. (TCP only)
|
* retransmissions. (TCP only)
|
||||||
* OUT: Not used
|
* OUT: Not used
|
||||||
*
|
*
|
||||||
* ICMP_ECHOREPLY IN: An ICMP Echo Reply has been received. Used to support
|
* ICMP_ECHOREPLY IN: An ICMP Echo Reply has been received. Used to support
|
||||||
* ICMPv6_ECHOREPLY ICMP ping from the socket layer. (ICMP only)
|
* ICMP ping from the socket layer. (ICMPv4 only)
|
||||||
* OUT: Cleared (only) by the socket layer logic to indicate
|
* OUT: Cleared (only) by the socket layer logic to indicate
|
||||||
* that the reply was processed, suppressing further
|
* that the reply was processed, suppressing further
|
||||||
* attempts to process the reply.
|
* attempts to process the reply.
|
||||||
* NETDEV_DOWN: IN: The network device has been taken down.
|
* ICMPv6_ECHOREPLY IN: An ICMP Echo Reply has been received. Used to support
|
||||||
|
* ICMP ping from the socket layer. (ICMPv6 only)
|
||||||
|
* OUT: Cleared (only) by the socket layer logic to indicate
|
||||||
|
* that the reply was processed, suppressing further
|
||||||
|
* attempts to process the reply.
|
||||||
|
* NETDEV_DOWN: IN: The network device has been taken down.
|
||||||
|
* OUT: Not used
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define TCP_ACKDATA (1 << 0)
|
#define TCP_ACKDATA (1 << 0)
|
||||||
@ -138,8 +144,8 @@
|
|||||||
#define TCP_CONNECTED (1 << 8)
|
#define TCP_CONNECTED (1 << 8)
|
||||||
#define TCP_TIMEDOUT (1 << 9)
|
#define TCP_TIMEDOUT (1 << 9)
|
||||||
#define ICMP_ECHOREPLY (1 << 10)
|
#define ICMP_ECHOREPLY (1 << 10)
|
||||||
#define ICMPv6_ECHOREPLY ICMP_ECHOREPLY
|
#define ICMPv6_ECHOREPLY (1 << 11)
|
||||||
#define NETDEV_DOWN (1 << 11)
|
#define NETDEV_DOWN (1 << 12)
|
||||||
|
|
||||||
#define TCP_CONN_EVENTS (TCP_CLOSE | TCP_ABORT | TCP_CONNECTED | \
|
#define TCP_CONN_EVENTS (TCP_CLOSE | TCP_ABORT | TCP_CONNECTED | \
|
||||||
TCP_TIMEDOUT | NETDEV_DOWN)
|
TCP_TIMEDOUT | NETDEV_DOWN)
|
||||||
@ -197,12 +203,6 @@ extern uint16_t g_ipid;
|
|||||||
extern uint8_t g_reassembly_timer;
|
extern uint8_t g_reassembly_timer;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(CONFIG_NET_ICMP) && defined(CONFIG_NET_ICMP_PING)
|
|
||||||
/* List of applications waiting for ICMP ECHO REPLY */
|
|
||||||
|
|
||||||
extern struct devif_callback_s *g_icmp_echocallback;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Public Function Prototypes
|
* Public Function Prototypes
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
@ -285,8 +285,18 @@ void devif_callback_free(FAR struct devif_callback_s *cb,
|
|||||||
* This is called internally as part of uIP initialization and should not
|
* This is called internally as part of uIP initialization and should not
|
||||||
* be accessed from the application or socket layer.
|
* be accessed from the application or socket layer.
|
||||||
*
|
*
|
||||||
|
* Input parameters:
|
||||||
|
* dev - The network device state structure associated with the network
|
||||||
|
* device that initiated the callback event.
|
||||||
|
* pvconn - Holds a reference to the TCP connection structure or the UDP
|
||||||
|
* port structure. May be NULL if the even is not related to a TCP
|
||||||
|
* connection or UDP port.
|
||||||
|
*
|
||||||
|
* Returned value:
|
||||||
|
* The updated flags as modified by the callback functions.
|
||||||
|
*
|
||||||
* Assumptions:
|
* Assumptions:
|
||||||
* This function is called with interrupts disabled.
|
* This function is called with the network locked.
|
||||||
*
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
|
@ -216,8 +216,18 @@ void devif_callback_free(FAR struct devif_callback_s *cb,
|
|||||||
* This is called internally as part of uIP initialization and should not
|
* This is called internally as part of uIP initialization and should not
|
||||||
* be accessed from the application or socket layer.
|
* be accessed from the application or socket layer.
|
||||||
*
|
*
|
||||||
|
* Input parameters:
|
||||||
|
* dev - The network device state structure associated with the network
|
||||||
|
* device that initiated the callback event.
|
||||||
|
* pvconn - Holds a reference to the TCP connection structure or the UDP
|
||||||
|
* port structure. May be NULL if the even is not related to a TCP
|
||||||
|
* connection or UDP port.
|
||||||
|
*
|
||||||
|
* Returned value:
|
||||||
|
* The updated flags as modified by the callback functions.
|
||||||
|
*
|
||||||
* Assumptions:
|
* Assumptions:
|
||||||
* This function is called with interrupts disabled.
|
* This function is called with the network locked.
|
||||||
*
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
|
@ -162,7 +162,7 @@ int ipv6_input(FAR struct net_driver_s *dev)
|
|||||||
g_netstats.ipv6.vhlerr++;
|
g_netstats.ipv6.vhlerr++;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
nlldbg("Invalid IPv6 version: %d\n", ipv6->vtc >> 4);
|
nlldbg("ERROR: Invalid IPv6 version: %d\n", ipv6->vtc >> 4);
|
||||||
goto drop;
|
goto drop;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -174,12 +174,12 @@ int ipv6_input(FAR struct net_driver_s *dev)
|
|||||||
*
|
*
|
||||||
* The length reported in the IPv6 header is the length of the payload
|
* The length reported in the IPv6 header is the length of the payload
|
||||||
* that follows the header. The device interface uses the d_len variable for
|
* that follows the header. The device interface uses the d_len variable for
|
||||||
* holding the size of the entire packet, including the IP and link layer
|
* holding the size of the entire packet, including the IP header and link
|
||||||
* headers.
|
* layer header.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
pktlen = (ipv6->len[0] << 8) + ipv6->len[1] + IPv6_HDRLEN + netdev_ip +
|
pktlen = ((uint16_t)ipv6->len[0] << 8) + (uint16_t)ipv6->len[1] +
|
||||||
netdev_ipv6_hdrlen(dev);
|
IPv6_HDRLEN + netdev_ipv6_hdrlen(dev);
|
||||||
|
|
||||||
if (pktlen <= dev->d_len)
|
if (pktlen <= dev->d_len)
|
||||||
{
|
{
|
||||||
@ -187,7 +187,7 @@ int ipv6_input(FAR struct net_driver_s *dev)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
nlldbg("IP packet shorter than length in IP header\n");
|
nlldbg("ERROR: IP packet shorter than length in IP header\n");
|
||||||
goto drop;
|
goto drop;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -219,7 +219,7 @@ int ipv6_input(FAR struct net_driver_s *dev)
|
|||||||
* packets.
|
* packets.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
nlldbg("No IP address assigned\n");
|
nlldbg("ERROR: No IP address assigned\n");
|
||||||
goto drop;
|
goto drop;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -282,7 +282,7 @@ int ipv6_input(FAR struct net_driver_s *dev)
|
|||||||
g_netstats.ipv6.protoerr++;
|
g_netstats.ipv6.protoerr++;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
nlldbg("Unrecognized IP protocol: %04x\n", ipv6->proto);
|
nlldbg("ERROR: Unrecognized IP protocol: %04x\n", ipv6->proto);
|
||||||
goto drop;
|
goto drop;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -70,8 +70,8 @@
|
|||||||
|
|
||||||
/* Allocate a new ICMP data callback */
|
/* Allocate a new ICMP data callback */
|
||||||
|
|
||||||
#define icmp_callback_alloc() devif_callback_alloc(&dev->d_callbacks)
|
#define icmp_callback_alloc(dev) devif_callback_alloc(&(dev)->d_callbacks)
|
||||||
#define icmp_callback_free(cb) devif_callback_free(cb, &dev->d_callbacks)
|
#define icmp_callback_free(dev,cb) devif_callback_free(cb, &(dev)->d_callbacks)
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Private Types
|
* Private Types
|
||||||
@ -162,12 +162,10 @@ static uint16_t ping_interrupt(FAR struct net_driver_s *dev, FAR void *conn,
|
|||||||
int i;
|
int i;
|
||||||
|
|
||||||
nllvdbg("flags: %04x\n", flags);
|
nllvdbg("flags: %04x\n", flags);
|
||||||
|
|
||||||
if (pstate)
|
if (pstate)
|
||||||
{
|
{
|
||||||
/* Check if the network is still up
|
/* Check if the network is still up */
|
||||||
*
|
|
||||||
* REVISIT: Now does the ICMP logic know that this was the correct device?
|
|
||||||
*/
|
|
||||||
|
|
||||||
if ((flags & NETDEV_DOWN) != 0)
|
if ((flags & NETDEV_DOWN) != 0)
|
||||||
{
|
{
|
||||||
@ -340,24 +338,25 @@ end_wait:
|
|||||||
int icmp_ping(in_addr_t addr, uint16_t id, uint16_t seqno, uint16_t datalen,
|
int icmp_ping(in_addr_t addr, uint16_t id, uint16_t seqno, uint16_t datalen,
|
||||||
int dsecs)
|
int dsecs)
|
||||||
{
|
{
|
||||||
|
FAR struct net_driver_s *dev;
|
||||||
struct icmp_ping_s state;
|
struct icmp_ping_s state;
|
||||||
net_lock_t save;
|
net_lock_t save;
|
||||||
#ifdef CONFIG_NET_ARP_SEND
|
#ifdef CONFIG_NET_ARP_SEND
|
||||||
int ret;
|
int ret;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_NETDEV_MULTINIC
|
|
||||||
FAR struct net_driver_s *dev;
|
|
||||||
|
|
||||||
/* Get the device that will be used to route this ICMP ECHO request */
|
/* Get the device that will be used to route this ICMP ECHO request */
|
||||||
|
|
||||||
|
#ifdef CONFIG_NETDEV_MULTINIC
|
||||||
dev = netdev_findby_ipv4addr(g_ipv4_allzeroaddr, addr);
|
dev = netdev_findby_ipv4addr(g_ipv4_allzeroaddr, addr);
|
||||||
|
#else
|
||||||
|
dev = netdev_findby_ipv4addr(addr);
|
||||||
|
#endif
|
||||||
if (dev == 0)
|
if (dev == 0)
|
||||||
{
|
{
|
||||||
ndbg("ERROR: Not reachable\n");
|
ndbg("ERROR: Not reachable\n");
|
||||||
return -ENETUNREACH;
|
return -ENETUNREACH;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef CONFIG_NET_ARP_SEND
|
#ifdef CONFIG_NET_ARP_SEND
|
||||||
/* Make sure that the IP address mapping is in the ARP table */
|
/* Make sure that the IP address mapping is in the ARP table */
|
||||||
@ -386,7 +385,7 @@ int icmp_ping(in_addr_t addr, uint16_t id, uint16_t seqno, uint16_t datalen,
|
|||||||
|
|
||||||
/* Set up the callback */
|
/* Set up the callback */
|
||||||
|
|
||||||
state.png_cb = icmp_callback_alloc();
|
state.png_cb = icmp_callback_alloc(dev);
|
||||||
if (state.png_cb)
|
if (state.png_cb)
|
||||||
{
|
{
|
||||||
state.png_cb->flags = (ICMP_POLL | ICMP_ECHOREPLY | NETDEV_DOWN);
|
state.png_cb->flags = (ICMP_POLL | ICMP_ECHOREPLY | NETDEV_DOWN);
|
||||||
@ -396,11 +395,7 @@ int icmp_ping(in_addr_t addr, uint16_t id, uint16_t seqno, uint16_t datalen,
|
|||||||
|
|
||||||
/* Notify the device driver of the availability of TX data */
|
/* Notify the device driver of the availability of TX data */
|
||||||
|
|
||||||
#ifdef CONFIG_NETDEV_MULTINIC
|
netdev_txnotify_dev(dev);
|
||||||
netdev_ipv4_txnotify_dev(dev);
|
|
||||||
#else
|
|
||||||
netdev_ipv4_txnotify(state.png_addr);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Wait for either the full round trip transfer to complete or
|
/* Wait for either the full round trip transfer to complete or
|
||||||
* for timeout to occur. (1) net_lockedwait will also terminate if a
|
* for timeout to occur. (1) net_lockedwait will also terminate if a
|
||||||
@ -412,7 +407,7 @@ int icmp_ping(in_addr_t addr, uint16_t id, uint16_t seqno, uint16_t datalen,
|
|||||||
nllvdbg("Start time: 0x%08x seqno: %d\n", state.png_time, seqno);
|
nllvdbg("Start time: 0x%08x seqno: %d\n", state.png_time, seqno);
|
||||||
net_lockedwait(&state.png_sem);
|
net_lockedwait(&state.png_sem);
|
||||||
|
|
||||||
icmp_callback_free(state.png_cb);
|
icmp_callback_free(dev, state.png_cb);
|
||||||
}
|
}
|
||||||
|
|
||||||
net_unlock(save);
|
net_unlock(save);
|
||||||
|
@ -55,8 +55,8 @@
|
|||||||
|
|
||||||
/* Allocate a new ICMPv6 data callback */
|
/* Allocate a new ICMPv6 data callback */
|
||||||
|
|
||||||
#define icmpv6_callback_alloc() devif_callback_alloc(&g_icmpv6_conn.list)
|
#define icmpv6_callback_alloc(dev) devif_callback_alloc(&(dev)->d_callbacks)
|
||||||
#define icmpv6_callback_free(cb) devif_callback_free(cb, &g_icmpv6_conn.list)
|
#define icmpv6_callback_free(dev,cb) devif_callback_free(cb, &(dev)->d_callbacks)
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Public Type Definitions
|
* Public Type Definitions
|
||||||
@ -112,12 +112,6 @@ extern "C"
|
|||||||
# define EXTERN extern
|
# define EXTERN extern
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(CONFIG_NET_ICMPv6_PING) || defined(CONFIG_NET_ICMPv6_NEIGHBOR)
|
|
||||||
/* This is the singleton "connection" structure for TX polls and echo replies */
|
|
||||||
|
|
||||||
EXTERN struct icmpv6_conn_s g_icmpv6_conn;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Public Function Prototypes
|
* Public Function Prototypes
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
@ -78,12 +78,6 @@
|
|||||||
* Public Data
|
* Public Data
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#if defined(CONFIG_NET_ICMPv6_PING) || defined(CONFIG_NET_ICMPv6_NEIGHBOR)
|
|
||||||
/* This is the singleton "connection" structure for TX polls and echo replies */
|
|
||||||
|
|
||||||
struct icmpv6_conn_s g_icmpv6_conn;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Public Functions
|
* Public Functions
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
@ -297,7 +291,7 @@ void icmpv6_input(FAR struct net_driver_s *dev)
|
|||||||
|
|
||||||
/* Dispatch the ECHO reply to the waiting thread */
|
/* Dispatch the ECHO reply to the waiting thread */
|
||||||
|
|
||||||
flags = devif_callback_execute(dev, icmp, flags, g_icmpv6_conn.list);
|
flags = devif_callback_execute(dev, icmp, flags, dev->d_callbacks);
|
||||||
|
|
||||||
/* If the ECHO reply was not handled, then drop the packet */
|
/* If the ECHO reply was not handled, then drop the packet */
|
||||||
|
|
||||||
|
@ -295,7 +295,7 @@ int icmpv6_neighbor(const net_ipv6addr_t ipaddr)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
save = net_lock();
|
save = net_lock();
|
||||||
state.snd_cb = icmpv6_callback_alloc();
|
state.snd_cb = icmpv6_callback_alloc(dev);
|
||||||
if (!state.snd_cb)
|
if (!state.snd_cb)
|
||||||
{
|
{
|
||||||
ndbg("ERROR: Failed to allocate a cllback\n");
|
ndbg("ERROR: Failed to allocate a cllback\n");
|
||||||
@ -395,7 +395,7 @@ int icmpv6_neighbor(const net_ipv6addr_t ipaddr)
|
|||||||
}
|
}
|
||||||
|
|
||||||
sem_destroy(&state.snd_sem);
|
sem_destroy(&state.snd_sem);
|
||||||
icmpv6_callback_free(state.snd_cb);
|
icmpv6_callback_free(dev, state.snd_cb);
|
||||||
errout_with_lock:
|
errout_with_lock:
|
||||||
net_unlock(save);
|
net_unlock(save);
|
||||||
errout:
|
errout:
|
||||||
|
@ -257,13 +257,22 @@ static uint16_t ping_interrupt(FAR struct net_driver_s *dev, FAR void *conn,
|
|||||||
|
|
||||||
if (pstate)
|
if (pstate)
|
||||||
{
|
{
|
||||||
|
/* Check if the network is still up */
|
||||||
|
|
||||||
|
if ((flags & NETDEV_DOWN) != 0)
|
||||||
|
{
|
||||||
|
nlldbg("ERROR: Interface is down\n");
|
||||||
|
pstate->png_result = -ENETUNREACH;
|
||||||
|
goto end_wait;
|
||||||
|
}
|
||||||
|
|
||||||
/* Check if this is a ICMPv6 ECHO reply. If so, return the sequence
|
/* Check if this is a ICMPv6 ECHO reply. If so, return the sequence
|
||||||
* number to the caller. NOTE: We may not even have sent the
|
* number to the caller. NOTE: We may not even have sent the
|
||||||
* requested ECHO request; this could have been the delayed ECHO
|
* requested ECHO request; this could have been the delayed ECHO
|
||||||
* response from a previous ping.
|
* response from a previous ping.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if ((flags & ICMPv6_ECHOREPLY) != 0 && conn != NULL)
|
else if ((flags & ICMPv6_ECHOREPLY) != 0 && conn != NULL)
|
||||||
{
|
{
|
||||||
FAR struct icmpv6_echo_reply_s *reply = ICMPv6ECHOREPLY;
|
FAR struct icmpv6_echo_reply_s *reply = ICMPv6ECHOREPLY;
|
||||||
|
|
||||||
@ -396,6 +405,7 @@ end_wait:
|
|||||||
int icmpv6_ping(net_ipv6addr_t addr, uint16_t id, uint16_t seqno,
|
int icmpv6_ping(net_ipv6addr_t addr, uint16_t id, uint16_t seqno,
|
||||||
uint16_t datalen, int dsecs)
|
uint16_t datalen, int dsecs)
|
||||||
{
|
{
|
||||||
|
FAR struct net_driver_s *dev;
|
||||||
struct icmpv6_ping_s state;
|
struct icmpv6_ping_s state;
|
||||||
net_lock_t save;
|
net_lock_t save;
|
||||||
|
|
||||||
@ -412,6 +422,19 @@ int icmpv6_ping(net_ipv6addr_t addr, uint16_t id, uint16_t seqno,
|
|||||||
}
|
}
|
||||||
#endif /* CONFIG_NET_ICMPv6_NEIGHBOR */
|
#endif /* CONFIG_NET_ICMPv6_NEIGHBOR */
|
||||||
|
|
||||||
|
/* Get the device that will be used to route this ICMP ECHO request */
|
||||||
|
|
||||||
|
#ifdef CONFIG_NETDEV_MULTINIC
|
||||||
|
dev = netdev_findby_ipv6addr(g_ipv6_allzeroaddr, addr);
|
||||||
|
#else
|
||||||
|
dev = netdev_findby_ipv6addr(addr);
|
||||||
|
#endif
|
||||||
|
if (dev == 0)
|
||||||
|
{
|
||||||
|
ndbg("ERROR: Not reachable\n");
|
||||||
|
return -ENETUNREACH;
|
||||||
|
}
|
||||||
|
|
||||||
/* Initialize the state structure */
|
/* Initialize the state structure */
|
||||||
|
|
||||||
sem_init(&state.png_sem, 0, 0);
|
sem_init(&state.png_sem, 0, 0);
|
||||||
@ -429,7 +452,7 @@ int icmpv6_ping(net_ipv6addr_t addr, uint16_t id, uint16_t seqno,
|
|||||||
|
|
||||||
/* Set up the callback */
|
/* Set up the callback */
|
||||||
|
|
||||||
state.png_cb = icmpv6_callback_alloc();
|
state.png_cb = icmpv6_callback_alloc(dev);
|
||||||
if (state.png_cb)
|
if (state.png_cb)
|
||||||
{
|
{
|
||||||
state.png_cb->flags = (ICMPv6_POLL | ICMPv6_ECHOREPLY);
|
state.png_cb->flags = (ICMPv6_POLL | ICMPv6_ECHOREPLY);
|
||||||
@ -439,11 +462,7 @@ int icmpv6_ping(net_ipv6addr_t addr, uint16_t id, uint16_t seqno,
|
|||||||
|
|
||||||
/* Notify the device driver of the availability of TX data */
|
/* Notify the device driver of the availability of TX data */
|
||||||
|
|
||||||
#ifdef CONFIG_NETDEV_MULTINIC
|
netdev_txnotify_dev(dev);
|
||||||
netdev_ipv6_txnotify(g_ipv6_allzeroaddr, state.png_addr);
|
|
||||||
#else
|
|
||||||
netdev_ipv6_txnotify(state.png_addr);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Wait for either the full round trip transfer to complete or
|
/* Wait for either the full round trip transfer to complete or
|
||||||
* for timeout to occur. (1) net_lockedwait will also terminate if a
|
* for timeout to occur. (1) net_lockedwait will also terminate if a
|
||||||
@ -455,7 +474,7 @@ int icmpv6_ping(net_ipv6addr_t addr, uint16_t id, uint16_t seqno,
|
|||||||
nllvdbg("Start time: 0x%08x seqno: %d\n", state.png_time, seqno);
|
nllvdbg("Start time: 0x%08x seqno: %d\n", state.png_time, seqno);
|
||||||
net_lockedwait(&state.png_sem);
|
net_lockedwait(&state.png_sem);
|
||||||
|
|
||||||
icmpv6_callback_free(state.png_cb);
|
icmpv6_callback_free(dev, state.png_cb);
|
||||||
}
|
}
|
||||||
|
|
||||||
net_unlock(save);
|
net_unlock(save);
|
||||||
|
@ -97,7 +97,7 @@ void icmpv6_poll(FAR struct net_driver_s *dev)
|
|||||||
|
|
||||||
/* Perform the application callback */
|
/* Perform the application callback */
|
||||||
|
|
||||||
(void)devif_callback_execute(dev, NULL, ICMPv6_POLL, g_icmpv6_conn.list);
|
(void)devif_callback_execute(dev, NULL, ICMPv6_POLL, dev->d_callbacks);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* CONFIG_NET_ICMPv6_PING || CONFIG_NET_ICMPv6_NEIGHBOR */
|
#endif /* CONFIG_NET_ICMPv6_PING || CONFIG_NET_ICMPv6_NEIGHBOR */
|
||||||
|
@ -130,7 +130,6 @@ FAR struct net_driver_s *netdev_default(void);
|
|||||||
#ifdef CONFIG_NET_IPv4
|
#ifdef CONFIG_NET_IPv4
|
||||||
# ifdef CONFIG_NETDEV_MULTINIC
|
# ifdef CONFIG_NETDEV_MULTINIC
|
||||||
void netdev_ipv4_txnotify(in_addr_t lipaddr, in_addr_t ripaddr);
|
void netdev_ipv4_txnotify(in_addr_t lipaddr, in_addr_t ripaddr);
|
||||||
void netdev_ipv4_txnotify_dev(FAR struct net_driver_s *dev);
|
|
||||||
# else
|
# else
|
||||||
void netdev_ipv4_txnotify(in_addr_t ripaddr);
|
void netdev_ipv4_txnotify(in_addr_t ripaddr);
|
||||||
# endif
|
# endif
|
||||||
@ -146,6 +145,8 @@ void netdev_ipv6_txnotify(FAR const net_ipv6addr_t ripaddr);
|
|||||||
#endif /* CONFIG_NET_IPv6 */
|
#endif /* CONFIG_NET_IPv6 */
|
||||||
#endif /* CONFIG_NSOCKET_DESCRIPTORS > 0 */
|
#endif /* CONFIG_NSOCKET_DESCRIPTORS > 0 */
|
||||||
|
|
||||||
|
void netdev_txnotify_dev(FAR struct net_driver_s *dev);
|
||||||
|
|
||||||
/* netdev_rxnotify.c *********************************************************/
|
/* netdev_rxnotify.c *********************************************************/
|
||||||
|
|
||||||
#if CONFIG_NSOCKET_DESCRIPTORS > 0 && defined(CONFIG_NET_RXAVAIL)
|
#if CONFIG_NSOCKET_DESCRIPTORS > 0 && defined(CONFIG_NET_RXAVAIL)
|
||||||
|
@ -167,7 +167,7 @@ void netdev_ipv6_txnotify(FAR const net_ipv6addr_t ripaddr)
|
|||||||
#endif /* CONFIG_NET_IPv6 */
|
#endif /* CONFIG_NET_IPv6 */
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Function: netdev_ipv4_txnotify_dev
|
* Function: netdev_txnotify_dev
|
||||||
*
|
*
|
||||||
* Description:
|
* Description:
|
||||||
* Notify the device driver that new TX data is available. This variant
|
* Notify the device driver that new TX data is available. This variant
|
||||||
@ -185,8 +185,7 @@ void netdev_ipv6_txnotify(FAR const net_ipv6addr_t ripaddr)
|
|||||||
*
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#ifdef CONFIG_NETDEV_MULTINIC
|
void netdev_txnotify_dev(FAR struct net_driver_s *dev)
|
||||||
void netdev_ipv4_txnotify_dev(FAR struct net_driver_s *dev)
|
|
||||||
{
|
{
|
||||||
if (dev && dev->d_txavail)
|
if (dev && dev->d_txavail)
|
||||||
{
|
{
|
||||||
@ -195,6 +194,5 @@ void netdev_ipv4_txnotify_dev(FAR struct net_driver_s *dev)
|
|||||||
(void)dev->d_txavail(dev);
|
(void)dev->d_txavail(dev);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_NET_IPv6 */
|
|
||||||
|
|
||||||
#endif /* CONFIG_NET && CONFIG_NSOCKET_DESCRIPTORS */
|
#endif /* CONFIG_NET && CONFIG_NSOCKET_DESCRIPTORS */
|
||||||
|
@ -963,12 +963,8 @@ static inline void recvfrom_udpsender(struct net_driver_s *dev, struct recvfrom_
|
|||||||
|
|
||||||
if (infrom)
|
if (infrom)
|
||||||
{
|
{
|
||||||
FAR struct udp_hdr_s *udp = UDPIPv4BUF;
|
|
||||||
FAR struct ipv4_hdr_s *ipv4 = IPv4BUF;
|
|
||||||
|
|
||||||
#ifdef CONFIG_NET_IPv6
|
#ifdef CONFIG_NET_IPv6
|
||||||
FAR struct udp_conn_s *conn = (FAR struct udp_conn_s*)pstate->rf_sock->s_conn;
|
FAR struct udp_conn_s *conn = (FAR struct udp_conn_s*)pstate->rf_sock->s_conn;
|
||||||
FAR struct sockaddr_in6 *infrom6 = (FAR struct sockaddr_in6 *)infrom;
|
|
||||||
|
|
||||||
/* Hybrid dual-stack IPv6/IPv4 implementations recognize a special
|
/* Hybrid dual-stack IPv6/IPv4 implementations recognize a special
|
||||||
* class of addresses, the IPv4-mapped IPv6 addresses.
|
* class of addresses, the IPv4-mapped IPv6 addresses.
|
||||||
@ -976,7 +972,10 @@ static inline void recvfrom_udpsender(struct net_driver_s *dev, struct recvfrom_
|
|||||||
|
|
||||||
if (conn->domain == PF_INET6)
|
if (conn->domain == PF_INET6)
|
||||||
{
|
{
|
||||||
|
FAR struct sockaddr_in6 *infrom6 = (FAR struct sockaddr_in6 *)infrom;
|
||||||
FAR socklen_t *fromlen = pstate->rf_fromlen;
|
FAR socklen_t *fromlen = pstate->rf_fromlen;
|
||||||
|
FAR struct udp_hdr_s *udp = UDPIPv6BUF;
|
||||||
|
FAR struct ipv6_hdr_s *ipv6 = IPv6BUF;
|
||||||
in_addr_t ipv4addr;
|
in_addr_t ipv4addr;
|
||||||
|
|
||||||
/* Encode the IPv4 address as an IPv4-mapped IPv6 address */
|
/* Encode the IPv4 address as an IPv4-mapped IPv6 address */
|
||||||
@ -985,13 +984,15 @@ static inline void recvfrom_udpsender(struct net_driver_s *dev, struct recvfrom_
|
|||||||
infrom6->sin6_port = udp->srcport;
|
infrom6->sin6_port = udp->srcport;
|
||||||
*fromlen = sizeof(struct sockaddr_in6);
|
*fromlen = sizeof(struct sockaddr_in6);
|
||||||
|
|
||||||
ipv4addr = net_ip4addr_conv32(ipv4->srcipaddr);
|
ipv4addr = net_ip4addr_conv32(ipv6->srcipaddr);
|
||||||
ip6_map_ipv4addr(ipv4addr,
|
ip6_map_ipv4addr(ipv4addr, infrom6->sin6_addr.s6_addr16);
|
||||||
(net_ipv6addr_t)src_addr6.sin6_addr.s6_addr16);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
|
FAR struct udp_hdr_s *udp = UDPIPv4BUF;
|
||||||
|
FAR struct ipv4_hdr_s *ipv4 = IPv4BUF;
|
||||||
|
|
||||||
infrom->sin_family = AF_INET;
|
infrom->sin_family = AF_INET;
|
||||||
infrom->sin_port = udp->srcport;
|
infrom->sin_port = udp->srcport;
|
||||||
|
|
||||||
|
@ -129,9 +129,6 @@ static uint16_t udp_datahandler(FAR struct net_driver_s *dev, FAR struct udp_con
|
|||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
FAR struct udp_hdr_s *udp = UDPIPv4BUF;
|
|
||||||
FAR struct ipv4_hdr_s *ipv4 = IPv4BUF;
|
|
||||||
|
|
||||||
#ifdef CONFIG_NET_IPv6
|
#ifdef CONFIG_NET_IPv6
|
||||||
/* Hybrid dual-stack IPv6/IPv4 implementations recognize a special
|
/* Hybrid dual-stack IPv6/IPv4 implementations recognize a special
|
||||||
* class of addresses, the IPv4-mapped IPv6 addresses.
|
* class of addresses, the IPv4-mapped IPv6 addresses.
|
||||||
@ -139,6 +136,8 @@ static uint16_t udp_datahandler(FAR struct net_driver_s *dev, FAR struct udp_con
|
|||||||
|
|
||||||
if (conn->domain == PF_INET6)
|
if (conn->domain == PF_INET6)
|
||||||
{
|
{
|
||||||
|
FAR struct udp_hdr_s *udp = UDPIPv6BUF;
|
||||||
|
FAR struct ipv6_hdr_s *ipv6 = IPv6BUF;
|
||||||
in_addr_t ipv4addr;
|
in_addr_t ipv4addr;
|
||||||
|
|
||||||
/* Encode the IPv4 address as an IPv-mapped IPv6 address */
|
/* Encode the IPv4 address as an IPv-mapped IPv6 address */
|
||||||
@ -146,9 +145,8 @@ static uint16_t udp_datahandler(FAR struct net_driver_s *dev, FAR struct udp_con
|
|||||||
src_addr6.sin6_family = AF_INET6;
|
src_addr6.sin6_family = AF_INET6;
|
||||||
src_addr6.sin6_port = udp->srcport;
|
src_addr6.sin6_port = udp->srcport;
|
||||||
|
|
||||||
ipv4addr = net_ip4addr_conv32(ipv4->srcipaddr);
|
ipv4addr = net_ip4addr_conv32(ipv6->srcipaddr);
|
||||||
ip6_map_ipv4addr(ipv4addr,
|
ip6_map_ipv4addr(ipv4addr, src_addr6.sin6_addr.s6_addr16);
|
||||||
(net_ipv6addr_t)src_addr6.sin6_addr.s6_addr16);
|
|
||||||
|
|
||||||
src_addr_size = sizeof(src_addr6);
|
src_addr_size = sizeof(src_addr6);
|
||||||
src_addr = &src_addr6;
|
src_addr = &src_addr6;
|
||||||
@ -156,6 +154,9 @@ static uint16_t udp_datahandler(FAR struct net_driver_s *dev, FAR struct udp_con
|
|||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
|
FAR struct udp_hdr_s *udp = UDPIPv4BUF;
|
||||||
|
FAR struct ipv4_hdr_s *ipv4 = IPv4BUF;
|
||||||
|
|
||||||
src_addr4.sin_family = AF_INET;
|
src_addr4.sin_family = AF_INET;
|
||||||
src_addr4.sin_port = udp->srcport;
|
src_addr4.sin_port = udp->srcport;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user