diff -rub --exclude=*.o --exclude=*.new --exclude=*.flags --exclude=*.map --exclude=.* --exclude=*.modded --exclude=*.old --exclude=sm_tbl_*h --exclude=modversions.h --exclude=config --exclude=gentbl --exclude=asm --exclude=lxdialog --exclude=mkdep --exclude=modules --exclude=split-include --exclude=version.h --exclude=autoconf.h --exclude=Makefile.test --new-file /home/gdaley/projects/mipv6-0.9.4/linux/Documentation/Configure.help /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/Documentation/Configure.help --- /home/gdaley/projects/mipv6-0.9.4/linux/Documentation/Configure.help Thu Aug 22 09:07:08 2002 +++ /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/Documentation/Configure.help Fri Dec 20 08:15:51 2002 @@ -5457,6 +5457,39 @@ Be sure to say Y and record debug messages when submitting a bug report. +MIPv6: Hierarchical Mobile IPv6 Management (HMIPv6) +CONFIG_IPV6_MOBILITY_HMIPV6 + Hierarchical Mobility Management reduces signalling requirements + outside the access network where this service is provided. + MN's and HMIPv6 Mobility Access Points (MAPs) form bindings to + control handover latency. Both the MN and MAP Basic Mode + implementations are supported from Draft 6 of the specification. + + HMIPv6 is latent until MN's receive a MAP Advertisement (in an RA), + on a supporting access network. + + In order to advertise MAP presence, a suitable userspace daemon + is requred. A modified RADVD is available at + http://www.ctie.monash.edu.au/hmipv6.htm + +MIPv6: Never Send RS on Link-Layer UP trigger. +CONFIG_IPV6_MOBILITY_NORSONL2UP + This flag ensures that a Router Solicitation is not sent when + the MIPv6 MN receives a link layer indication that the link is up, + and relies on unsolicited Router Advertisements for movement + detection. If you're unsure say N. + +Interlayer Communications (ILC) (EXPERIMENTAL) +CONFIG_ILC + This is experimental support for a proposed API allowing functions + to be registered for certain network events and drivers to cause + those functions to be executed when the events occur. + + There is limited support for this at present but it should be safe + to say Y if you would like to experiment. + + If unsure, say N. + Kernel httpd acceleration CONFIG_KHTTPD The kernel httpd acceleration daemon (kHTTPd) is a (limited) web diff -rub --exclude=*.o --exclude=*.new --exclude=*.flags --exclude=*.map --exclude=.* --exclude=*.modded --exclude=*.old --exclude=sm_tbl_*h --exclude=modversions.h --exclude=config --exclude=gentbl --exclude=asm --exclude=lxdialog --exclude=mkdep --exclude=modules --exclude=split-include --exclude=version.h --exclude=autoconf.h --exclude=Makefile.test --new-file /home/gdaley/projects/mipv6-0.9.4/linux/Makefile /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/Makefile --- /home/gdaley/projects/mipv6-0.9.4/linux/Makefile Sat Aug 3 10:39:46 2002 +++ /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/Makefile Thu Aug 22 12:45:46 2002 @@ -1,7 +1,7 @@ VERSION = 2 PATCHLEVEL = 4 SUBLEVEL = 19 -EXTRAVERSION = +EXTRAVERSION =hilc KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION) diff -rub --exclude=*.o --exclude=*.new --exclude=*.flags --exclude=*.map --exclude=.* --exclude=*.modded --exclude=*.old --exclude=sm_tbl_*h --exclude=modversions.h --exclude=config --exclude=gentbl --exclude=asm --exclude=lxdialog --exclude=mkdep --exclude=modules --exclude=split-include --exclude=version.h --exclude=autoconf.h --exclude=Makefile.test --new-file /home/gdaley/projects/mipv6-0.9.4/linux/config.greg /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/config.greg --- /home/gdaley/projects/mipv6-0.9.4/linux/config.greg Thu Jan 1 10:00:00 1970 +++ /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/config.greg Thu Aug 22 12:47:19 2002 @@ -0,0 +1,1069 @@ +# +# Automatically generated by make menuconfig: don't edit +# +CONFIG_X86=y +CONFIG_ISA=y +# CONFIG_SBUS is not set +CONFIG_UID16=y + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y + +# +# Loadable module support +# +CONFIG_MODULES=y +CONFIG_MODVERSIONS=y +CONFIG_KMOD=y + +# +# Processor type and features +# +CONFIG_M386=y +# CONFIG_M486 is not set +# CONFIG_M586 is not set +# CONFIG_M586TSC is not set +# CONFIG_M586MMX is not set +# CONFIG_M686 is not set +# CONFIG_MPENTIUMIII is not set +# CONFIG_MPENTIUM4 is not set +# CONFIG_MK6 is not set +# CONFIG_MK7 is not set +# CONFIG_MELAN is not set +# CONFIG_MCRUSOE is not set +# CONFIG_MWINCHIPC6 is not set +# CONFIG_MWINCHIP2 is not set +# CONFIG_MWINCHIP3D is not set +# CONFIG_MCYRIXIII is not set +# CONFIG_X86_CMPXCHG is not set +# CONFIG_X86_XADD is not set +CONFIG_X86_L1_CACHE_SHIFT=4 +CONFIG_RWSEM_GENERIC_SPINLOCK=y +# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set +CONFIG_X86_PPRO_FENCE=y +CONFIG_X86_MCE=y +# CONFIG_TOSHIBA is not set +# CONFIG_I8K is not set +# CONFIG_MICROCODE is not set +# CONFIG_X86_MSR is not set +# CONFIG_X86_CPUID is not set +CONFIG_NOHIGHMEM=y +# CONFIG_HIGHMEM4G is not set +# CONFIG_HIGHMEM64G is not set +# CONFIG_MATH_EMULATION is not set +# CONFIG_MTRR is not set +# CONFIG_SMP is not set +# CONFIG_X86_UP_APIC is not set +# CONFIG_X86_UP_IOAPIC is not set + +# +# General setup +# +CONFIG_NET=y +CONFIG_PCI=y +# CONFIG_PCI_GOBIOS is not set +# CONFIG_PCI_GODIRECT is not set +CONFIG_PCI_GOANY=y +CONFIG_PCI_BIOS=y +CONFIG_PCI_DIRECT=y +CONFIG_PCI_NAMES=y +# CONFIG_EISA is not set +# CONFIG_MCA is not set +CONFIG_HOTPLUG=y + +# +# PCMCIA/CardBus support +# +CONFIG_PCMCIA=m +CONFIG_CARDBUS=y +# CONFIG_TCIC is not set +# CONFIG_I82092 is not set +# CONFIG_I82365 is not set + +# +# PCI Hotplug Support +# +# CONFIG_HOTPLUG_PCI is not set +# CONFIG_HOTPLUG_PCI_COMPAQ is not set +# CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM is not set +# CONFIG_HOTPLUG_PCI_ACPI is not set +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +CONFIG_BINFMT_AOUT=y +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +CONFIG_PM=y +# CONFIG_ACPI is not set +# CONFIG_APM is not set + +# +# Memory Technology Devices (MTD) +# +# CONFIG_MTD is not set + +# +# Parallel port support +# +CONFIG_PARPORT=m +CONFIG_PARPORT_PC=m +CONFIG_PARPORT_PC_CML1=m +CONFIG_PARPORT_SERIAL=m +# CONFIG_PARPORT_PC_FIFO is not set +# CONFIG_PARPORT_PC_SUPERIO is not set +# CONFIG_PARPORT_PC_PCMCIA is not set +# CONFIG_PARPORT_AMIGA is not set +# CONFIG_PARPORT_MFC3 is not set +# CONFIG_PARPORT_ATARI is not set +# CONFIG_PARPORT_GSC is not set +# CONFIG_PARPORT_SUNBPP is not set +# CONFIG_PARPORT_OTHER is not set +CONFIG_PARPORT_1284=y + +# +# Plug and Play configuration +# +CONFIG_PNP=y +CONFIG_ISAPNP=y + +# +# Block devices +# +CONFIG_BLK_DEV_FD=y +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_CISS_SCSI_TAPE is not set +# CONFIG_BLK_DEV_DAC960 is not set +# CONFIG_BLK_DEV_UMEM is not set +CONFIG_BLK_DEV_LOOP=m +# CONFIG_BLK_DEV_NBD is not set +# CONFIG_BLK_DEV_RAM is not set +# CONFIG_BLK_DEV_INITRD is not set + +# +# Multi-device support (RAID and LVM) +# +CONFIG_MD=y +# CONFIG_BLK_DEV_MD is not set +# CONFIG_MD_LINEAR is not set +# CONFIG_MD_RAID0 is not set +# CONFIG_MD_RAID1 is not set +# CONFIG_MD_RAID5 is not set +# CONFIG_MD_MULTIPATH is not set +CONFIG_BLK_DEV_LVM=y + +# +# Networking options +# +CONFIG_PACKET=y +CONFIG_PACKET_MMAP=y +CONFIG_NETLINK_DEV=m +CONFIG_NETFILTER=y +# CONFIG_NETFILTER_DEBUG is not set +# CONFIG_FILTER is not set +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_IP_MULTIPLE_TABLES=y +# CONFIG_IP_ROUTE_FWMARK is not set +# CONFIG_IP_ROUTE_NAT is not set +# CONFIG_IP_ROUTE_MULTIPATH is not set +# CONFIG_IP_ROUTE_TOS is not set +# CONFIG_IP_ROUTE_VERBOSE is not set +# CONFIG_IP_ROUTE_LARGE_TABLES is not set +# CONFIG_IP_PNP is not set +# CONFIG_NET_IPIP is not set +CONFIG_NET_IPGRE=m +CONFIG_NET_IPGRE_BROADCAST=y +# CONFIG_IP_MROUTE is not set +# CONFIG_ARPD is not set +# CONFIG_INET_ECN is not set +# CONFIG_SYN_COOKIES is not set + +# +# IP: Netfilter Configuration +# +# CONFIG_IP_NF_CONNTRACK is not set +# CONFIG_IP_NF_QUEUE is not set +# CONFIG_IP_NF_IPTABLES is not set +# CONFIG_IP_NF_ARPTABLES is not set +# CONFIG_IP_NF_COMPAT_IPCHAINS is not set +# CONFIG_IP_NF_COMPAT_IPFWADM is not set +CONFIG_IPV6=m +# CONFIG_IPV6_SUBTREES is not set +CONFIG_IPV6_IPV6_TUNNEL=m +CONFIG_IPV6_MOBILITY=m +# CONFIG_IPV6_MOBILITY_AH is not set +CONFIG_IPV6_MOBILITY_DEBUG=y +CONFIG_IPV6_MOBILITY_HMIPV6=y + +# +# IPv6: Netfilter Configuration +# +# CONFIG_IP6_NF_QUEUE is not set +CONFIG_IP6_NF_IPTABLES=y +# CONFIG_IP6_NF_MATCH_LIMIT is not set +# CONFIG_IP6_NF_MATCH_MAC is not set +# CONFIG_IP6_NF_MATCH_MULTIPORT is not set +# CONFIG_IP6_NF_MATCH_OWNER is not set +# CONFIG_IP6_NF_MATCH_MARK is not set +CONFIG_IP6_NF_FILTER=y +# CONFIG_IP6_NF_TARGET_LOG is not set +CONFIG_IP6_NF_MANGLE=y +# CONFIG_IP6_NF_TARGET_MARK is not set +# CONFIG_KHTTPD is not set +CONFIG_ILC=m +CONFIG_ILC_DEBUG=y +# CONFIG_ATM is not set +# CONFIG_VLAN_8021Q is not set +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_LLC is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +CONFIG_NET_SCHED=y +CONFIG_NET_SCH_CBQ=y +# CONFIG_NET_SCH_CSZ is not set +# CONFIG_NET_SCH_PRIO is not set +CONFIG_NET_SCH_RED=m +# CONFIG_NET_SCH_SFQ is not set +# CONFIG_NET_SCH_TEQL is not set +# CONFIG_NET_SCH_TBF is not set +# CONFIG_NET_SCH_GRED is not set +CONFIG_NET_SCH_DSMARK=m +# CONFIG_NET_SCH_INGRESS is not set +CONFIG_NET_QOS=y +CONFIG_NET_ESTIMATOR=y +# CONFIG_NET_CLS is not set + +# +# Telephony Support +# +# CONFIG_PHONE is not set +# CONFIG_PHONE_IXJ is not set +# CONFIG_PHONE_IXJ_PCMCIA is not set + +# +# ATA/IDE/MFM/RLL support +# +CONFIG_IDE=y + +# +# IDE, ATA and ATAPI Block devices +# +CONFIG_BLK_DEV_IDE=y +# CONFIG_BLK_DEV_HD_IDE is not set +# CONFIG_BLK_DEV_HD is not set +CONFIG_BLK_DEV_IDEDISK=y +CONFIG_IDEDISK_MULTI_MODE=y +# CONFIG_IDEDISK_STROKE is not set +# CONFIG_BLK_DEV_IDEDISK_VENDOR is not set +# CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set +# CONFIG_BLK_DEV_IDEDISK_IBM is not set +# CONFIG_BLK_DEV_IDEDISK_MAXTOR is not set +# CONFIG_BLK_DEV_IDEDISK_QUANTUM is not set +# CONFIG_BLK_DEV_IDEDISK_SEAGATE is not set +# CONFIG_BLK_DEV_IDEDISK_WD is not set +# CONFIG_BLK_DEV_COMMERIAL is not set +# CONFIG_BLK_DEV_TIVO is not set +# CONFIG_BLK_DEV_IDECS is not set +CONFIG_BLK_DEV_IDECD=y +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_BLK_DEV_IDESCSI is not set +# CONFIG_IDE_TASK_IOCTL is not set +CONFIG_BLK_DEV_CMD640=y +# CONFIG_BLK_DEV_CMD640_ENHANCED is not set +# CONFIG_BLK_DEV_ISAPNP is not set +CONFIG_BLK_DEV_RZ1000=y +CONFIG_BLK_DEV_IDEPCI=y +CONFIG_IDEPCI_SHARE_IRQ=y +CONFIG_BLK_DEV_IDEDMA_PCI=y +# CONFIG_BLK_DEV_OFFBOARD is not set +# CONFIG_BLK_DEV_IDEDMA_FORCED is not set +CONFIG_IDEDMA_PCI_AUTO=y +# CONFIG_IDEDMA_ONLYDISK is not set +CONFIG_BLK_DEV_IDEDMA=y +# CONFIG_IDEDMA_PCI_WIP is not set +# CONFIG_BLK_DEV_IDEDMA_TIMEOUT is not set +# CONFIG_IDEDMA_NEW_DRIVE_LISTINGS is not set +CONFIG_BLK_DEV_ADMA=y +# CONFIG_BLK_DEV_AEC62XX is not set +# CONFIG_AEC62XX_TUNING is not set +# CONFIG_BLK_DEV_ALI15X3 is not set +# CONFIG_WDC_ALI15X3 is not set +# CONFIG_BLK_DEV_AMD74XX is not set +# CONFIG_AMD74XX_OVERRIDE is not set +# CONFIG_BLK_DEV_CMD64X is not set +# CONFIG_BLK_DEV_CMD680 is not set +# CONFIG_BLK_DEV_CY82C693 is not set +# CONFIG_BLK_DEV_CS5530 is not set +# CONFIG_BLK_DEV_HPT34X is not set +# CONFIG_HPT34X_AUTODMA is not set +# CONFIG_BLK_DEV_HPT366 is not set +CONFIG_BLK_DEV_PIIX=y +CONFIG_PIIX_TUNING=y +# CONFIG_BLK_DEV_NS87415 is not set +# CONFIG_BLK_DEV_OPTI621 is not set +# CONFIG_BLK_DEV_PDC202XX is not set +# CONFIG_PDC202XX_BURST is not set +# CONFIG_PDC202XX_FORCE is not set +# CONFIG_BLK_DEV_SVWKS is not set +# CONFIG_BLK_DEV_SIS5513 is not set +# CONFIG_BLK_DEV_SLC90E66 is not set +# CONFIG_BLK_DEV_TRM290 is not set +# CONFIG_BLK_DEV_VIA82CXXX is not set +# CONFIG_IDE_CHIPSETS is not set +CONFIG_IDEDMA_AUTO=y +# CONFIG_IDEDMA_IVB is not set +# CONFIG_DMA_NONPCI is not set +CONFIG_BLK_DEV_IDE_MODES=y +# CONFIG_BLK_DEV_ATARAID is not set +# CONFIG_BLK_DEV_ATARAID_PDC is not set +# CONFIG_BLK_DEV_ATARAID_HPT is not set + +# +# SCSI support +# +CONFIG_SCSI=m +# CONFIG_BLK_DEV_SD is not set +# CONFIG_CHR_DEV_ST is not set +# CONFIG_CHR_DEV_OSST is not set +# CONFIG_BLK_DEV_SR is not set +# CONFIG_CHR_DEV_SG is not set +CONFIG_SCSI_DEBUG_QUEUES=y +CONFIG_SCSI_MULTI_LUN=y +CONFIG_SCSI_CONSTANTS=y +# CONFIG_SCSI_LOGGING is not set + +# +# SCSI low-level drivers +# +# CONFIG_BLK_DEV_3W_XXXX_RAID is not set +# CONFIG_SCSI_7000FASST is not set +# CONFIG_SCSI_ACARD is not set +# CONFIG_SCSI_AHA152X is not set +# CONFIG_SCSI_AHA1542 is not set +# CONFIG_SCSI_AHA1740 is not set +# CONFIG_SCSI_AACRAID is not set +# CONFIG_SCSI_AIC7XXX is not set +# CONFIG_SCSI_AIC7XXX_OLD is not set +# CONFIG_SCSI_DPT_I2O is not set +# CONFIG_SCSI_ADVANSYS is not set +# CONFIG_SCSI_IN2000 is not set +# CONFIG_SCSI_AM53C974 is not set +# CONFIG_SCSI_MEGARAID is not set +# CONFIG_SCSI_BUSLOGIC is not set +# CONFIG_SCSI_CPQFCTS is not set +# CONFIG_SCSI_DMX3191D is not set +# CONFIG_SCSI_DTC3280 is not set +# CONFIG_SCSI_EATA is not set +# CONFIG_SCSI_EATA_DMA is not set +# CONFIG_SCSI_EATA_PIO is not set +# CONFIG_SCSI_FUTURE_DOMAIN is not set +# CONFIG_SCSI_GDTH is not set +# CONFIG_SCSI_GENERIC_NCR5380 is not set +# CONFIG_SCSI_IPS is not set +# CONFIG_SCSI_INITIO is not set +# CONFIG_SCSI_INIA100 is not set +# CONFIG_SCSI_PPA is not set +# CONFIG_SCSI_IMM is not set +# CONFIG_SCSI_NCR53C406A is not set +# CONFIG_SCSI_NCR53C7xx is not set +# CONFIG_SCSI_SYM53C8XX_2 is not set +# CONFIG_SCSI_NCR53C8XX is not set +CONFIG_SCSI_SYM53C8XX=m +CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=4 +CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32 +CONFIG_SCSI_NCR53C8XX_SYNC=20 +# CONFIG_SCSI_NCR53C8XX_PROFILE is not set +# CONFIG_SCSI_NCR53C8XX_IOMAPPED is not set +# CONFIG_SCSI_NCR53C8XX_PQS_PDS is not set +# CONFIG_SCSI_NCR53C8XX_SYMBIOS_COMPAT is not set +# CONFIG_SCSI_PAS16 is not set +# CONFIG_SCSI_PCI2000 is not set +# CONFIG_SCSI_PCI2220I is not set +# CONFIG_SCSI_PSI240I is not set +# CONFIG_SCSI_QLOGIC_FAS is not set +# CONFIG_SCSI_QLOGIC_ISP is not set +# CONFIG_SCSI_QLOGIC_FC is not set +# CONFIG_SCSI_QLOGIC_1280 is not set +# CONFIG_SCSI_SEAGATE is not set +# CONFIG_SCSI_SIM710 is not set +# CONFIG_SCSI_SYM53C416 is not set +# CONFIG_SCSI_DC390T is not set +# CONFIG_SCSI_T128 is not set +# CONFIG_SCSI_U14_34F is not set +# CONFIG_SCSI_ULTRASTOR is not set +# CONFIG_SCSI_DEBUG is not set + +# +# PCMCIA SCSI adapter support +# +CONFIG_SCSI_PCMCIA=y +CONFIG_PCMCIA_AHA152X=m +# CONFIG_PCMCIA_FDOMAIN is not set +# CONFIG_PCMCIA_NINJA_SCSI is not set +# CONFIG_PCMCIA_QLOGIC is not set + +# +# Fusion MPT device support +# +# CONFIG_FUSION is not set +# CONFIG_FUSION_BOOT is not set +# CONFIG_FUSION_ISENSE is not set +# CONFIG_FUSION_CTL is not set +# CONFIG_FUSION_LAN is not set + +# +# IEEE 1394 (FireWire) support (EXPERIMENTAL) +# +# CONFIG_IEEE1394 is not set + +# +# I2O device support +# +# CONFIG_I2O is not set +# CONFIG_I2O_PCI is not set +# CONFIG_I2O_BLOCK is not set +# CONFIG_I2O_LAN is not set +# CONFIG_I2O_SCSI is not set +# CONFIG_I2O_PROC is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +CONFIG_DUMMY=m +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +CONFIG_TUN=y +# CONFIG_ETHERTAP is not set +# CONFIG_NET_SB1000 is not set + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +# CONFIG_SUNLANCE is not set +# CONFIG_HAPPYMEAL is not set +# CONFIG_SUNBMAC is not set +# CONFIG_SUNQE is not set +# CONFIG_SUNGEM is not set +CONFIG_NET_VENDOR_3COM=y +# CONFIG_EL1 is not set +# CONFIG_EL2 is not set +# CONFIG_ELPLUS is not set +# CONFIG_EL16 is not set +# CONFIG_EL3 is not set +# CONFIG_3C515 is not set +# CONFIG_ELMC is not set +# CONFIG_ELMC_II is not set +CONFIG_VORTEX=m +# CONFIG_LANCE is not set +# CONFIG_NET_VENDOR_SMC is not set +# CONFIG_NET_VENDOR_RACAL is not set +# CONFIG_AT1700 is not set +# CONFIG_DEPCA is not set +# CONFIG_HP100 is not set +# CONFIG_NET_ISA is not set +CONFIG_NET_PCI=y +# CONFIG_PCNET32 is not set +# CONFIG_ADAPTEC_STARFIRE is not set +# CONFIG_AC3200 is not set +# CONFIG_APRICOT is not set +# CONFIG_CS89x0 is not set +CONFIG_TULIP=m +# CONFIG_TC35815 is not set +# CONFIG_TULIP_MWI is not set +# CONFIG_TULIP_MMIO is not set +# CONFIG_DE4X5 is not set +# CONFIG_DGRS is not set +CONFIG_DM9102=m +CONFIG_EEPRO100=m +# CONFIG_LNE390 is not set +# CONFIG_FEALNX is not set +# CONFIG_NATSEMI is not set +# CONFIG_NE2K_PCI is not set +# CONFIG_NE3210 is not set +# CONFIG_ES3210 is not set +# CONFIG_8139CP is not set +CONFIG_8139TOO=m +# CONFIG_8139TOO_PIO is not set +# CONFIG_8139TOO_TUNE_TWISTER is not set +# CONFIG_8139TOO_8129 is not set +# CONFIG_8139_NEW_RX_RESET is not set +# CONFIG_SIS900 is not set +# CONFIG_EPIC100 is not set +# CONFIG_SUNDANCE is not set +# CONFIG_TLAN is not set +# CONFIG_VIA_RHINE is not set +# CONFIG_VIA_RHINE_MMIO is not set +# CONFIG_WINBOND_840 is not set +# CONFIG_NET_POCKET is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_ACENIC is not set +# CONFIG_DL2K is not set +# CONFIG_MYRI_SBUS is not set +# CONFIG_NS83820 is not set +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +# CONFIG_SK98LIN is not set +# CONFIG_TIGON3 is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PLIP is not set +CONFIG_PPP=m +# CONFIG_PPP_MULTILINK is not set +# CONFIG_PPP_FILTER is not set +CONFIG_PPP_ASYNC=m +CONFIG_PPP_SYNC_TTY=m +# CONFIG_PPP_DEFLATE is not set +# CONFIG_PPP_BSDCOMP is not set +CONFIG_PPPOE=m +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +CONFIG_NET_RADIO=y +# CONFIG_STRIP is not set +# CONFIG_WAVELAN is not set +# CONFIG_ARLAN is not set +# CONFIG_AIRONET4500 is not set +# CONFIG_AIRONET4500_NONCS is not set +# CONFIG_AIRONET4500_PROC is not set +CONFIG_AIRO=m +CONFIG_HERMES=m +# CONFIG_PLX_HERMES is not set +# CONFIG_PCI_HERMES is not set +CONFIG_PCMCIA_HERMES=m +CONFIG_AIRO_CS=m +CONFIG_NET_WIRELESS=y + +# +# Token Ring devices +# +# CONFIG_TR is not set +# CONFIG_NET_FC is not set +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# PCMCIA network device support +# +CONFIG_NET_PCMCIA=y +# CONFIG_PCMCIA_3C589 is not set +# CONFIG_PCMCIA_3C574 is not set +# CONFIG_PCMCIA_FMVJ18X is not set +CONFIG_PCMCIA_PCNET=m +# CONFIG_PCMCIA_AXNET is not set +# CONFIG_PCMCIA_NMCLAN is not set +# CONFIG_PCMCIA_SMC91C92 is not set +# CONFIG_PCMCIA_XIRC2PS is not set +# CONFIG_ARCNET_COM20020_CS is not set +# CONFIG_PCMCIA_IBMTR is not set +# CONFIG_PCMCIA_XIRCOM is not set +# CONFIG_PCMCIA_XIRTULIP is not set +CONFIG_NET_PCMCIA_RADIO=y +# CONFIG_PCMCIA_RAYCS is not set +# CONFIG_PCMCIA_NETWAVE is not set +# CONFIG_PCMCIA_WAVELAN is not set +# CONFIG_AIRONET4500_CS is not set + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# IrDA (infrared) support +# +# CONFIG_IRDA is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN is not set + +# +# Old CD-ROM drivers (not SCSI, not IDE) +# +# CONFIG_CD_NO_IDESCSI is not set + +# +# Input core support +# +CONFIG_INPUT=y +CONFIG_INPUT_KEYBDEV=y +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +CONFIG_INPUT_JOYDEV=y +CONFIG_INPUT_EVDEV=y + +# +# Character devices +# +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +CONFIG_SERIAL=y +# CONFIG_SERIAL_CONSOLE is not set +# CONFIG_SERIAL_EXTENDED is not set +# CONFIG_SERIAL_NONSTANDARD is not set +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=256 +# CONFIG_PRINTER is not set +# CONFIG_PPDEV is not set + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +CONFIG_MOUSE=y +CONFIG_PSMOUSE=y +# CONFIG_82C710_MOUSE is not set +# CONFIG_PC110_PAD is not set +# CONFIG_MK712_MOUSE is not set + +# +# Joysticks +# +# CONFIG_INPUT_GAMEPORT is not set +# CONFIG_INPUT_NS558 is not set +# CONFIG_INPUT_LIGHTNING is not set +# CONFIG_INPUT_PCIGAME is not set +# CONFIG_INPUT_CS461X is not set +# CONFIG_INPUT_EMU10K1 is not set +# CONFIG_INPUT_SERIO is not set +# CONFIG_INPUT_SERPORT is not set +# CONFIG_INPUT_ANALOG is not set +# CONFIG_INPUT_A3D is not set +# CONFIG_INPUT_ADI is not set +# CONFIG_INPUT_COBRA is not set +# CONFIG_INPUT_GF2K is not set +# CONFIG_INPUT_GRIP is not set +# CONFIG_INPUT_INTERACT is not set +# CONFIG_INPUT_TMDC is not set +# CONFIG_INPUT_SIDEWINDER is not set +# CONFIG_INPUT_IFORCE_USB is not set +# CONFIG_INPUT_IFORCE_232 is not set +# CONFIG_INPUT_WARRIOR is not set +# CONFIG_INPUT_MAGELLAN is not set +# CONFIG_INPUT_SPACEORB is not set +# CONFIG_INPUT_SPACEBALL is not set +# CONFIG_INPUT_STINGER is not set +# CONFIG_INPUT_DB9 is not set +# CONFIG_INPUT_GAMECON is not set +# CONFIG_INPUT_TURBOGRAFX is not set +# CONFIG_QIC02_TAPE is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +# CONFIG_AMD_RNG is not set +# CONFIG_INTEL_RNG is not set +# CONFIG_NVRAM is not set +CONFIG_RTC=m +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set +# CONFIG_SONYPI is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +CONFIG_AGP=y +CONFIG_AGP_INTEL=y +CONFIG_AGP_I810=y +CONFIG_AGP_VIA=y +CONFIG_AGP_AMD=y +CONFIG_AGP_SIS=y +CONFIG_AGP_ALI=y +# CONFIG_AGP_SWORKS is not set +CONFIG_DRM=y +# CONFIG_DRM_OLD is not set +CONFIG_DRM_NEW=y +CONFIG_DRM_TDFX=y +# CONFIG_DRM_R128 is not set +CONFIG_DRM_RADEON=y +# CONFIG_DRM_I810 is not set +# CONFIG_DRM_MGA is not set +# CONFIG_DRM_SIS is not set + +# +# PCMCIA character devices +# +CONFIG_PCMCIA_SERIAL_CS=m +# CONFIG_MWAVE is not set + +# +# Multimedia devices +# +CONFIG_VIDEO_DEV=m + +# +# Video For Linux +# +CONFIG_VIDEO_PROC_FS=y +# CONFIG_I2C_PARPORT is not set +# CONFIG_VIDEO_PMS is not set +# CONFIG_VIDEO_BWQCAM is not set +# CONFIG_VIDEO_CQCAM is not set +# CONFIG_VIDEO_W9966 is not set +CONFIG_VIDEO_CPIA=m +# CONFIG_VIDEO_CPIA_PP is not set +CONFIG_VIDEO_CPIA_USB=m +# CONFIG_VIDEO_SAA5249 is not set +# CONFIG_TUNER_3036 is not set +CONFIG_VIDEO_STRADIS=m +# CONFIG_VIDEO_ZORAN is not set +# CONFIG_VIDEO_ZORAN_BUZ is not set +# CONFIG_VIDEO_ZORAN_DC10 is not set +# CONFIG_VIDEO_ZORAN_LML33 is not set +# CONFIG_VIDEO_ZR36120 is not set +# CONFIG_VIDEO_MEYE is not set + +# +# Radio Adapters +# +# CONFIG_RADIO_CADET is not set +# CONFIG_RADIO_RTRACK is not set +# CONFIG_RADIO_RTRACK2 is not set +# CONFIG_RADIO_AZTECH is not set +# CONFIG_RADIO_GEMTEK is not set +# CONFIG_RADIO_GEMTEK_PCI is not set +# CONFIG_RADIO_MAXIRADIO is not set +# CONFIG_RADIO_MAESTRO is not set +# CONFIG_RADIO_MIROPCM20 is not set +# CONFIG_RADIO_MIROPCM20_RDS is not set +# CONFIG_RADIO_SF16FMI is not set +# CONFIG_RADIO_TERRATEC is not set +# CONFIG_RADIO_TRUST is not set +# CONFIG_RADIO_TYPHOON is not set +# CONFIG_RADIO_ZOLTRIX is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +CONFIG_AUTOFS4_FS=y +CONFIG_REISERFS_FS=y +# CONFIG_REISERFS_CHECK is not set +# CONFIG_REISERFS_PROC_INFO is not set +# CONFIG_ADFS_FS is not set +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BFS_FS is not set +CONFIG_EXT3_FS=y +CONFIG_JBD=y +CONFIG_JBD_DEBUG=y +CONFIG_FAT_FS=y +CONFIG_MSDOS_FS=y +# CONFIG_UMSDOS_FS is not set +CONFIG_VFAT_FS=y +# CONFIG_EFS_FS is not set +# CONFIG_JFFS_FS is not set +# CONFIG_JFFS2_FS is not set +# CONFIG_CRAMFS is not set +CONFIG_TMPFS=y +CONFIG_RAMFS=y +CONFIG_ISO9660_FS=y +# CONFIG_JOLIET is not set +# CONFIG_ZISOFS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_VXFS_FS is not set +CONFIG_NTFS_FS=y +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +# CONFIG_DEVFS_MOUNT is not set +# CONFIG_DEVFS_DEBUG is not set +CONFIG_DEVPTS_FS=y +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX4FS_RW is not set +# CONFIG_ROMFS_FS is not set +CONFIG_EXT2_FS=y +# CONFIG_SYSV_FS is not set +# CONFIG_UDF_FS is not set +# CONFIG_UDF_RW is not set +# CONFIG_UFS_FS is not set +# CONFIG_UFS_FS_WRITE is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +# CONFIG_INTERMEZZO_FS is not set +CONFIG_NFS_FS=y +# CONFIG_NFS_V3 is not set +# CONFIG_ROOT_NFS is not set +CONFIG_NFSD=y +# CONFIG_NFSD_V3 is not set +CONFIG_SUNRPC=y +CONFIG_LOCKD=y +CONFIG_SMB_FS=y +# CONFIG_SMB_NLS_DEFAULT is not set +# CONFIG_NCP_FS is not set +# CONFIG_NCPFS_PACKET_SIGNING is not set +# CONFIG_NCPFS_IOCTL_LOCKING is not set +# CONFIG_NCPFS_STRONG is not set +# CONFIG_NCPFS_NFS_NS is not set +# CONFIG_NCPFS_OS2_NS is not set +# CONFIG_NCPFS_SMALLDOS is not set +# CONFIG_NCPFS_NLS is not set +# CONFIG_NCPFS_EXTRAS is not set +# CONFIG_ZISOFS_FS is not set +# CONFIG_ZLIB_FS_INFLATE is not set + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +# CONFIG_OSF_PARTITION is not set +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_ATARI_PARTITION is not set +# CONFIG_MAC_PARTITION is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_BSD_DISKLABEL is not set +# CONFIG_MINIX_SUBPARTITION is not set +# CONFIG_SOLARIS_X86_PARTITION is not set +# CONFIG_UNIXWARE_DISKLABEL is not set +# CONFIG_LDM_PARTITION is not set +# CONFIG_SGI_PARTITION is not set +# CONFIG_ULTRIX_PARTITION is not set +# CONFIG_SUN_PARTITION is not set +CONFIG_SMB_NLS=y +CONFIG_NLS=y + +# +# Native Language Support +# +CONFIG_NLS_DEFAULT="iso8859-1" +# CONFIG_NLS_CODEPAGE_437 is not set +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +CONFIG_NLS_ISO8859_1=y +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +# CONFIG_NLS_UTF8 is not set + +# +# Console drivers +# +CONFIG_VGA_CONSOLE=y +# CONFIG_VIDEO_SELECT is not set +# CONFIG_MDA_CONSOLE is not set + +# +# Frame-buffer support +# +# CONFIG_FB is not set + +# +# Sound +# +CONFIG_SOUND=m +# CONFIG_SOUND_BT878 is not set +CONFIG_SOUND_CMPCI=m +# CONFIG_SOUND_CMPCI_FM is not set +# CONFIG_SOUND_CMPCI_MIDI is not set +# CONFIG_SOUND_CMPCI_JOYSTICK is not set +CONFIG_SOUND_CMPCI_CM8738=y +# CONFIG_SOUND_CMPCI_SPDIFINVERSE is not set +# CONFIG_SOUND_CMPCI_SPDIFLOOP is not set +CONFIG_SOUND_CMPCI_SPEAKERS=2 +# CONFIG_SOUND_EMU10K1 is not set +# CONFIG_MIDI_EMU10K1 is not set +# CONFIG_SOUND_FUSION is not set +# CONFIG_SOUND_CS4281 is not set +# CONFIG_SOUND_ES1370 is not set +CONFIG_SOUND_ES1371=m +# CONFIG_SOUND_ESSSOLO1 is not set +# CONFIG_SOUND_MAESTRO is not set +# CONFIG_SOUND_MAESTRO3 is not set +CONFIG_SOUND_ICH=m +# CONFIG_SOUND_RME96XX is not set +# CONFIG_SOUND_SONICVIBES is not set +# CONFIG_SOUND_TRIDENT is not set +# CONFIG_SOUND_MSNDCLAS is not set +# CONFIG_SOUND_MSNDPIN is not set +# CONFIG_SOUND_VIA82CXXX is not set +# CONFIG_MIDI_VIA82CXXX is not set +# CONFIG_SOUND_OSS is not set +# CONFIG_SOUND_TVMIXER is not set + +# +# USB support +# +CONFIG_USB=m +CONFIG_USB_DEBUG=y +CONFIG_USB_DEVICEFS=y +# CONFIG_USB_BANDWIDTH is not set +# CONFIG_USB_LONG_TIMEOUT is not set +# CONFIG_USB_EHCI_HCD is not set +CONFIG_USB_UHCI=m +CONFIG_USB_UHCI_ALT=m +# CONFIG_USB_OHCI is not set +# CONFIG_USB_AUDIO is not set +# CONFIG_USB_EMI26 is not set +CONFIG_USB_BLUETOOTH=m +# CONFIG_USB_STORAGE is not set +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_ISD200 is not set +# CONFIG_USB_STORAGE_DPCM is not set +# CONFIG_USB_STORAGE_HP8200e is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +# CONFIG_USB_ACM is not set +# CONFIG_USB_PRINTER is not set +CONFIG_USB_HID=m +# CONFIG_USB_HIDINPUT is not set +# CONFIG_USB_HIDDEV is not set +CONFIG_USB_KBD=m +CONFIG_USB_MOUSE=m +# CONFIG_USB_WACOM is not set +# CONFIG_USB_DC2XX is not set +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_SCANNER is not set +# CONFIG_USB_MICROTEK is not set +# CONFIG_USB_HPUSBSCSI is not set +# CONFIG_USB_IBMCAM is not set +# CONFIG_USB_OV511 is not set +# CONFIG_USB_PWC is not set +# CONFIG_USB_SE401 is not set +# CONFIG_USB_STV680 is not set +# CONFIG_USB_VICAM is not set +# CONFIG_USB_DSBR is not set +# CONFIG_USB_DABUSB is not set +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_RTL8150 is not set +# CONFIG_USB_KAWETH is not set +# CONFIG_USB_CATC is not set +# CONFIG_USB_CDCETHER is not set +# CONFIG_USB_USBNET is not set +# CONFIG_USB_USS720 is not set + +# +# USB Serial Converter support +# +CONFIG_USB_SERIAL=m +CONFIG_USB_SERIAL_GENERIC=y +# CONFIG_USB_SERIAL_BELKIN is not set +# CONFIG_USB_SERIAL_WHITEHEAT is not set +# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set +# CONFIG_USB_SERIAL_EMPEG is not set +# CONFIG_USB_SERIAL_FTDI_SIO is not set +# CONFIG_USB_SERIAL_VISOR is not set +# CONFIG_USB_SERIAL_IPAQ is not set +# CONFIG_USB_SERIAL_IR is not set +# CONFIG_USB_SERIAL_EDGEPORT is not set +# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set +# CONFIG_USB_SERIAL_KEYSPAN is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set +# CONFIG_USB_SERIAL_MCT_U232 is not set +# CONFIG_USB_SERIAL_KLSI is not set +# CONFIG_USB_SERIAL_PL2303 is not set +# CONFIG_USB_SERIAL_CYBERJACK is not set +# CONFIG_USB_SERIAL_XIRCOM is not set +# CONFIG_USB_SERIAL_OMNINET is not set +# CONFIG_USB_RIO500 is not set +# CONFIG_USB_AUERSWALD is not set +# CONFIG_USB_BRLVGER is not set + +# +# Bluetooth support +# +# CONFIG_BLUEZ is not set + +# +# Kernel hacking +# +CONFIG_DEBUG_KERNEL=y +# CONFIG_DEBUG_HIGHMEM is not set +# CONFIG_DEBUG_SLAB is not set +# CONFIG_DEBUG_IOVIRT is not set +# CONFIG_MAGIC_SYSRQ is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_FRAME_POINTER is not set diff -rub --exclude=*.o --exclude=*.new --exclude=*.flags --exclude=*.map --exclude=.* --exclude=*.modded --exclude=*.old --exclude=sm_tbl_*h --exclude=modversions.h --exclude=config --exclude=gentbl --exclude=asm --exclude=lxdialog --exclude=mkdep --exclude=modules --exclude=split-include --exclude=version.h --exclude=autoconf.h --exclude=Makefile.test --new-file /home/gdaley/projects/mipv6-0.9.4/linux/drivers/net/wireless/airo.c /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/drivers/net/wireless/airo.c --- /home/gdaley/projects/mipv6-0.9.4/linux/drivers/net/wireless/airo.c Tue Feb 26 06:38:03 2002 +++ /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/drivers/net/wireless/airo.c Wed Jan 22 09:43:14 2003 @@ -46,6 +46,11 @@ #include #include +/* Handoff indication stuff */ +/*#ifdef CONFIG_ILC*/ +#include +/*#endif *//* CONFIG_ILC */ + #ifdef CONFIG_PCI static struct pci_device_id card_ids[] __devinitdata = { { 0x14b9, 1, PCI_ANY_ID, PCI_ANY_ID, }, @@ -1300,8 +1305,12 @@ if (!netif_device_present(dev)) return; + for (;;) { status = IN4500( apriv, EVSTAT ); + + printk( KERN_WARNING "airo: %x\n",status); + if ( !status || status == 0xffff ) break; if ( status & EV_AWAKE ) { @@ -1350,11 +1359,22 @@ leaving BSS */ #define RC_NOAUTH 9 /* Station requesting (Re)Association is not Authenticated with the responding station */ + + printk(KERN_WARNING "airo link: newStatus %x " + "status: %x\n", newStatus, status ); + if (newStatus != ASSOCIATED) { if (auto_wep && !timer_pending(&apriv->timer)) { apriv->timer.expires = RUN_AT(HZ*3); add_timer(&apriv->timer); } +/*#ifdef CONFIG_ILC*/ + } else { + ilc_event(ILC_L2_HANDOFF_COMPLETE, dev->ifindex,dev); + } + if(newStatus & 0x8000 /*|| newStatus == AUTHFAIL*/ ){ + ilc_event(ILC_L2_HANDOFF, dev->ifindex,dev); +/*#endif *//* CONFIG_ILC */ } } @@ -3305,6 +3325,7 @@ CapabilityRid cap_rid; /* Card capability info */ StatusRid status_rid; /* Card status info */ + printk(KERN_WARNING "airo_ioctl:\n"); #ifdef CISCO_EXT if (cmd != SIOCGIWPRIV && cmd != AIROIOCTL && cmd != AIROIDIFC #ifdef AIROOLDIOCTL @@ -3379,10 +3400,15 @@ // Set desired network name (ESSID) case SIOCSIWESSID: + + printk(KERN_INFO "airo: New ESSID\n"); if (wrq->u.data.pointer) { char essid[IW_ESSID_MAX_SIZE + 1]; SsidRid SSID_rid; /* SSIDs */ + printk(KERN_WARNING "airo: New AP at j: %lu\n",jiffies); + ilc_event(ILC_L2_HANDOFF, dev->ifindex,dev); + /* Reload the list of current SSID */ readSsidRid(local, &SSID_rid); @@ -3444,11 +3470,15 @@ break; case SIOCSIWAP: + printk(KERN_INFO "airo: New AP\n"); if (wrq->u.ap_addr.sa_family != ARPHRD_ETHER) rc = -EINVAL; else { APListRid APList_rid; + printk(KERN_WARNING "airo: New AP at j: %lu\n",jiffies); + ilc_event(ILC_L2_HANDOFF, dev->ifindex,dev); + memset(&APList_rid, 0, sizeof(APList_rid)); APList_rid.len = sizeof(APList_rid); memcpy(APList_rid.ap[0], wrq->u.ap_addr.sa_data, 6); @@ -4246,6 +4276,8 @@ checkThrottle(&config); writeConfigRid(local, &config); enable_MAC(local, &rsp); + + printk(KERN_INFO "airo: Config Committed %lu\n",jiffies); local->need_commit = 0; } diff -rub --exclude=*.o --exclude=*.new --exclude=*.flags --exclude=*.map --exclude=.* --exclude=*.modded --exclude=*.old --exclude=sm_tbl_*h --exclude=modversions.h --exclude=config --exclude=gentbl --exclude=asm --exclude=lxdialog --exclude=mkdep --exclude=modules --exclude=split-include --exclude=version.h --exclude=autoconf.h --exclude=Makefile.test --new-file /home/gdaley/projects/mipv6-0.9.4/linux/drivers/net/wireless/hermes_rid.h /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/drivers/net/wireless/hermes_rid.h --- /home/gdaley/projects/mipv6-0.9.4/linux/drivers/net/wireless/hermes_rid.h Tue Feb 26 06:38:03 2002 +++ /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/drivers/net/wireless/hermes_rid.h Tue Oct 8 13:12:04 2002 @@ -140,6 +140,27 @@ #define HERMES_RID_BUILDSEQ 0xFFFE #define HERMES_RID_FWID 0xFFFF +/* GD link status & etc hermes defines from wlan-ng*/ +#define HERMES_RID_LINKSTATUS 0xF200 +#define HERMES_RID_ASSOCIATIONSTATUS 0xF201 +#define HERMES_RID_AUTHENTICATIONREQ 0xF202 +#define HERMES_RID_POWERSAVEUSERCNT 0xF203 + +#define HERMES_LINK_NOTCONNECTED 0 +#define HERMES_LINK_CONNECTED 1 +#define HERMES_LINK_DISCONNECTED 2 +#define HERMES_LINK_AP_CHANGE 3 +#define HERMES_LINK_AP_OUTOFRANGE 4 +#define HERMES_LINK_AP_INRANGE 5 +#define HERMES_LINK_ASSOCFAIL 6 + +#define HERMES_ASSOCSTATUS_STAASSOC 1 +#define HERMES_ASSOCSTATUS_REASSOC 2 +#define HERMES_ASSOCSTATUS_DISASSOC 3 +#define HERMES_ASSOCSTATUS_ASSOCFAIL 4 +#define HERMES_ASSOCSTATUS_AUTHFAIL 5 + + /* "ID" structure - used for ESSID and station nickname */ struct hermes_idstring { u16 len; diff -rub --exclude=*.o --exclude=*.new --exclude=*.flags --exclude=*.map --exclude=.* --exclude=*.modded --exclude=*.old --exclude=sm_tbl_*h --exclude=modversions.h --exclude=config --exclude=gentbl --exclude=asm --exclude=lxdialog --exclude=mkdep --exclude=modules --exclude=split-include --exclude=version.h --exclude=autoconf.h --exclude=Makefile.test --new-file /home/gdaley/projects/mipv6-0.9.4/linux/drivers/net/wireless/orinoco.c /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/drivers/net/wireless/orinoco.c --- /home/gdaley/projects/mipv6-0.9.4/linux/drivers/net/wireless/orinoco.c Sat Aug 3 10:39:44 2002 +++ /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/drivers/net/wireless/orinoco.c Tue Oct 8 13:14:46 2002 @@ -344,6 +344,9 @@ #include "hermes_rid.h" #include "orinoco.h" #include "ieee802_11.h" +/* Handoff indication stuff */ +#include + /* Wireless extensions backwards compatibility */ #ifndef SIOCIWFIRSTPRIV @@ -1228,7 +1231,8 @@ u16 len; u16 type; } __attribute__ ((packed)) info; - int err; + u16 status; + int err,len; /* This is an answer to an INQUIRE command that we did earlier, * or an information "event" generated by the card @@ -1246,12 +1250,12 @@ "Frame dropped.\n", dev->name, err); return; } + len = le16_to_cpu(info.len) - 1; switch (le16_to_cpu(info.type)) { case HERMES_INQ_TALLIES: { struct hermes_tallies_frame tallies; struct iw_statistics *wstats = &priv->wstats; - int len = le16_to_cpu(info.len) - 1; if (len > (sizeof(tallies) / 2)) { DEBUG(1, "%s: tallies frame too long.\n", dev->name); @@ -1285,6 +1289,80 @@ #endif /* WIRELESS_EXT > 11 */ } break; + case HERMES_RID_LINKSTATUS: /* GD. A la wlan-ng */ + + hermes_read_words(hw, HERMES_DATA1, (void *) &status,len); + + if(err){ + DEBUG(1, "%s: Unable to read link status\n", dev->name); + break; + } + DEBUG(3, "%s: Link Status type: %hx.\n", dev->name, status); + switch(status){ + + case HERMES_LINK_DISCONNECTED: + case HERMES_LINK_AP_OUTOFRANGE: + DEBUG(1, "%s: move out of range link status ( %04x).\n", + dev->name, status); + + priv->astatus = ORINOCO_STATUS_DOWN; + ilc_event(ILC_L2_HANDOFF, dev->ifindex,dev); + break; + case HERMES_LINK_AP_CHANGE: + case HERMES_LINK_AP_INRANGE: + DEBUG(1, "%s: move into range link status ( %04x).\n", + dev->name, status); + if(priv->astatus != ORINOCO_STATUS_UP){ + priv->astatus = ORINOCO_STATUS_UP; + } + ilc_event(ILC_L2_HANDOFF_COMPLETE, dev->ifindex,dev); + break; + case HERMES_LINK_CONNECTED: + DEBUG(1, "%s: connected link ( %04x) s:%d.\n", + dev->name,status,priv->astatus); + /* greg daley ? not sure if correct */ + if(priv->astatus != ORINOCO_STATUS_UP){ + priv->astatus = ORINOCO_STATUS_UP; + ilc_event(ILC_L2_HANDOFF_COMPLETE, + dev->ifindex,dev); + } + default: + DEBUG(1, "%s: Unknown link status received ( %04x).\n", + dev->name, status); + break; + } + break; + case HERMES_RID_ASSOCIATIONSTATUS: + hermes_read_words(hw, HERMES_DATA1, (void *) &status,len); + + if(err){ + DEBUG(1, "%s: Unable to read assoc status\n", dev->name); + break; + } + DEBUG(3, "%s: Assoc Status type: %hx.\n", dev->name, status); + + switch(status){ + + case HERMES_ASSOCSTATUS_STAASSOC: + case HERMES_ASSOCSTATUS_REASSOC: + DEBUG(1, "%s: associate status ( %04x).\n", + dev->name, status); + priv->astatus = ORINOCO_STATUS_UP; + ilc_event(ILC_L2_HANDOFF_COMPLETE, dev->ifindex,dev); + break; + case HERMES_ASSOCSTATUS_DISASSOC: + DEBUG(1, "%s: disassociate status ( %04x).\n", + dev->name, status); + priv->astatus = ORINOCO_STATUS_DOWN; + ilc_event(ILC_L2_HANDOFF, dev->ifindex,dev); + break; + default: + break; + DEBUG(1, "%s: Unknown assoc status received ( %04x).\n", + dev->name, status); + } + + break; default: DEBUG(1, "%s: Unknown information frame received (type %04x).\n", priv->ndev->name, le16_to_cpu(info.type)); @@ -2451,6 +2529,9 @@ orinoco_lock(priv); memcpy(priv->desired_essid, essidbuf, sizeof(priv->desired_essid)); + if(priv->astatus == ORINOCO_STATUS_UP){ + priv->astatus = ORINOCO_STATUS_DOWN; + } orinoco_unlock(priv); @@ -3220,8 +3301,11 @@ case SIOCSIWESSID: DEBUG(1, "%s: SIOCSIWESSID\n", dev->name); err = orinoco_ioctl_setessid(dev, &wrq->u.essid); - if (! err) + if (! err){ changed = 1; + priv->astatus = ORINOCO_STATUS_DOWN; + ilc_event(ILC_L2_HANDOFF, dev->ifindex,dev); + } break; case SIOCGIWESSID: diff -rub --exclude=*.o --exclude=*.new --exclude=*.flags --exclude=*.map --exclude=.* --exclude=*.modded --exclude=*.old --exclude=sm_tbl_*h --exclude=modversions.h --exclude=config --exclude=gentbl --exclude=asm --exclude=lxdialog --exclude=mkdep --exclude=modules --exclude=split-include --exclude=version.h --exclude=autoconf.h --exclude=Makefile.test --new-file /home/gdaley/projects/mipv6-0.9.4/linux/drivers/net/wireless/orinoco.h /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/drivers/net/wireless/orinoco.h --- /home/gdaley/projects/mipv6-0.9.4/linux/drivers/net/wireless/orinoco.h Sat Aug 3 10:39:44 2002 +++ /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/drivers/net/wireless/orinoco.h Tue Oct 8 12:53:50 2002 @@ -8,7 +8,7 @@ #define _ORINOCO_H /* To enable debug messages */ -//#define ORINOCO_DEBUG 3 +#define ORINOCO_DEBUG 0 #if (! defined (WIRELESS_EXT)) || (WIRELESS_EXT < 10) #error "orinoco driver requires Wireless extensions v10 or later." @@ -83,6 +83,11 @@ /* Configuration dependent variables */ int port_type, allow_ibss; int promiscuous, mc_count; + /* Assoc status*/ + int astatus; +#define ORINOCO_STATUS_DOWN 0 +#define ORINOCO_STATUS_UP 1 + /* /proc based debugging stuff */ diff -rub --exclude=*.o --exclude=*.new --exclude=*.flags --exclude=*.map --exclude=.* --exclude=*.modded --exclude=*.old --exclude=sm_tbl_*h --exclude=modversions.h --exclude=config --exclude=gentbl --exclude=asm --exclude=lxdialog --exclude=mkdep --exclude=modules --exclude=split-include --exclude=version.h --exclude=autoconf.h --exclude=Makefile.test --new-file /home/gdaley/projects/mipv6-0.9.4/linux/include/linux/icmpv6.h /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/include/linux/icmpv6.h --- /home/gdaley/projects/mipv6-0.9.4/linux/include/linux/icmpv6.h Mon Aug 26 14:19:52 2002 +++ /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/include/linux/icmpv6.h Mon Jun 23 16:11:31 2003 @@ -56,6 +56,19 @@ __u16 rt_lifetime; } u_nd_ra; + struct icmpv6_nd_dca { + __u16 identifier; +#if defined(__LITTLE_ENDIAN_BITFIELD) + __u16 component:15, + more:1; +#elif defined(__BIG_ENDIAN_BITFIELD) + __u16 more:1, + component:15; +#else +#error "Please fix " +#endif + } u_nd_dca; + } icmp6_dataun; #define icmp6_identifier icmp6_dataun.u_echo.identifier @@ -73,6 +86,9 @@ #define icmp6_addrconf_other icmp6_dataun.u_nd_ra.other #define icmp6_rt_lifetime icmp6_dataun.u_nd_ra.rt_lifetime #define icmp6_home_agent icmp6_dataun.u_nd_ra.home_agent +#define icmp6_dca_identifier icmp6_dataun.u_nd_dca.identifier +#define icmp6_dca_component icmp6_dataun.u_nd_dca.component +#define icmp6_dca_more icmp6_dataun.u_nd_dca.more }; diff -rub --exclude=*.o --exclude=*.new --exclude=*.flags --exclude=*.map --exclude=.* --exclude=*.modded --exclude=*.old --exclude=sm_tbl_*h --exclude=modversions.h --exclude=config --exclude=gentbl --exclude=asm --exclude=lxdialog --exclude=mkdep --exclude=modules --exclude=split-include --exclude=version.h --exclude=autoconf.h --exclude=Makefile.test --new-file /home/gdaley/projects/mipv6-0.9.4/linux/include/linux/ipv6_tunnel.h /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/include/linux/ipv6_tunnel.h --- /home/gdaley/projects/mipv6-0.9.4/linux/include/linux/ipv6_tunnel.h Thu Aug 22 09:07:08 2002 +++ /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/include/linux/ipv6_tunnel.h Fri Nov 8 13:47:21 2002 @@ -1,5 +1,5 @@ /* - * $Id: ipv6_tunnel.h,v 1.2 2002/08/02 12:31:56 ville Exp $ + * $Id: ipv6_tunnel.h,v 1.3 2002/11/08 02:47:21 gdaley Exp $ */ #ifndef _IPV6_TUNNEL_H diff -rub --exclude=*.o --exclude=*.new --exclude=*.flags --exclude=*.map --exclude=.* --exclude=*.modded --exclude=*.old --exclude=sm_tbl_*h --exclude=modversions.h --exclude=config --exclude=gentbl --exclude=asm --exclude=lxdialog --exclude=mkdep --exclude=modules --exclude=split-include --exclude=version.h --exclude=autoconf.h --exclude=Makefile.test --new-file /home/gdaley/projects/mipv6-0.9.4/linux/include/linux/rtnetlink.h /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/include/linux/rtnetlink.h --- /home/gdaley/projects/mipv6-0.9.4/linux/include/linux/rtnetlink.h Sat Aug 3 10:39:45 2002 +++ /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/include/linux/rtnetlink.h Mon Jun 23 16:07:58 2003 @@ -316,6 +316,8 @@ #define IFA_F_SECONDARY 0x01 +#define IFA_F_OPTIMISTIC 0x10 /* SHARKEY */ + #define IFA_F_DEPRECATED 0x20 #define IFA_F_TENTATIVE 0x40 #define IFA_F_PERMANENT 0x80 diff -rub --exclude=*.o --exclude=*.new --exclude=*.flags --exclude=*.map --exclude=.* --exclude=*.modded --exclude=*.old --exclude=sm_tbl_*h --exclude=modversions.h --exclude=config --exclude=gentbl --exclude=asm --exclude=lxdialog --exclude=mkdep --exclude=modules --exclude=split-include --exclude=version.h --exclude=autoconf.h --exclude=Makefile.test --new-file /home/gdaley/projects/mipv6-0.9.4/linux/include/net/addrconf.h /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/include/net/addrconf.h --- /home/gdaley/projects/mipv6-0.9.4/linux/include/net/addrconf.h Mon Aug 26 14:24:06 2002 +++ /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/include/net/addrconf.h Mon Jun 23 16:13:33 2003 @@ -106,6 +106,11 @@ struct prefix_info *pinfo, struct in6_addr *home_addr); +extern int addrconf_mipv6(int ifindex, + struct in6_addr *addr, + __u32 lifetime, + int plen,int ack); + /* Device notifier */ extern int register_inet6addr_notifier(struct notifier_block *nb); diff -rub --exclude=*.o --exclude=*.new --exclude=*.flags --exclude=*.map --exclude=.* --exclude=*.modded --exclude=*.old --exclude=sm_tbl_*h --exclude=modversions.h --exclude=config --exclude=gentbl --exclude=asm --exclude=lxdialog --exclude=mkdep --exclude=modules --exclude=split-include --exclude=version.h --exclude=autoconf.h --exclude=Makefile.test --new-file /home/gdaley/projects/mipv6-0.9.4/linux/include/net/ilc.h /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/include/net/ilc.h --- /home/gdaley/projects/mipv6-0.9.4/linux/include/net/ilc.h Thu Jan 1 10:00:00 1970 +++ /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/include/net/ilc.h Fri May 23 11:19:59 2003 @@ -0,0 +1,84 @@ +/* + * Inter-layer Communications header-file + * + * Authors: + * Brett Pentland + * + * $Id: + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version + * 2 of the License, or (at your option) any later version. + * + * Changelog: + */ + +#ifndef _ILC_H +#define _ILC_H + + +/* Events are enumerated sequentially from zero so the the dummy + * event, "ILC_NUM_EVENTS" is set equal to the total number of + * events defined. For each event type there should be a defined + * type of (possibly null) data structure that is passed to the + * handler function. */ + +#define ILC_IFF_UP 0 +#define ILC_SET_IFF_UP 1 +#define ILC_IFF_DOWN 2 +#define ILC_SET_IFF_DOWN 3 +#define ILC_L2_HANDOFF_STBY 4 +#define ILC_L2_HANDOFF 5 +#define ILC_L2_HANDOFF_COMPLETE 6 +#define ILC_MANUAL 7 + +#define ILC_NUM_EVENTS 8 + + +typedef int (*ilc_handler_func_t)(int, int, void *); + +struct event_handler { + int ifindex; + ilc_handler_func_t function; + struct event_handler *next; +}; + +struct ilc_event_t { + int event; + int ifindex; + void *data; + struct ilc_event_t *next; +}; + +#if defined(CONFIG_ILC) || defined(CONFIG_ILC_MODULE) + +int ilc_set_handler(int, int, ilc_handler_func_t); + +int ilc_release_handler(int, int, ilc_handler_func_t); + +int ilc_event(int, int, void *); + +#else /* defined(CONFIG_ILC) || defined(CONFIG_ILC_MODULE) */ + +/* dummy stubs for non-ILC systems ... this saves putting + * painful preprocessor prevarication all over the place */ + +static __inline__ int ilc_set_handler(int a , int b, ilc_handler_func_t c) +{ + return -1; +} + +static __inline__ int ilc_release_handler(int a, int b, ilc_handler_func_t c) +{ + return -1; +} + +static __inline__ int ilc_event(int a, int b, void *c) +{ + return 0; +} + +#endif /* defined(CONFIG_ILC) || defined(CONFIG_ILC_MODULE) */ + +#endif /* def _ILC_H */ diff -rub --exclude=*.o --exclude=*.new --exclude=*.flags --exclude=*.map --exclude=.* --exclude=*.modded --exclude=*.old --exclude=sm_tbl_*h --exclude=modversions.h --exclude=config --exclude=gentbl --exclude=asm --exclude=lxdialog --exclude=mkdep --exclude=modules --exclude=split-include --exclude=version.h --exclude=autoconf.h --exclude=Makefile.test --new-file /home/gdaley/projects/mipv6-0.9.4/linux/include/net/ipv6.h /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/include/net/ipv6.h --- /home/gdaley/projects/mipv6-0.9.4/linux/include/net/ipv6.h Mon Aug 26 14:22:52 2002 +++ /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/include/net/ipv6.h Mon Jun 23 16:13:31 2003 @@ -4,7 +4,7 @@ * Authors: * Pedro Roque * - * $Id: ipv6.h,v 1.23 2000/12/13 18:31:48 davem Exp $ + * $Id: ipv6.h,v 1.1 2002/04/10 03:22:40 sharkey Exp $ * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License diff -rub --exclude=*.o --exclude=*.new --exclude=*.flags --exclude=*.map --exclude=.* --exclude=*.modded --exclude=*.old --exclude=sm_tbl_*h --exclude=modversions.h --exclude=config --exclude=gentbl --exclude=asm --exclude=lxdialog --exclude=mkdep --exclude=modules --exclude=split-include --exclude=version.h --exclude=autoconf.h --exclude=Makefile.test --new-file /home/gdaley/projects/mipv6-0.9.4/linux/include/net/ipv6_tunnel.h /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/include/net/ipv6_tunnel.h --- /home/gdaley/projects/mipv6-0.9.4/linux/include/net/ipv6_tunnel.h Mon Aug 26 14:27:02 2002 +++ /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/include/net/ipv6_tunnel.h Mon Jun 23 16:14:07 2003 @@ -1,5 +1,5 @@ /* - * $Id: ipv6_tunnel.h,v 1.7 2002/08/09 14:09:15 ville Exp $ + * $Id: ipv6_tunnel.h,v 1.4 2002/11/08 02:47:21 gdaley Exp $ */ #ifndef _NET_IPV6_TUNNEL_H diff -rub --exclude=*.o --exclude=*.new --exclude=*.flags --exclude=*.map --exclude=.* --exclude=*.modded --exclude=*.old --exclude=sm_tbl_*h --exclude=modversions.h --exclude=config --exclude=gentbl --exclude=asm --exclude=lxdialog --exclude=mkdep --exclude=modules --exclude=split-include --exclude=version.h --exclude=autoconf.h --exclude=Makefile.test --new-file /home/gdaley/projects/mipv6-0.9.4/linux/include/net/mipglue.h /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/include/net/mipglue.h --- /home/gdaley/projects/mipv6-0.9.4/linux/include/net/mipglue.h Mon Aug 26 14:26:32 2002 +++ /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/include/net/mipglue.h Mon Jun 23 16:13:35 2003 @@ -4,7 +4,7 @@ * Authors: * Antti Tuominen * - * $Id: mipglue.h,v 1.14 2002/08/21 14:53:41 antti Exp $ + * $Id: mipglue.h,v 1.5 2003/06/23 03:19:22 gdaley Exp $ * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -80,6 +80,7 @@ void (*mipv6_get_care_of_address)(struct in6_addr *homeaddr, struct in6_addr *coa); void (*mipv6_change_router)(void); + void (*mipv6_delegation_chain)(__u16, struct in6_addr *); void (*mipv6_check_dad)(struct in6_addr *home_addr); void (*mipv6_icmp_handle_homeaddr)(struct sk_buff *skb); int (*mipv6_approve_pfx_rt)(struct in6_addr *addr); @@ -123,6 +124,11 @@ MIPV6_CALLPROC(mipv6_change_router)(); } +static inline void ndisc_mipv6_delegation_chain(__u16 identifier, struct in6_addr *saddr) +{ + MIPV6_CALLPROC(mipv6_delegation_chain)(identifier,saddr); +} + static inline void ndisc_check_mipv6_dad(struct in6_addr *target) { MIPV6_CALLPROC(mipv6_check_dad)(target); @@ -221,6 +227,8 @@ } static inline void ndisc_mipv6_change_router(void) {} + +static inline void ndisc_mipv6_delegation_chain(__u16) {} static inline void ndisc_check_mipv6_dad(struct in6_addr *target) {} diff -rub --exclude=*.o --exclude=*.new --exclude=*.flags --exclude=*.map --exclude=.* --exclude=*.modded --exclude=*.old --exclude=sm_tbl_*h --exclude=modversions.h --exclude=config --exclude=gentbl --exclude=asm --exclude=lxdialog --exclude=mkdep --exclude=modules --exclude=split-include --exclude=version.h --exclude=autoconf.h --exclude=Makefile.test --new-file /home/gdaley/projects/mipv6-0.9.4/linux/include/net/mipv6.h /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/include/net/mipv6.h --- /home/gdaley/projects/mipv6-0.9.4/linux/include/net/mipv6.h Mon Aug 26 14:26:32 2002 +++ /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/include/net/mipv6.h Wed Apr 2 14:50:15 2003 @@ -4,7 +4,7 @@ * Authors: * Sami Kivisaari * - * $Id: mipv6.h,v 1.33 2002/03/11 08:51:35 jola Exp $ + * $Id: mipv6.h,v 1.2 2002/07/19 06:40:09 gdaley Exp $ * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -87,6 +87,10 @@ #define MIPV6_BU_F_HOME 0x40 #define MIPV6_BU_F_SINGLE 0x20 #define MIPV6_BU_F_DAD 0x10 + +/* Binding update flag code for MAP option */ +#define MIPV6_BU_F_MAP 0x08 + /* * diff -rub --exclude=*.o --exclude=*.new --exclude=*.flags --exclude=*.map --exclude=.* --exclude=*.modded --exclude=*.old --exclude=sm_tbl_*h --exclude=modversions.h --exclude=config --exclude=gentbl --exclude=asm --exclude=lxdialog --exclude=mkdep --exclude=modules --exclude=split-include --exclude=version.h --exclude=autoconf.h --exclude=Makefile.test --new-file /home/gdaley/projects/mipv6-0.9.4/linux/include/net/ndisc.h /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/include/net/ndisc.h --- /home/gdaley/projects/mipv6-0.9.4/linux/include/net/ndisc.h Mon Aug 26 14:22:52 2002 +++ /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/include/net/ndisc.h Mon Jun 23 16:13:31 2003 @@ -12,6 +12,13 @@ #define NDISC_REDIRECT 137 /* + * ICMP codes for securing neighbour discovery (SEND) messages + */ + +#define NDISC_DELEGATION_CHAIN_SOLICITATION 143 +#define NDISC_DELEGATION_CHAIN_ADVERTISEMENT 144 + +/* * ndisc options */ @@ -25,6 +32,12 @@ #define ND_OPT_RTR_ADV_INTERVAL 7 #define ND_OPT_HOME_AGENT_INFO 8 +/* Temporary for HMIPv6 */ +#define ND_OPT_MAP 201 + +/* Temporary for LinkID */ +#define ND_OPT_LINKID 203 + #define MAX_RTR_SOLICITATION_DELAY HZ #define ND_REACHABLE_TIME (30*HZ) @@ -55,12 +68,23 @@ __u32 retrans_timer; }; +struct dca_msg { + struct icmp6hdr icmph; + __u32 reserved; +}; extern int ndisc_init(struct net_proto_family *ops); extern void ndisc_cleanup(void); extern int ndisc_rcv(struct sk_buff *skb); + +extern void ndisc_send_na(struct net_device *dev, + struct neighbour *neigh, + struct in6_addr *daddr, + struct in6_addr *solicited_addr, + int router, int solicited, + int override, int inc_opt); extern void ndisc_send_ns(struct net_device *dev, struct neighbour *neigh, diff -rub --exclude=*.o --exclude=*.new --exclude=*.flags --exclude=*.map --exclude=.* --exclude=*.modded --exclude=*.old --exclude=sm_tbl_*h --exclude=modversions.h --exclude=config --exclude=gentbl --exclude=asm --exclude=lxdialog --exclude=mkdep --exclude=modules --exclude=split-include --exclude=version.h --exclude=autoconf.h --exclude=Makefile.test --new-file /home/gdaley/projects/mipv6-0.9.4/linux/net/Config.in /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/net/Config.in --- /home/gdaley/projects/mipv6-0.9.4/linux/net/Config.in Sat Aug 3 10:39:46 2002 +++ /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/net/Config.in Thu Aug 15 11:21:09 2002 @@ -30,6 +30,14 @@ source net/khttpd/Config.in fi fi + +if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then + tristate 'Interlayer Communications (ILC) (EXPERIMENTAL)' CONFIG_ILC + if [ "$CONFIG_ILC" != "n" ]; then + bool ' ILC debugging messages' CONFIG_ILC_DEBUG + fi +fi + if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then bool 'Asynchronous Transfer Mode (ATM) (EXPERIMENTAL)' CONFIG_ATM if [ "$CONFIG_ATM" = "y" ]; then @@ -43,23 +51,18 @@ if [ "$CONFIG_INET" = "y" -a "$CONFIG_ATM_LANE" != "n" ]; then tristate ' Multi-Protocol Over ATM (MPOA) support' CONFIG_ATM_MPOA fi - tristate ' RFC1483/2684 Bridged protocols' CONFIG_ATM_BR2684 - if [ "$CONFIG_ATM_BR2684" != "n" ]; then - bool ' Per-VC IP filter kludge' CONFIG_ATM_BR2684_IPFILTER - fi fi + + dep_tristate '802.1Q VLAN Support (EXPERIMENTAL)' CONFIG_VLAN_8021Q $CONFIG_EXPERIMENTAL + fi -tristate '802.1Q VLAN Support' CONFIG_VLAN_8021Q comment ' ' tristate 'The IPX protocol' CONFIG_IPX if [ "$CONFIG_IPX" != "n" ]; then source net/ipx/Config.in fi - tristate 'Appletalk protocol support' CONFIG_ATALK -source drivers/net/appletalk/Config.in - tristate 'DECnet Support' CONFIG_DECNET if [ "$CONFIG_DECNET" != "n" ]; then source net/decnet/Config.in @@ -75,11 +78,11 @@ # fi if [ "$CONFIG_INET" = "y" ]; then tristate 'Acorn Econet/AUN protocols (EXPERIMENTAL)' CONFIG_ECONET + fi if [ "$CONFIG_ECONET" != "n" ]; then bool ' AUN over UDP' CONFIG_ECONET_AUNUDP bool ' Native Econet' CONFIG_ECONET_NATIVE fi - fi tristate 'WAN router' CONFIG_WAN_ROUTER bool 'Fast switching (read help!)' CONFIG_NET_FASTROUTE bool 'Forwarding between high speed interfaces' CONFIG_NET_HW_FLOWCONTROL @@ -92,11 +95,6 @@ source net/sched/Config.in fi #bool 'Network code profiler' CONFIG_NET_PROFILE -endmenu - -mainmenu_option next_comment -comment 'Network testing' -tristate 'Packet Generator (USE WITH CAUTION)' CONFIG_NET_PKTGEN endmenu endmenu diff -rub --exclude=*.o --exclude=*.new --exclude=*.flags --exclude=*.map --exclude=.* --exclude=*.modded --exclude=*.old --exclude=sm_tbl_*h --exclude=modversions.h --exclude=config --exclude=gentbl --exclude=asm --exclude=lxdialog --exclude=mkdep --exclude=modules --exclude=split-include --exclude=version.h --exclude=autoconf.h --exclude=Makefile.test --new-file /home/gdaley/projects/mipv6-0.9.4/linux/net/Makefile /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/net/Makefile --- /home/gdaley/projects/mipv6-0.9.4/linux/net/Makefile Thu Aug 22 09:07:08 2002 +++ /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/net/Makefile Thu Aug 22 12:50:34 2002 @@ -46,6 +46,7 @@ subdir-$(CONFIG_DECNET) += decnet subdir-$(CONFIG_ECONET) += econet subdir-$(CONFIG_VLAN_8021Q) += 8021q +subdir-$(CONFIG_ILC) += ilc obj-y := socket.o $(join $(subdir-y), $(patsubst %,/%.o,$(notdir $(subdir-y)))) diff -rub --exclude=*.o --exclude=*.new --exclude=*.flags --exclude=*.map --exclude=.* --exclude=*.modded --exclude=*.old --exclude=sm_tbl_*h --exclude=modversions.h --exclude=config --exclude=gentbl --exclude=asm --exclude=lxdialog --exclude=mkdep --exclude=modules --exclude=split-include --exclude=version.h --exclude=autoconf.h --exclude=Makefile.test --new-file /home/gdaley/projects/mipv6-0.9.4/linux/net/ilc/Makefile /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/net/ilc/Makefile --- /home/gdaley/projects/mipv6-0.9.4/linux/net/ilc/Makefile Thu Jan 1 10:00:00 1970 +++ /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/net/ilc/Makefile Thu Aug 8 16:11:32 2002 @@ -0,0 +1,19 @@ +# +# Makefile for ILC +# +# Note! Dependencies are done automagically by 'make dep', which also +# removes any old dependencies. DON'T put your own dependencies here +# unless it's something special (ie not a .c file). +# +# Note 2! The CFLAGS definition is now in the main makefile... + +O_TARGET := ilc.o + +export-objs := ilc_base.o + +obj-m := $(O_TARGET) +obj-y := ilc_base.o + + +include $(TOPDIR)/Rules.make + diff -rub --exclude=*.o --exclude=*.new --exclude=*.flags --exclude=*.map --exclude=.* --exclude=*.modded --exclude=*.old --exclude=sm_tbl_*h --exclude=modversions.h --exclude=config --exclude=gentbl --exclude=asm --exclude=lxdialog --exclude=mkdep --exclude=modules --exclude=split-include --exclude=version.h --exclude=autoconf.h --exclude=Makefile.test --new-file /home/gdaley/projects/mipv6-0.9.4/linux/net/ilc/ilc_base.c /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/net/ilc/ilc_base.c --- /home/gdaley/projects/mipv6-0.9.4/linux/net/ilc/ilc_base.c Thu Jan 1 10:00:00 1970 +++ /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/net/ilc/ilc_base.c Thu Aug 15 11:45:55 2002 @@ -0,0 +1,346 @@ +/* net/ilc/ilc_base.c + * $Id: ilc_base.c,v 1.7 2002/08/15 01:45:55 gdaley Exp $ + * + * Communications hub for layer two device drivers to talk to layer + * three network code - should be loaded before any network drivers + * that support this kind of communication. + * + * Authors: Brett Pentland + * Nick 'sharkey' Moore + * + */ + +#define ASSERT(expr) \ + if(!(expr)) { \ + printk( "Assertion failed! %s,%s,%s,line=%d\n", \ + #expr,__FILE__,__FUNCTION__,__LINE__); \ + } + +#include +#include +#include +#include +#include +#include + +#ifdef CONFIG_MAGIC_SYSRQ +#include +#endif + +#include + +/* RING BUFFER */ + +#define EVENT_QUEUE_PAGES 1 +#define EVENT_QUEUE_SIZE (EVENT_QUEUE_PAGES * PAGE_SIZE) / sizeof(struct ilc_event_t) + +struct ilc_event_t *Event_queue = NULL; +struct ilc_event_t *Event_head = NULL; +struct ilc_event_t *Event_tail = NULL; + +spinlock_t ilc_spinlock = SPIN_LOCK_UNLOCKED; + + +void ilc_buffer_init(void) { + + ASSERT(EVENT_QUEUE_PAGES == 1); + Event_queue = (struct ilc_event_t *)get_zeroed_page(GFP_ATOMIC); + ASSERT(Event_queue != NULL); + Event_head = Event_tail = Event_queue; + + printk ("ilc_buffer_init: allocated 1 page = %d entries\n", (int)EVENT_QUEUE_SIZE); +} + +void ilc_buffer_exit(void) { + + Event_head = Event_tail = NULL; + free_page((unsigned long)Event_queue); + Event_queue = NULL; +} + +void ilc_buffer_push(struct ilc_event_t *evp) { + + struct ilc_event_t *event_new_head; + unsigned long flags; + + if (!Event_queue || !Event_head) { + printk("ilc_buffer_push: No buffer!\n"); + } + + spin_lock_irqsave(&ilc_spinlock, flags); + + event_new_head = Event_head + 1; + if (event_new_head - Event_queue >= EVENT_QUEUE_SIZE) { + event_new_head = Event_queue; + } + + if (event_new_head == Event_tail) { + /* overflow */ + printk("ilc_buffer_push: Overflow!\n"); + } else { + memcpy(Event_head, evp, sizeof(struct ilc_event_t)); + Event_head = event_new_head; + } + spin_unlock_irqrestore(&ilc_spinlock, flags); +} + +struct ilc_event_t *ilc_buffer_pop(struct ilc_event_t *evp) { + + struct ilc_event_t *event_new_tail; + unsigned long flags; + + if (!Event_queue || Event_head == Event_tail) return NULL; + + spin_lock_irqsave(&ilc_spinlock, flags); + + event_new_tail = Event_tail + 1; + if (event_new_tail - Event_queue >= EVENT_QUEUE_SIZE) { + event_new_tail = Event_queue; + } + + memcpy(evp, Event_tail, sizeof(struct ilc_event_t)); + + Event_tail = event_new_tail; + + spin_unlock_irqrestore(&ilc_spinlock, flags); + + return evp; +} + +/* DEBUG HANDLERS */ +#ifdef CONFIG_ILC_DEBUG + +void ilc_buffer_status_printk() { + + printk("ilc_buffer_status_printk(): EVENT_QUEUE_SIZE = %d\n", (int)EVENT_QUEUE_SIZE); + printk("ilc_buffer_status_printk(): Event_head = %d\n", Event_head - Event_queue); + printk("ilc_buffer_status_printk(): Event_tail = %d\n", Event_tail - Event_queue); + +} + +struct ilc_debug_t { + char *name; + ilc_handler_func_t debug_handler; +}; + + +struct ilc_debug_t ilc_debug[ILC_NUM_EVENTS] = { + { "ILC_IFF_UP", NULL }, + { "ILC_SET_IFF_UP", NULL }, + { "ILC_IFF_DOWN", NULL }, + { "ILC_SET_IFF_DOWN", NULL }, + { "ILC_L2_HANDOFF_STBY", NULL }, + { "ILC_L2_HANDOFF", NULL }, + { "ILC_L2_HANDOFF_COMPLETE", NULL }, + { "ILC_MANUAL", NULL } +}; + +int ilc_debug_handler(int ev, int ifi, void *data) +{ + struct timeval tv = { 0, 0 }; + int min, sec; + + do_gettimeofday(&tv); + min = (tv.tv_sec / 60) % 60; + sec = tv.tv_sec % 60; + + printk("ilc_debug_handler: time = %02d:%02d.%06ld, jiffies = %lu," + " ev = %d (%s), ifi = %d, data = %p\n", min, sec, + tv.tv_usec, jiffies, ev, ilc_debug[ev].name, ifi, data); + + if (ilc_debug[ev].debug_handler) + return ilc_debug[ev].debug_handler(ev, ifi, data); + else + return 0; +} + +#endif /* CONFIG_ILC_DEBUG */ + +/* HANDLER TREE STUFF */ + +struct event_handler *Handlers[ILC_NUM_EVENTS] = { NULL }; +spinlock_t handlers_spinlock = SPIN_LOCK_UNLOCKED; + +int ilc_handlers_insert(int event, struct event_handler *new) { + + spin_lock(&handlers_spinlock); + + new->next = Handlers[event]; + Handlers[event] = new; + + spin_unlock(&handlers_spinlock); + + return 1; +} + +int ilc_handlers_calleach(int event, int ifindex, void *data) +{ + struct event_handler *x; + int count = 0; + spin_lock(&handlers_spinlock); + +#ifdef CONFIG_ILC_DEBUG + /* should be a /proc switch here too */ + ilc_debug_handler(event, ifindex, data); +#endif + + for (x = Handlers[event]; x; x = x->next) { + if (x->ifindex == 0 || x->ifindex == ifindex) { + x->function(event, ifindex, data); + count++; + } + } + + spin_unlock(&handlers_spinlock); + return count; +} + +int ilc_handlers_deleteeach(int event, int ifindex, void *func) +{ + struct event_handler **y; + int count = 0; + spin_lock(&handlers_spinlock); + + for (y = &(Handlers[event]); *y; *y && (y = &((*y)->next))) { + if ( ( ifindex == -1 || (*y)->ifindex == ifindex) && + ( func == NULL || (*y)->function == func ) ) + { + struct event_handler *x = *y; + *y = (*y)->next; + kfree(x); + count++; + } + } + + spin_unlock(&handlers_spinlock); + return count; +} + +void ilc_handlers_init(void) { + int i; + for (i=0; i < ILC_NUM_EVENTS; i++) { + Handlers[i] = NULL; + } +} + +void ilc_handlers_exit(void) { + int i; + for (i = 0; i < ILC_NUM_EVENTS; i++) { + ilc_handlers_deleteeach(i, -1, NULL); + } +} + + +/* TASK QUEUE STUFF */ + +void ilc_task_handler (void *unused) { + struct ilc_event_t evp; + int i; + + while (ilc_buffer_pop(&evp)) { + printk("ilc_task_handler: jiffies=%lu popped event type %d if %d data %p\n", + jiffies, evp.event, evp.ifindex, evp.data); + + i = ilc_handlers_calleach(evp.event, evp.ifindex, evp.data); + + printk("ilc_task_handler: ilc_handlers_calleach() returned %d\n", i); + } +} + +struct tq_struct ilc_task; + +void ilc_tq_init(void) { + ilc_task.routine = ilc_task_handler; + ilc_task.data = NULL; +} + +void ilc_tq_exit(void) { + /* nop */; +} + + +/* ENTRY POINTS */ + +int ilc_event(int event, int ifindex, void *data) +{ + struct ilc_event_t ev; + printk("ilc_event: event=%d, ifindex=%d, data=%p\n", + event, ifindex, data); + + ev.event = event; + ev.ifindex = ifindex; + ev.data = data; + + ilc_buffer_push(&ev); + schedule_task(&ilc_task); + + return 0; +} + +int ilc_set_handler(int event, int ifindex, ilc_handler_func_t function) +{ + struct event_handler *eh = (struct event_handler *) + kmalloc(sizeof(struct event_handler), GFP_KERNEL); + + eh->ifindex = ifindex; + eh->function = function; + + return ilc_handlers_insert(event, eh); +} + +int ilc_release_handler(int event, int ifindex, ilc_handler_func_t function) +{ + return -1; +} + +EXPORT_SYMBOL(ilc_event); +EXPORT_SYMBOL(ilc_set_handler); +EXPORT_SYMBOL(ilc_release_handler); + +/* INITIALIZER */ + +#ifdef CONFIG_MAGIC_SYSRQ +static void sysrq_handle_ilc(int key, struct pt_regs *pt_regs, + struct kbd_struct *kbd, struct tty_struct *tty) { + ilc_event(ILC_MANUAL, 0, NULL); +} +static struct sysrq_key_op sysrq_ilc_op = { + handler: sysrq_handle_ilc, + help_msg: "Z-ilc", + action_msg: "Cause an ILC_MANUAL event", +}; +#endif + +static int __init ilc_init(void) +{ + ilc_tq_init(); + ilc_buffer_init(); + ilc_handlers_init(); + + printk("ilc_init: ilc module started\n"); + +#ifdef CONFIG_MAGIC_SYSRQ + printk("ilc_init: register alt-sysrq-z as ILC_MANUAL\n"); + register_sysrq_key('z', &sysrq_ilc_op); +#endif + + return 0; +} + + +/* Cleanup - release all memory allocated for handler lists. */ + +void ilc_exit(void) +{ + ilc_tq_exit(); + ilc_buffer_exit(); + ilc_handlers_exit(); + + printk("ilc: module shutdown\n"); +} + +MODULE_AUTHOR("Brett Pentland "); +MODULE_DESCRIPTION("Interlayer communications (ILC) module"); + +module_init(ilc_init); +module_exit(ilc_exit); diff -rub --exclude=*.o --exclude=*.new --exclude=*.flags --exclude=*.map --exclude=.* --exclude=*.modded --exclude=*.old --exclude=sm_tbl_*h --exclude=modversions.h --exclude=config --exclude=gentbl --exclude=asm --exclude=lxdialog --exclude=mkdep --exclude=modules --exclude=split-include --exclude=version.h --exclude=autoconf.h --exclude=Makefile.test --new-file /home/gdaley/projects/mipv6-0.9.4/linux/net/ipv6/Config.in /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/net/ipv6/Config.in --- /home/gdaley/projects/mipv6-0.9.4/linux/net/ipv6/Config.in Thu Aug 22 09:07:08 2002 +++ /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/net/ipv6/Config.in Tue Jun 24 16:04:25 2003 @@ -6,6 +6,26 @@ #bool ' IPv6: firewall support' CONFIG_IPV6_FIREWALL dep_tristate ' IPv6: IPv6 over IPv6 Tunneling (EXPERIMENTAL)' CONFIG_IPV6_IPV6_TUNNEL m + +# IPv6 configuration w/ changes for Optimistic DAD +# +#bool ' IPv6: ignore DAD entirely for G=1 suffixes (sharkey)' CONFIG_IPV6_DAD_NOGLOBAL n +bool ' IPv6: optimistic DAD (sharkey)' CONFIG_IPV6_DAD_OPTIMISTIC +bool ' IPv6: DAD debugging (sharkey)' CONFIG_IPV6_DAD_DEBUG + +bool ' IPv6: Always use random suffix (sharkey)' CONFIG_IPV6_SAA_RANDOM_ALWAYS +bool ' IPv6: Generate random suffix on DAD failure (sharkey)' CONFIG_IPV6_DAD_RECOVERY y + +if [ "$CONFIG_IPV6_DAD_DEBUG" = "y" ]; then + bool ' Intentially broken random generation (sharkey)' CONFIG_IPV6_SAA_RANDOM_BROKEN +fi + +bool ' IPv6: Send unsolicited NAs (sharkey)' CONFIG_IPV6_NA_UNSOLICITED + +#if [ "$CONFIG_IPV6_NA_UNSOLICITED" = "y" ]; then +# bool ' Send unsolicited NAs only to router (sharkey)' CONFIG_IPV6_NA_UNSOLICITED_ROUTER_ONLY +#fi + source net/ipv6/mobile_ip6/Config.in if [ "$CONFIG_NETFILTER" != "n" ]; then diff -rub --exclude=*.o --exclude=*.new --exclude=*.flags --exclude=*.map --exclude=.* --exclude=*.modded --exclude=*.old --exclude=sm_tbl_*h --exclude=modversions.h --exclude=config --exclude=gentbl --exclude=asm --exclude=lxdialog --exclude=mkdep --exclude=modules --exclude=split-include --exclude=version.h --exclude=autoconf.h --exclude=Makefile.test --new-file /home/gdaley/projects/mipv6-0.9.4/linux/net/ipv6/Makefile /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/net/ipv6/Makefile --- /home/gdaley/projects/mipv6-0.9.4/linux/net/ipv6/Makefile Thu Aug 22 09:07:08 2002 +++ /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/net/ipv6/Makefile Thu Aug 22 12:57:10 2002 @@ -22,6 +22,7 @@ endif + obj-m := $(O_TARGET) #obj-$(CONFIG_IPV6_FIREWALL) += ip6_fw.o diff -rub --exclude=*.o --exclude=*.new --exclude=*.flags --exclude=*.map --exclude=.* --exclude=*.modded --exclude=*.old --exclude=sm_tbl_*h --exclude=modversions.h --exclude=config --exclude=gentbl --exclude=asm --exclude=lxdialog --exclude=mkdep --exclude=modules --exclude=split-include --exclude=version.h --exclude=autoconf.h --exclude=Makefile.test --new-file /home/gdaley/projects/mipv6-0.9.4/linux/net/ipv6/addrconf.c /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/net/ipv6/addrconf.c --- /home/gdaley/projects/mipv6-0.9.4/linux/net/ipv6/addrconf.c Thu Aug 22 09:07:08 2002 +++ /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/net/ipv6/addrconf.c Wed Jun 25 11:01:55 2003 @@ -6,7 +6,7 @@ * Pedro Roque * Alexey Kuznetsov * - * $Id: addrconf.c,v 1.69 2001/10/31 21:55:54 davem Exp $ + * $Id: addrconf.c,v 1.9 2003/06/25 01:01:55 gdaley Exp $ * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -26,6 +26,8 @@ * packets. * yoshfuji@USAGI : Fixed interval between DAD * packets. + * sharkey@zoic.org : Changes for Optimistic DAD + * */ #include @@ -57,17 +59,24 @@ #include #include #include +#include #include #include #include +#include + +#if defined(CONFIG_IPV6_MOBILITY) || defined(CONFIG_IPV6_MOBILITY_MODULE) #include +#define USE_IPV6_MOBILITY +#endif #define IPV6_MAX_ADDRESSES 16 /* Set to 3 to get tracing... */ -#define ACONF_DEBUG 2 +/* Set to 2 to get helpful DAD information */ +#define ACONF_DEBUG 4 #if ACONF_DEBUG >= 3 #define ADBG(x) printk x @@ -75,6 +84,22 @@ #define ADBG(x) #endif +#if ACONF_DEBUG >= 2 +#define ADBGDAD(x,a) debug_addr(__FUNCTION__, x, &(a)) + +static void debug_addr(const char *f, const char *m, const struct in6_addr *a) { + printk("%s: %04X:%04X:%04X:%04X:%04X:%04X:%04X:%04X (%03u) %s\n", f, + ntohs(a->s6_addr16[0]), ntohs(a->s6_addr16[1]), + ntohs(a->s6_addr16[2]), ntohs(a->s6_addr16[3]), + ntohs(a->s6_addr16[4]), ntohs(a->s6_addr16[5]), + ntohs(a->s6_addr16[6]), ntohs(a->s6_addr16[7]), + (unsigned int)(jiffies%1000), m); +} + +#else +#define ADBGDAD(x,a) +#endif + #define INFINITE 0xffffffff #ifdef CONFIG_SYSCTL @@ -100,11 +125,17 @@ static int addrconf_ifdown(struct net_device *dev, int how); + +static int ipv6_generate_eui64_random(u8 *); + static void addrconf_dad_start(struct inet6_ifaddr *ifp); static void addrconf_dad_timer(unsigned long data); +static void addrconf_send_nas(struct inet6_ifaddr *ifp); +static void addrconf_send_ns(struct inet6_ifaddr *ifp); static void addrconf_dad_completed(struct inet6_ifaddr *ifp); static void addrconf_rs_timer(unsigned long data); static void ipv6_ifa_notify(int event, struct inet6_ifaddr *ifa); +static void addrconf_retry_timer(unsigned long data); static struct notifier_block *inet6addr_chain; @@ -203,6 +234,7 @@ AC_NONE, AC_DAD, AC_RS, + AC_RETRY, }; static void addrconf_mod_timer(struct inet6_ifaddr *ifp, @@ -219,6 +251,8 @@ case AC_RS: ifp->timer.function = addrconf_rs_timer; break; + case AC_RETRY: + ifp->timer.function = addrconf_retry_timer; default:; } ifp->timer.expires = jiffies + when; @@ -558,7 +592,9 @@ goto out; } - if (!match && !(ifp->flags & IFA_F_TENTATIVE)) { +/* draft-moore-ipv6-optimistic-dad-01.txt 2.2.2 */ + + if (!match && (ifp->flags & IFA_F_OPTIMISTIC || (!(ifp->flags & IFA_F_TENTATIVE)))) { match = ifp; in6_ifa_hold(ifp); } @@ -590,7 +626,8 @@ goto out_unlock_base; } - if (!match && !(ifp->flags&IFA_F_TENTATIVE)) { +/* draft-moore-ipv6-optimistic-dad-01.txt 2.2.2 */ + if (!match && (ifp->flags & IFA_F_OPTIMISTIC || (!(ifp->flags & IFA_F_TENTATIVE)))) { match = ifp; in6_ifa_hold(ifp); } @@ -632,13 +669,25 @@ struct inet6_dev *idev; int err = -EADDRNOTAVAIL; + ADBG(("ipv6_get_lladdr:\n")); read_lock(&addrconf_lock); if ((idev = __in6_dev_get(dev)) != NULL) { struct inet6_ifaddr *ifp; + ADBG(("ipv6_get_lladdr: got device %s %p\n",dev->name, idev->addr_list)); read_lock_bh(&idev->lock); for (ifp=idev->addr_list; ifp; ifp=ifp->if_next) { - if (ifp->scope == IFA_LINK && !(ifp->flags&IFA_F_TENTATIVE)) { + ADBG(("ipv6_get_lladdr scan: %x:%x:%x:%x:%x:%x:%x:%x\n", + ntohs(ifp->addr.s6_addr16[0]), + ntohs(ifp->addr.s6_addr16[1]), + ntohs(ifp->addr.s6_addr16[2]), + ntohs(ifp->addr.s6_addr16[3]), + ntohs(ifp->addr.s6_addr16[4]), + ntohs(ifp->addr.s6_addr16[5]), + ntohs(ifp->addr.s6_addr16[6]), + ntohs(ifp->addr.s6_addr16[7]))); + /* draft-moore-ipv6-optimistic-dad 2.2.2 */ + if (ifp->scope == IFA_LINK && (!(ifp->flags&IFA_F_TENTATIVE) || ifp->flags&IFA_F_OPTIMISTIC) ) { ipv6_addr_copy(addr, &ifp->addr); err = 0; break; @@ -669,8 +718,10 @@ read_lock_bh(&addrconf_hash_lock); for(ifp = inet6_addr_lst[hash]; ifp; ifp=ifp->lst_next) { - if (ipv6_addr_cmp(&ifp->addr, addr) == 0 && - !(ifp->flags&IFA_F_TENTATIVE)) { +/* draft-moore-ipv6-optimistic-dad 2.2.2 */ + if (ipv6_addr_cmp(&ifp->addr, addr) == 0 + && (!(ifp->flags&IFA_F_TENTATIVE) || ifp->flags&IFA_F_OPTIMISTIC) + ) { if (dev == NULL || ifp->idev->dev == dev || !(ifp->scope&(IFA_LINK|IFA_HOST))) break; @@ -706,16 +757,53 @@ { if (net_ratelimit()) printk(KERN_INFO "%s: duplicate address detected!\n", ifp->idev->dev->name); - if (ifp->flags&IFA_F_PERMANENT) { + + + if (ifp->flags&IFA_F_PERMANENT && ifp->scope != IFA_LINK) { + ADBGDAD("Address Collision! -- giving up.", ifp->addr); + + spin_lock_bh(&ifp->lock); addrconf_del_timer(ifp); ifp->flags |= IFA_F_TENTATIVE; spin_unlock_bh(&ifp->lock); in6_ifa_put(ifp); - } else + } else { + ipv6_del_addr(ifp); + +/* draft-moore-ipv6-optimistic-dad 2.2.5 */ +#ifndef CONFIG_IPV6_DAD_RECOVERY + ADBGDAD("Address Collision! -- deleting address.", ifp->addr); +#else + /* pick a new random address and start DAD again */ + if (ifp->prefix_len <= 64) { + struct inet6_ifaddr *new_ifp; + struct in6_addr new_addr; + + ADBGDAD("Address Collision! -- recovering ...", ifp->addr); + memcpy( &new_addr, &(ifp->addr), sizeof(new_addr)); + ipv6_generate_eui64_random( new_addr.s6_addr + 8 ); + + new_ifp = ipv6_get_ifaddr(&new_addr, NULL); + + if (new_ifp || (new_ifp = ipv6_add_addr(ifp->idev, + &new_addr, 64, ifp->scope, ifp->flags))) + addrconf_mod_timer(new_ifp, AC_RETRY, 3 * HZ); + } else { + ADBGDAD("Can't recover for prefixes > 64 bit", ifp->addr); + } +#endif /* ndef CONFIG_IPV6_DAD_RECOVERY */ + + } } +static void addrconf_retry_timer(unsigned long data) +{ + struct inet6_ifaddr *ifp = (struct inet6_ifaddr *) data; + ADBGDAD("retrying with new address...", ifp->addr); + addrconf_dad_start(ifp); +} /* Join to solicited addr multicast group. */ @@ -744,6 +832,14 @@ static int ipv6_generate_eui64(u8 *eui, struct net_device *dev) { + + printk("ipv6_generate_eui64!\n"); + +#ifdef CONFIG_IPV6_SAA_RANDOM_ALWAYS + /* bit of a kludge ... always use a random suffix even + * the first time around */ + return ipv6_generate_eui64_random(eui); +#else switch (dev->type) { case ARPHRD_ETHER: case ARPHRD_FDDI: @@ -758,8 +854,60 @@ return 0; } return -1; +#endif +} + +/* draft-moore-ipv6-optimistic-dad 2.3.3 */ +static int ipv6_generate_eui64_random(u8 *eui) +{ + /* Generates a random suffix. */ + +#ifdef CONFIG_IPV6_SAA_RANDOM_BROKEN + + /* XXX this is an entirely broken random address generator + * specifically for testing rare collision cases with + * DAD. Using it in the field is a VERY BAD IDEA. */ + + static u16 notveryrandom = 0; + + eui[0] = 0xC0; + eui[1] = 0xFF; + eui[2] = 0xEE; + eui[3] = 0xC0; + eui[4] = 0xFF; + eui[5] = 0xEE; + /* only three actual values to choose from! + eui[6] = (u8) (((notveryrandom) % 3 ) + 1 ) * 0x11; + eui[7] = (u8) (((notveryrandom++) % 3 ) + 1 ) * 0x11; */ + eui[6] = 0x00; + eui[7] = (u8) (net_random() % 3) + 1; +#else + + /* net/core/utils.c:net_random() only carries around + * 64 bits of state, so I'm using drivers/char/random.c: + * get_random_bytes() as well. This is probably overkill! + */ + + get_random_bytes(eui,8); + + eui[0] ^= (u8) net_random(); + eui[1] ^= (u8) net_random(); + eui[2] ^= (u8) net_random(); + eui[3] ^= (u8) net_random(); + eui[4] ^= (u8) net_random(); + eui[5] ^= (u8) net_random(); + eui[6] ^= (u8) net_random(); + eui[7] ^= (u8) net_random(); +#endif + + /* draft-moore-ipv6-optimistic-dad 2.3.5 */ + /* XXX clear U and G bits as per RFC 2373 */ + eui[0] &= 0xFC; + + return 0; } + static int ipv6_inherit_eui64(u8 *eui, struct inet6_dev *idev) { int err = -1; @@ -902,7 +1050,7 @@ read_unlock_bh(&idev->lock); if (modified) addrconf_mipv6_pfxs_modified(pinfo, ifindex); - return 0; + return 0; /* 0: already exists */ } } @@ -926,7 +1074,7 @@ addrconf_mipv6_pfxs_modified(pinfo, ifindex); - return 0; + return 1; /* 1: newly added prefix */ } void addrconf_prefix_rcv(struct net_device *dev, u8 *opt, int len) @@ -939,6 +1087,8 @@ unsigned long rt_expires; struct inet6_dev *in6_dev; + ADBG(("addrconf prefix receive\n")); + pinfo = (struct prefix_info *) opt; if (len < sizeof(struct prefix_info)) { @@ -968,7 +1118,7 @@ if (in6_dev == NULL) { if (net_ratelimit()) - printk(KERN_DEBUG "addrconf: device %s not configured\n", dev->name); + ADBG(("addrconf: device %s not configured\n", dev->name)); return; } @@ -991,6 +1141,7 @@ rt = rt6_lookup(&pinfo->prefix, NULL, dev->ifindex, 1); if (rt && ((rt->rt6i_flags & (RTF_GATEWAY | RTF_DEFAULT)) == 0)) { + ADBG(("addrconf: rt = ok %s\n", dev->name)); if (rt->rt6i_flags&RTF_EXPIRES) { if (pinfo->onlink == 0 || valid_lft == 0) { ip6_del_rt(rt); @@ -1001,22 +1152,34 @@ } } else if (pinfo->onlink && valid_lft && addrconf_mipv6_approve_pfx_rt(&pinfo->prefix)) { + ADBG(("addrconf: on-link prefix %s\n", dev->name)); addrconf_prefix_route(&pinfo->prefix, pinfo->prefix_len, dev, rt_expires, RTF_ADDRCONF|RTF_EXPIRES); } + else{ + ADBG(("addrconf: not approved or not on-link %s\n", dev->name)); + } if (rt) dst_release(&rt->u.dst); /* Add this prefix to the list of prefixes on this interface */ - ipv6_add_prefix(in6_dev, pinfo); + /* sharkey: returns -1 for failure, 0 for exists, 1 for added */ + /* TODO GD choose path based on ipv6_add_prefix (w/around: <0) */ + /* if (ipv6_add_prefix(in6_dev, pinfo) != 1) { */ + if (ipv6_add_prefix(in6_dev, pinfo) < 0) { + in6_dev_put(in6_dev); + return; + } /* Try to figure out our local address for this prefix */ + ADBG(("addrconf: about to attempt autoconf %s\n", dev->name)); if (pinfo->autoconf && in6_dev->cnf.autoconf) { struct inet6_ifaddr * ifp; struct in6_addr addr; int plen; + ADBG(("addrconf: attempt autoconf %s\n", dev->name)); plen = pinfo->prefix_len >> 3; if (pinfo->prefix_len == 64) { @@ -1029,8 +1192,8 @@ goto ok; } if (net_ratelimit()) - printk(KERN_DEBUG "IPv6 addrconf: prefix with wrong length %d\n", - pinfo->prefix_len); + ADBG(("IPv6 addrconf: prefix with wrong length %d\n", + pinfo->prefix_len)); in6_dev_put(in6_dev); return; @@ -1040,12 +1203,14 @@ if (ifp == NULL && valid_lft) { /* Do not allow to create too much of autoconfigured - * addresses; this would be too easy way to crash kernel. + * addresses; this would be too easy way to crash kernel +. */ - if (ipv6_count_addresses(in6_dev) < IPV6_MAX_ADDRESSES) + if (ipv6_count_addresses(in6_dev) < IPV6_MAX_ADDRESSES){ ifp = ipv6_add_addr(in6_dev, &addr, pinfo->prefix_len, - addr_type&IPV6_ADDR_SCOPE_MASK, 0); - + addr_type&IPV6_ADDR_SCOPE_MASK, IFA_F_OPTIMISTIC); + ADBGDAD("Adding Optimistic Address\n",addr); + } if (ifp == NULL) { in6_dev_put(in6_dev); return; @@ -1062,6 +1227,7 @@ if (ifp) { int flags; + ADBG(("addrconf: autoconf found addr %s\n", dev->name)); spin_lock(&ifp->lock); ifp->valid_lft = valid_lft; ifp->prefered_lft = prefered_lft; @@ -1079,6 +1245,123 @@ in6_dev_put(in6_dev); } +#ifdef USE_IPV6_MOBILITY +/* SHARKEY :r addrconf.c.extra */ + + /* Configure up local home/care of addresses on */ + /* current interface (any intf if exists) */ + /* Required for HMIPv6 RCoA Configuration */ + + /* Install /128 routes to make sure we can reach */ + /* MAP/HA networks */ + /* */ + /* code adapted from ipv6_addr_add and */ + /* addrconf_prefix_recv */ + + /* TODO: uninstall ?? currently entries time out */ + /* set lifetime zero? */ + +int addrconf_mipv6(int ifindex, struct in6_addr *addr, __u32 lifetime, + int plen,int ack) +{ + struct rt6_info *rt; + int addr_type; + unsigned long rt_expires; + struct inet6_dev *in6_dev; + struct net_device *dev; + struct inet6_ifaddr * ifp; + + ASSERT_RTNL(); + + ADBG(("addrconf_mipv6\n")); + + dev = NULL; + + /* install local mipv6 addresses on dummy if */ + /* up and available */ + dev = __dev_get_by_name("dummy0"); + + if(dev) { + ADBG(("addrconf_mipv6: dev: %lx flags: %lx\n", + (unsigned long)dev , (unsigned long)dev->flags )); + } + /* if we don't already have a device */ + if (!(dev) && ((dev = __dev_get_by_index(ifindex)) == NULL)) + return -ENODEV; + + ADBG(("addrconf_mipv6: dev: %lx flags: %lx\n", + (unsigned long)dev , (unsigned long)dev->flags )); + + if (!(dev->flags&IFF_UP)) + return -ENETDOWN; + + if ((in6_dev = addrconf_add_dev(dev)) == NULL) + return -ENOBUFS; + + ADBG(("addrconf_mipv6: begin addrconf validation \n")); + ADBG(("%hx:%hx:%hx:%hx:%hx:%hx:%hx:%hx\n", + ntohs(addr->s6_addr16[0]), ntohs(addr->s6_addr16[1]), + ntohs(addr->s6_addr16[2]), ntohs(addr->s6_addr16[3]), + ntohs(addr->s6_addr16[4]), ntohs(addr->s6_addr16[5]), + ntohs(addr->s6_addr16[6]), ntohs(addr->s6_addr16[7]))); + + /* + * Validation checks ([ADDRCONF], page 19) + */ + + addr_type = ipv6_addr_type(addr); + + if (addr_type & (IPV6_ADDR_MULTICAST|IPV6_ADDR_LINKLOCAL)) + return -EADDRNOTAVAIL; + + /* configure the local interface */ + + ifp = ipv6_get_ifaddr(addr, NULL); + + if (ifp == NULL && lifetime) { + /* if ack, DAD already completed for RCoA/HOMEADDR */ + ifp = ipv6_add_addr(in6_dev, addr, plen, + addr_type&IPV6_ADDR_SCOPE_MASK, + (ack? 0 : IFA_F_TENTATIVE ) ); + + /* DAD must be done, but is NULL OP if */ + /* !(ifp->flags & IFA_F_TENTATIVE) */ + addrconf_dad_start(ifp); + } + + if (ifp && (! lifetime)) { + /* TODO: Check if the address is permanent */ + ipv6_del_addr(ifp); + ifp = NULL; + } + + if (ifp) { + int flags; + + spin_lock(&ifp->lock); + ifp->valid_lft = lifetime; + ifp->prefered_lft = lifetime; /* TODO: Check for DHAAD */ + ifp->tstamp = jiffies; + if(ack){ /* reset tentative if we receive a BAck */ + ifp->flags &= ~IFA_F_TENTATIVE; + } + flags = ifp->flags; + ifp->flags &= ~IFA_F_DEPRECATED; + spin_unlock(&ifp->lock); + + if (!(flags&IFA_F_TENTATIVE)) + ipv6_ifa_notify((flags&IFA_F_DEPRECATED) ? + 0 : RTM_NEWADDR, ifp); + in6_ifa_put(ifp); + } + in6_dev_put(in6_dev); + + return 0; +} + +/* /SHARKEY */ +#endif /* USE_IPV6_MOBILITY */ + int addrconf_pfx_adv_rcv(struct net_device *dev, struct prefix_info *pinfo, struct in6_addr *home_addr) { @@ -1088,6 +1371,8 @@ int addr_type; struct inet6_dev *in6_dev; + ADBG(("addrconf: addrconf_pfx_adv_rcv\n")); + addr_type = ipv6_addr_type(&pinfo->prefix); if (addr_type & (IPV6_ADDR_MULTICAST|IPV6_ADDR_LINKLOCAL)) @@ -1136,8 +1421,11 @@ ifp = ipv6_get_ifaddr(&addr, dev); if (ifp == NULL && valid_lft) { + + ADBGDAD("Adding Optimistic address\n", addr); + ifp = ipv6_add_addr(in6_dev, &addr, pinfo->prefix_len, - addr_type&IPV6_ADDR_SCOPE_MASK, 0); + addr_type&IPV6_ADDR_SCOPE_MASK, IFA_F_OPTIMISTIC); if (ifp == NULL) { in6_dev_put(in6_dev); @@ -1254,7 +1542,8 @@ scope = ipv6_addr_scope(pfx); - if ((ifp = ipv6_add_addr(idev, pfx, plen, scope, IFA_F_PERMANENT)) != NULL) { + /* XXX MANUALLY CONFIGURED ADDRESSES AREN'T MEANT TO BE OPTIMISTIC! */ + if ((ifp = ipv6_add_addr(idev, pfx, plen, scope, IFA_F_PERMANENT|IFA_F_OPTIMISTIC)) != NULL) { addrconf_dad_start(ifp); in6_ifa_put(ifp); return 0; @@ -1718,6 +2007,7 @@ dev = ifp->idev->dev; + ADBGDAD("Starting DAD", ifp->addr); addrconf_join_solict(dev, &ifp->addr); if (ifp->prefix_len != 128 && (ifp->flags&IFA_F_PERMANENT)) @@ -1737,17 +2027,74 @@ return; } + + + /* draft-moore-ipv6-optimistic-dad 2.2.2 ... */ + if (ifp->flags&IFA_F_OPTIMISTIC) { + + ADBGDAD("Configuring.", ifp->addr); + ipv6_ifa_notify(RTM_NEWADDR, ifp); + + addrconf_send_ns(ifp); + +#ifdef CONFIG_IPV6_NA_UNSOLICITED + addrconf_send_nas(ifp); +#endif + + if (ifp->idev->cnf.forwarding == 0 && + (dev->flags&IFF_LOOPBACK) == 0 && + (ipv6_addr_type(&ifp->addr) & IPV6_ADDR_LINKLOCAL)) { + + struct in6_addr all_routers; + ipv6_addr_all_routers(&all_routers); + + ndisc_send_rs(ifp->idev->dev, &ifp->addr, &all_routers); + } + + /* XXX it's not _meant_ to be 5 seconds! */ + ifp->probes = 5; /* ifp->idev->cnf.dad_transmits-1; */ + addrconf_mod_timer(ifp, AC_DAD, ifp->idev->nd_parms->retrans_time); + } else { + ifp->probes = ifp->idev->cnf.dad_transmits; addrconf_mod_timer(ifp, AC_DAD, rand_num); + } spin_unlock_bh(&ifp->lock); } +/* draft-moore-ipv6-optimistic-dad 2.1.2,3 */ +#ifdef CONFIG_IPV6_NA_UNSOLICITED +static void addrconf_send_nas(struct inet6_ifaddr *ifp) +{ + + struct in6_addr target_addr; + ipv6_addr_all_nodes(&target_addr); + + ADBGDAD( + (ifp->flags&IFA_F_TENTATIVE)?"Sending NA O=0":"Sending NA O=1", + ifp->addr + ); + + ndisc_send_na(ifp->idev->dev, NULL, &target_addr, &ifp->addr, + 0, 0, (ifp->flags & IFA_F_TENTATIVE)?0:1, 1); +} +#endif /* def CONFIG_IPV6_NA_UNSOLICITED */ + +static void addrconf_send_ns(struct inet6_ifaddr *ifp) +{ + struct in6_addr unspec, mcaddr; + + ADBGDAD("Sending NS", ifp->addr); + + memset(&unspec, 0, sizeof(unspec)); + addrconf_addr_solict_mult(&ifp->addr, &mcaddr); + ndisc_send_ns(ifp->idev->dev, NULL, &ifp->addr, &mcaddr, &unspec); +} + static void addrconf_dad_timer(unsigned long data) { struct inet6_ifaddr *ifp = (struct inet6_ifaddr *) data; - struct in6_addr unspec; - struct in6_addr mcaddr; spin_lock_bh(&ifp->lock); if (ifp->probes == 0) { @@ -1755,23 +2102,32 @@ * DAD was successful */ + ADBGDAD("Finished DAD.", ifp->addr); + ifp->flags &= ~IFA_F_TENTATIVE; spin_unlock_bh(&ifp->lock); + if (ifp->flags&IFA_F_OPTIMISTIC) { +#ifdef CONFIG_IPV6_NA_UNSOLICITED + addrconf_send_nas(ifp); + ifp->flags &= ~IFA_F_OPTIMISTIC; +#endif + } else { addrconf_dad_completed(ifp); + } + in6_ifa_put(ifp); return; } + ifp->probes--; + addrconf_mod_timer(ifp, AC_DAD, ifp->idev->nd_parms->retrans_time); spin_unlock_bh(&ifp->lock); - /* send a neighbour solicitation for our addr */ - memset(&unspec, 0, sizeof(unspec)); - addrconf_addr_solict_mult(&ifp->addr, &mcaddr); - ndisc_send_ns(ifp->idev->dev, NULL, &ifp->addr, &mcaddr, &unspec); + addrconf_send_ns(ifp); in6_ifa_put(ifp); } @@ -1784,8 +2140,14 @@ * Configure the address for reception. Now it is valid. */ + ADBGDAD("Configuring.", ifp->addr); + ipv6_ifa_notify(RTM_NEWADDR, ifp); +#ifdef CONFIG_IPV6_NA_UNSOLICITED + addrconf_send_nas(ifp); +#endif + /* If added prefix is link local and forwarding is off, start sending router solicitations. */ @@ -1811,6 +2173,7 @@ spin_unlock_bh(&ifp->lock); } } + #ifdef CONFIG_PROC_FS static int iface_proc_info(char *buffer, char **start, off_t offset, diff -rub --exclude=*.o --exclude=*.new --exclude=*.flags --exclude=*.map --exclude=.* --exclude=*.modded --exclude=*.old --exclude=sm_tbl_*h --exclude=modversions.h --exclude=config --exclude=gentbl --exclude=asm --exclude=lxdialog --exclude=mkdep --exclude=modules --exclude=split-include --exclude=version.h --exclude=autoconf.h --exclude=Makefile.test --new-file /home/gdaley/projects/mipv6-0.9.4/linux/net/ipv6/af_inet6.c /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/net/ipv6/af_inet6.c --- /home/gdaley/projects/mipv6-0.9.4/linux/net/ipv6/af_inet6.c Thu Oct 18 07:16:39 2001 +++ /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/net/ipv6/af_inet6.c Mon Apr 15 15:52:15 2002 @@ -7,7 +7,7 @@ * * Adapted from linux/net/ipv4/af_inet.c * - * $Id: af_inet6.c,v 1.65 2001/10/02 02:22:36 davem Exp $ + * $Id: af_inet6.c,v 1.1 2002/04/15 05:52:15 sharkey Exp $ * * Fixes: * piggy, Karl Knutson : Socket protocol table diff -rub --exclude=*.o --exclude=*.new --exclude=*.flags --exclude=*.map --exclude=.* --exclude=*.modded --exclude=*.old --exclude=sm_tbl_*h --exclude=modversions.h --exclude=config --exclude=gentbl --exclude=asm --exclude=lxdialog --exclude=mkdep --exclude=modules --exclude=split-include --exclude=version.h --exclude=autoconf.h --exclude=Makefile.test --new-file /home/gdaley/projects/mipv6-0.9.4/linux/net/ipv6/datagram.c /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/net/ipv6/datagram.c --- /home/gdaley/projects/mipv6-0.9.4/linux/net/ipv6/datagram.c Sat Sep 8 04:01:21 2001 +++ /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/net/ipv6/datagram.c Mon Apr 15 15:52:15 2002 @@ -5,7 +5,7 @@ * Authors: * Pedro Roque * - * $Id: datagram.c,v 1.23 2001/09/01 00:31:50 davem Exp $ + * $Id: datagram.c,v 1.1 2002/04/15 05:52:15 sharkey Exp $ * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License diff -rub --exclude=*.o --exclude=*.new --exclude=*.flags --exclude=*.map --exclude=.* --exclude=*.modded --exclude=*.old --exclude=sm_tbl_*h --exclude=modversions.h --exclude=config --exclude=gentbl --exclude=asm --exclude=lxdialog --exclude=mkdep --exclude=modules --exclude=split-include --exclude=version.h --exclude=autoconf.h --exclude=Makefile.test --new-file /home/gdaley/projects/mipv6-0.9.4/linux/net/ipv6/exthdrs.c /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/net/ipv6/exthdrs.c --- /home/gdaley/projects/mipv6-0.9.4/linux/net/ipv6/exthdrs.c Thu Aug 22 09:07:08 2002 +++ /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/net/ipv6/exthdrs.c Fri Nov 8 13:47:21 2002 @@ -7,7 +7,7 @@ * Andi Kleen * Alexey Kuznetsov * - * $Id: exthdrs.c,v 1.13 2001/06/19 15:58:56 davem Exp $ + * $Id: exthdrs.c,v 1.2 2002/11/08 02:47:21 gdaley Exp $ * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License diff -rub --exclude=*.o --exclude=*.new --exclude=*.flags --exclude=*.map --exclude=.* --exclude=*.modded --exclude=*.old --exclude=sm_tbl_*h --exclude=modversions.h --exclude=config --exclude=gentbl --exclude=asm --exclude=lxdialog --exclude=mkdep --exclude=modules --exclude=split-include --exclude=version.h --exclude=autoconf.h --exclude=Makefile.test --new-file /home/gdaley/projects/mipv6-0.9.4/linux/net/ipv6/icmp.c /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/net/ipv6/icmp.c --- /home/gdaley/projects/mipv6-0.9.4/linux/net/ipv6/icmp.c Thu Aug 22 09:07:08 2002 +++ /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/net/ipv6/icmp.c Wed Jun 25 11:01:56 2003 @@ -5,7 +5,7 @@ * Authors: * Pedro Roque * - * $Id: icmp.c,v 1.37 2001/09/18 22:29:10 davem Exp $ + * $Id: icmp.c,v 1.4 2003/06/25 01:01:56 gdaley Exp $ * * Based on net/ipv4/icmp.c * @@ -592,6 +592,8 @@ case NDISC_NEIGHBOUR_SOLICITATION: case NDISC_NEIGHBOUR_ADVERTISEMENT: case NDISC_REDIRECT: + case NDISC_DELEGATION_CHAIN_SOLICITATION: + case NDISC_DELEGATION_CHAIN_ADVERTISEMENT: if (skb_is_nonlinear(skb) && skb_linearize(skb, GFP_ATOMIC) != 0) { kfree_skb(skb); diff -rub --exclude=*.o --exclude=*.new --exclude=*.flags --exclude=*.map --exclude=.* --exclude=*.modded --exclude=*.old --exclude=sm_tbl_*h --exclude=modversions.h --exclude=config --exclude=gentbl --exclude=asm --exclude=lxdialog --exclude=mkdep --exclude=modules --exclude=split-include --exclude=version.h --exclude=autoconf.h --exclude=Makefile.test --new-file /home/gdaley/projects/mipv6-0.9.4/linux/net/ipv6/ip6_fib.c /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/net/ipv6/ip6_fib.c --- /home/gdaley/projects/mipv6-0.9.4/linux/net/ipv6/ip6_fib.c Thu Aug 22 09:07:08 2002 +++ /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/net/ipv6/ip6_fib.c Fri Nov 8 13:47:21 2002 @@ -5,7 +5,7 @@ * Authors: * Pedro Roque * - * $Id: ip6_fib.c,v 1.25 2001/10/31 21:55:55 davem Exp $ + * $Id: ip6_fib.c,v 1.4 2002/11/08 02:47:21 gdaley Exp $ * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License diff -rub --exclude=*.o --exclude=*.new --exclude=*.flags --exclude=*.map --exclude=.* --exclude=*.modded --exclude=*.old --exclude=sm_tbl_*h --exclude=modversions.h --exclude=config --exclude=gentbl --exclude=asm --exclude=lxdialog --exclude=mkdep --exclude=modules --exclude=split-include --exclude=version.h --exclude=autoconf.h --exclude=Makefile.test --new-file /home/gdaley/projects/mipv6-0.9.4/linux/net/ipv6/ip6_fw.c /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/net/ipv6/ip6_fw.c --- /home/gdaley/projects/mipv6-0.9.4/linux/net/ipv6/ip6_fw.c Sat Dec 22 04:42:05 2001 +++ /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/net/ipv6/ip6_fw.c Mon Apr 15 15:52:15 2002 @@ -5,7 +5,7 @@ * Authors: * Pedro Roque * - * $Id: ip6_fw.c,v 1.16 2001/10/31 08:17:58 davem Exp $ + * $Id: ip6_fw.c,v 1.1 2002/04/15 05:52:15 sharkey Exp $ * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License diff -rub --exclude=*.o --exclude=*.new --exclude=*.flags --exclude=*.map --exclude=.* --exclude=*.modded --exclude=*.old --exclude=sm_tbl_*h --exclude=modversions.h --exclude=config --exclude=gentbl --exclude=asm --exclude=lxdialog --exclude=mkdep --exclude=modules --exclude=split-include --exclude=version.h --exclude=autoconf.h --exclude=Makefile.test --new-file /home/gdaley/projects/mipv6-0.9.4/linux/net/ipv6/ip6_input.c /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/net/ipv6/ip6_input.c --- /home/gdaley/projects/mipv6-0.9.4/linux/net/ipv6/ip6_input.c Fri Apr 13 05:11:39 2001 +++ /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/net/ipv6/ip6_input.c Mon Apr 15 15:52:15 2002 @@ -6,7 +6,7 @@ * Pedro Roque * Ian P. Morris * - * $Id: ip6_input.c,v 1.19 2000/12/13 18:31:50 davem Exp $ + * $Id: ip6_input.c,v 1.1 2002/04/15 05:52:15 sharkey Exp $ * * Based in linux/net/ipv4/ip_input.c * diff -rub --exclude=*.o --exclude=*.new --exclude=*.flags --exclude=*.map --exclude=.* --exclude=*.modded --exclude=*.old --exclude=sm_tbl_*h --exclude=modversions.h --exclude=config --exclude=gentbl --exclude=asm --exclude=lxdialog --exclude=mkdep --exclude=modules --exclude=split-include --exclude=version.h --exclude=autoconf.h --exclude=Makefile.test --new-file /home/gdaley/projects/mipv6-0.9.4/linux/net/ipv6/ip6_output.c /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/net/ipv6/ip6_output.c --- /home/gdaley/projects/mipv6-0.9.4/linux/net/ipv6/ip6_output.c Thu Aug 22 09:07:08 2002 +++ /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/net/ipv6/ip6_output.c Fri Nov 8 13:47:21 2002 @@ -5,7 +5,7 @@ * Authors: * Pedro Roque * - * $Id: ip6_output.c,v 1.33 2001/09/20 00:35:35 davem Exp $ + * $Id: ip6_output.c,v 1.2 2002/11/08 02:47:21 gdaley Exp $ * * Based on linux/net/ipv4/ip_output.c * diff -rub --exclude=*.o --exclude=*.new --exclude=*.flags --exclude=*.map --exclude=.* --exclude=*.modded --exclude=*.old --exclude=sm_tbl_*h --exclude=modversions.h --exclude=config --exclude=gentbl --exclude=asm --exclude=lxdialog --exclude=mkdep --exclude=modules --exclude=split-include --exclude=version.h --exclude=autoconf.h --exclude=Makefile.test --new-file /home/gdaley/projects/mipv6-0.9.4/linux/net/ipv6/ipv6_sockglue.c /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/net/ipv6/ipv6_sockglue.c --- /home/gdaley/projects/mipv6-0.9.4/linux/net/ipv6/ipv6_sockglue.c Fri Sep 21 07:12:56 2001 +++ /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/net/ipv6/ipv6_sockglue.c Mon Apr 15 15:52:15 2002 @@ -7,7 +7,7 @@ * * Based on linux/net/ipv4/ip_sockglue.c * - * $Id: ipv6_sockglue.c,v 1.40 2001/09/18 22:29:10 davem Exp $ + * $Id: ipv6_sockglue.c,v 1.1 2002/04/15 05:52:15 sharkey Exp $ * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License diff -rub --exclude=*.o --exclude=*.new --exclude=*.flags --exclude=*.map --exclude=.* --exclude=*.modded --exclude=*.old --exclude=sm_tbl_*h --exclude=modversions.h --exclude=config --exclude=gentbl --exclude=asm --exclude=lxdialog --exclude=mkdep --exclude=modules --exclude=split-include --exclude=version.h --exclude=autoconf.h --exclude=Makefile.test --new-file /home/gdaley/projects/mipv6-0.9.4/linux/net/ipv6/ipv6_tunnel.c /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/net/ipv6/ipv6_tunnel.c --- /home/gdaley/projects/mipv6-0.9.4/linux/net/ipv6/ipv6_tunnel.c Thu Aug 22 09:07:08 2002 +++ /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/net/ipv6/ipv6_tunnel.c Fri Nov 8 13:47:21 2002 @@ -5,7 +5,7 @@ * Authors: * Ville Nuorvala * - * $Id: ipv6_tunnel.c,v 1.19 2002/08/19 07:43:22 ville Exp $ + * $Id: ipv6_tunnel.c,v 1.5 2002/11/08 02:47:21 gdaley Exp $ * * Based on: * linux/net/ipv6/sit.c @@ -50,6 +50,8 @@ #include #include +#define TUNNEL_DEBUG + #ifdef IPV6_TUNNEL_DEBUG #define IPV6_TNL_TRACE(x...) printk(KERN_DEBUG x) #else @@ -121,7 +123,7 @@ /* the IPv6 IPv6 fallback tunnel */ static struct ipv6_tnl ipv6_ipv6_fb_tnl = { dev:&ipv6_ipv6_fb_tnl_dev, - parms:{name: "ip6tnl0", proto:IPPROTO_IPV6} + parms:{name: "ip6tnl0", proto:IPPROTO_IPV6 } }; /* lists for storing tunnels in use */ @@ -149,6 +151,21 @@ /* flag indicating if the module is being removed */ static int shutdown = 0; +#ifdef TUNNEL_DEBUG + +static void print_in6_addr(char *label, struct in6_addr *addr) +{ + printk("%s: %x:%x:%x:%x:%x:%x:%x:%x,\n", + label, ntohs(addr->s6_addr16[0]), + ntohs(addr->s6_addr16[1]), ntohs(addr->s6_addr16[2]), + ntohs(addr->s6_addr16[3]), ntohs(addr->s6_addr16[4]), + ntohs(addr->s6_addr16[5]), ntohs(addr->s6_addr16[6]), + ntohs(addr->s6_addr16[7])); +} + +#endif + + /** * ipv6_ipv6_tnl_lookup - fetch tunnel matching the end-point addresses * @remote: the address of the tunnel exit-point @@ -213,7 +230,7 @@ * ipv6_ipv6_kernel_tnl_link - add new kernel tunnel to cache * @t: kernel tunnel * - * Note: + * Caveat: * %IPV6_TNL_F_KERNEL_DEV is assumed to be raised in t->parms.flags. * See the comments on ipv6_ipv6_kernel_tnl_add() for more information. **/ @@ -950,6 +967,9 @@ read_unlock(&ipv6_ipv6_lock); return 0; } +#ifdef TUNNEL_DEBUG + printk(KERN_DEBUG "ipv6_ipv6_rcv: lookup failed\n"); +#endif icmpv6_send(skb, ICMPV6_DEST_UNREACH, ICMPV6_ADDR_UNREACH, 0, skb->dev); drop_packet: kfree_skb(skb); diff -rub --exclude=*.o --exclude=*.new --exclude=*.flags --exclude=*.map --exclude=.* --exclude=*.modded --exclude=*.old --exclude=sm_tbl_*h --exclude=modversions.h --exclude=config --exclude=gentbl --exclude=asm --exclude=lxdialog --exclude=mkdep --exclude=modules --exclude=split-include --exclude=version.h --exclude=autoconf.h --exclude=Makefile.test --new-file /home/gdaley/projects/mipv6-0.9.4/linux/net/ipv6/mcast.c /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/net/ipv6/mcast.c --- /home/gdaley/projects/mipv6-0.9.4/linux/net/ipv6/mcast.c Wed Aug 15 18:54:24 2001 +++ /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/net/ipv6/mcast.c Mon Apr 15 15:52:15 2002 @@ -5,7 +5,7 @@ * Authors: * Pedro Roque * - * $Id: mcast.c,v 1.38 2001/08/15 07:36:31 davem Exp $ + * $Id: mcast.c,v 1.1 2002/04/15 05:52:15 sharkey Exp $ * * Based on linux/ipv4/igmp.c and linux/ipv4/ip_sockglue.c * diff -rub --exclude=*.o --exclude=*.new --exclude=*.flags --exclude=*.map --exclude=.* --exclude=*.modded --exclude=*.old --exclude=sm_tbl_*h --exclude=modversions.h --exclude=config --exclude=gentbl --exclude=asm --exclude=lxdialog --exclude=mkdep --exclude=modules --exclude=split-include --exclude=version.h --exclude=autoconf.h --exclude=Makefile.test --new-file /home/gdaley/projects/mipv6-0.9.4/linux/net/ipv6/mipglue.c /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/net/ipv6/mipglue.c --- /home/gdaley/projects/mipv6-0.9.4/linux/net/ipv6/mipglue.c Thu Aug 22 09:07:08 2002 +++ /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/net/ipv6/mipglue.c Fri Nov 8 13:47:21 2002 @@ -4,7 +4,7 @@ * Authors: * Antti Tuominen * - * $Id: mipglue.c,v 1.5 2002/08/15 20:17:59 ville Exp $ + * $Id: mipglue.c,v 1.2 2002/11/08 02:47:21 gdaley Exp $ * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License diff -rub --exclude=*.o --exclude=*.new --exclude=*.flags --exclude=*.map --exclude=.* --exclude=*.modded --exclude=*.old --exclude=sm_tbl_*h --exclude=modversions.h --exclude=config --exclude=gentbl --exclude=asm --exclude=lxdialog --exclude=mkdep --exclude=modules --exclude=split-include --exclude=version.h --exclude=autoconf.h --exclude=Makefile.test --new-file /home/gdaley/projects/mipv6-0.9.4/linux/net/ipv6/mobile_ip6/Config.in /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/net/ipv6/mobile_ip6/Config.in --- /home/gdaley/projects/mipv6-0.9.4/linux/net/ipv6/mobile_ip6/Config.in Thu Aug 22 09:07:08 2002 +++ /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/net/ipv6/mobile_ip6/Config.in Tue Apr 1 10:59:00 2003 @@ -3,5 +3,8 @@ if [ "$CONFIG_IPV6_MOBILITY" = "m" ]; then bool ' MIPv6: AH Support' CONFIG_IPV6_MOBILITY_AH bool ' MIPv6: Debug messages' CONFIG_IPV6_MOBILITY_DEBUG + bool ' Hierarchical Mobile IPv6 (HMIPv6)' CONFIG_IPV6_MOBILITY_HMIPV6 + bool ' Never send RS on L2 UP Trigger' CONFIG_IPV6_MOBILITY_NORSONL2UP fi fi + bool ' IPv6: Accept Unsolicited Neighbour Advertisements (EXPERIMENTAL)' CONFIG_IPV6_ACCEPT_UNSOL_NA diff -rub --exclude=*.o --exclude=*.new --exclude=*.flags --exclude=*.map --exclude=.* --exclude=*.modded --exclude=*.old --exclude=sm_tbl_*h --exclude=modversions.h --exclude=config --exclude=gentbl --exclude=asm --exclude=lxdialog --exclude=mkdep --exclude=modules --exclude=split-include --exclude=version.h --exclude=autoconf.h --exclude=Makefile.test --new-file /home/gdaley/projects/mipv6-0.9.4/linux/net/ipv6/mobile_ip6/Makefile /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/net/ipv6/mobile_ip6/Makefile --- /home/gdaley/projects/mipv6-0.9.4/linux/net/ipv6/mobile_ip6/Makefile Thu Aug 22 09:07:08 2002 +++ /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/net/ipv6/mobile_ip6/Makefile Tue Aug 27 08:57:03 2002 @@ -14,6 +14,7 @@ sendopts.o stats.o access.o sysctl.o router.o \ dhaad.o halist.o ioctl.o util.o sadb.o ah_algo.o \ auth_subopt.o multiaccess_ctl.o mipv6_icmp.o \ + hierarchy.o map.o rcoa.o \ sortedlist.o prefix.o ifeq ($(CONFIG_IPV6_MOBILITY_DEBUG),y) diff -rub --exclude=*.o --exclude=*.new --exclude=*.flags --exclude=*.map --exclude=.* --exclude=*.modded --exclude=*.old --exclude=sm_tbl_*h --exclude=modversions.h --exclude=config --exclude=gentbl --exclude=asm --exclude=lxdialog --exclude=mkdep --exclude=modules --exclude=split-include --exclude=version.h --exclude=autoconf.h --exclude=Makefile.test --new-file /home/gdaley/projects/mipv6-0.9.4/linux/net/ipv6/mobile_ip6/TODO.hmip6 /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/net/ipv6/mobile_ip6/TODO.hmip6 --- /home/gdaley/projects/mipv6-0.9.4/linux/net/ipv6/mobile_ip6/TODO.hmip6 Thu Aug 22 09:21:47 2002 +++ /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/net/ipv6/mobile_ip6/TODO.hmip6 Wed Aug 7 10:48:56 2002 @@ -0,0 +1,191 @@ +# HMIPv6 Release 0.2 Change/Issue List + +20020318: When MAP receives binding update for MN's Home Address with + same RCoA as is bound by MAP on MN's behalf, packets are not + sent back to MN. + + Guess: binding table points to a local address (RCoA). + No second lookup being done on RCoA/AltCoA + First packet is returned before Bcache is updated and + doesn't go out dummy0. + + This occurs if communication is performed to another interface + on the map than the MAP Global Address. + + ACTION: 20021803 : wait until mergedown to MIPL CVS and retest. + procrcv.c is in flux. + ACTION: 2002-06-11: BU's not being sent to CNs. Wait for fix to + that issue before getting recursive BCache Lookups. + ACTION: 2002-07-04: BU's to CN's working. + recursive bcache lookups scheduled for 0.4 Release/Extended. +-------------------------------------------------------------------- + + +20020318: continuous router solicitation after mobile_ip6 module + loaded on MN + + After binding update, router solicitations are received continually. + + CAUSE: If no r_adv received within 6 seconds, send RS + Does not occur when max interval between r_adv is 3 seconds + + Function as designed. Checked in CVS MIPL. (same). + +----------------------------------------------------------------------- + + +2002-03-18: changing prefix on the same router (same LL address) does not + stimulate binding update to MAP + Guess: looks like interval timer is being ignored + try without link address + still same effect w/o link address + Analysis: looks like RA source address (link local) used for RADV + Need to use this and prefix + Action: Test again under MIPL CVS + RESULT 2002-07-04 No BU sent in HMIPL-0.9.3 + +------------------------------------------------------------------------- + + +2002-03-25: + BUs to previous MAPs when PBit is set do not contain RCoA: + effectively means previous MAP forwards to LCoA + Severity: Medium. + Guess: need to set case to be if (MapBu && MAP == current) + skip packet rewriting (currently if MapBu) + Action: modify for this release. + FIXED: 2002-06-11 BU to previous MAP uses RCoA if not current. + +------------------------------------------------------------------------- + + +2002-03-25: + + Incorrect reporting of CoA when Bu to HA in MAP coverage with + P bit set. the CoA effectively is the RCoA since the HA never + sees LCoA. (outbound packets are re-written). + Guess: + the same will happen with BUs to old MAPs and CNs. + Severity: Low. + Action: modify interface or modify bulist to know the effective + coa. + FIXED 2002-06-06 BUlist now refers to RCoA. + +------------------------------------------------------------------------- + + +2002-03-26: + Losing Binding updates after many renewals. + Unsure if BAcks are being received. + Guess: BUL is not rescheduling + Severity: Medium + Action: check after release, CVS diff r1.1, and also check under new + MIPL + Looks like using default BU lifetime instead of one received + in BAck or in RA. + 2002-05-15: fixed 2.4.16 m14/h5 needs update in m15/h5 + FIXED 2002-06-11 with new rebinding/timing code. + +------------------------------------------------------------------------- + + +2002-04-09: + Sending Binding Updates (with MAP) to MAP/HA/CN only + at DEFAULT_MAP_LIFETIME + needs to be ( min3(HA Lifetime, CN Lifetime, MAP BU lifetime) !! + or granted lifetime? + FIXED (2002-06-03 for MAPs) + Need to incorporate changes for CN/HA's into bug from 2002-05-08 + ACTION 2002-07-09: test for fix + +------------------------------------------------------------------------- + + +2002-05-23: + Not binding updating MAP on movement when it is acting as a CN. + (i.e. you are pinging the MAP when you move, BCache on MAP i + s not being updated) + Guess: general correspondent node issues when RCoA changes + Severity: Medium + Action: check after mergedown. + Findings: CN code deficient. other issues may exist on MAPs. + FIXED: 2002-07-04 ALL BU's being sent. callbacks working. + +------------------------------------------------------------------------- + + +2002-05-28: + Need to use granted lifetime of MAP to ensure BU's do not exceed + MAP lifetimes (hmip6-05 sec 6.1) + + use in BUL when sending bindupdates. + FIXED: 2002-06-11 All except Old MAP BU's, since this is not + covered in standard. Old MAP bu using default map lifetime. + +------------------------------------------------------------------------- + + +2002-06-11: + Discovered that no BU is sent to CN upon reception of packets + in HMIPv6 Mode. + Guess: no correspondent node bindings going out. + Action: Check packet recpetion routines after mergedown. + FIXED in MIPL 0.9.3 + +-------------------------------------------------------------------------- + + +2002-07-04: + MAP crashes after receiving binding update on mobile_ip6 + module restart. + It looks like a binding ack packet is being received on + tap0 before the MAP fails. + GUESS: tunnel state inconsistent after unload/reload of + mobile_ip6 module. + ACTION: investigate tap2/tap0 packet interaction. + DIAGNOSIS: ipv6tunnel output indicated that tunnels were + still present after mobile-ip6 module unloading. + also, on MAP ipv6_tunnel module was still loaded + while on HA it was unloaded. + FIXED 2002-07-08: bcache unloading failed to remove tunnel + for type BASIC_MAP. + +-------------------------------------------------------------------------- + + +2002-07-04: + After moving out of MAP cover, tunnels not reestablished to LCoA. + guess: Not removing old tunnels. + FIXED 2002-07-04: MAP tunnels now removed. + +-------------------------------------------------------------------- + + +2002-07-04: + Incorrect RCoA sent in MAP BU. + + DIAGNOSIS: + Occurs when map callback occurs and there is no valid router. + WORKAROUND 2002-07-04: return -1 from mn_get_care_of_address when + ipv6_get_lladdr fails. this is done after the processing of + the coa, to mask this change from calls which aren't checking + the return value of mipv6_get_care_of_address !! + ACTION: Monitor for introduced bugs. + +--------------------------------------------------------------------------- + + +2002-07-22: + Incorrect BU lifetime for CN with pre-exisiting binding. + HA is OK. + + binding exists before HMIPv6 MAP gc is called back. + + Also true if bul entry expires and ping6 cn is issued. + GUESS: + MAP handoff routing is not setting the binding timer to less than + MAP lifetime. + DIAGNOSIS: initialization of BU to CN didn't consider MAP + FIXED 2002-07-22 + + diff -rub --exclude=*.o --exclude=*.new --exclude=*.flags --exclude=*.map --exclude=.* --exclude=*.modded --exclude=*.old --exclude=sm_tbl_*h --exclude=modversions.h --exclude=config --exclude=gentbl --exclude=asm --exclude=lxdialog --exclude=mkdep --exclude=modules --exclude=split-include --exclude=version.h --exclude=autoconf.h --exclude=Makefile.test --new-file /home/gdaley/projects/mipv6-0.9.4/linux/net/ipv6/mobile_ip6/TODO.hmip6.detail /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/net/ipv6/mobile_ip6/TODO.hmip6.detail --- /home/gdaley/projects/mipv6-0.9.4/linux/net/ipv6/mobile_ip6/TODO.hmip6.detail Thu Jan 1 10:00:00 1970 +++ /home/gdaley/projects/hmipv6-0.9.4-ilc/linux/net/ipv6/mobile_ip6/TODO.hmip6.detail Wed Aug 7 10:41:45 2002 @@ -0,0 +1,967 @@ + + + +# BUGS: + +20020318: When MAP receives binding update for MN's Home Address with + same RCoA as is bound by MAP on MN's behalf, packets are not + sent back to MN. + + Guess: binding table points to a local address (RCoA). + No second lookup being done on RCoA/AltCoA + First packet is returned before Bcache is updated and + doesn't go out dummy0. + + ACTION: 20021803 : wait until mergedown to MIPL CVS and retest. + procrcv.c is in flux. + ACTION: 2002-06-11: BU's not being sent to CNs. Wait for fix to + that issue before getting recursive BCache Lookups. + ACTION: 2002-07-04: BU's to CN's working. + recursive bcache lookups scheduled for 0.4 Release/Extended. + +map1:~# mipdiag -c +Mobile IPv6 Binding cache +Home Address Care-of Address Lifetime Type +3ffe:8001:12:f88:fcfd:aff:fe01:203 3ffe:8001:12:c88:fcfd:aff:fe01:203 373 4 +map1:~# + +map1:~# tethereal -n -ta -s 1600 -i dummy0 +Warning: Couldn't obtain netmask info (dummy0: no IPv4 address assigned) +.Capturing on dummy0 +00:15:26.1596 3ffe:8001:12:a88::2 -> 3ffe:8001:12:f88:fcfd:aff:fe01:203 ICMPv6 Echo reply +00:15:27.1596 3ffe:8001:12:a88::2 -> 3ffe:8001:12:f88:fcfd:aff:fe01:203 ICMPv6 Echo reply +00:15:28.1596 3ffe:8001:12:a88::2 -> 3ffe:8001:12:f88:fcfd:aff:fe01:203 ICMPv6 Echo reply +00:15:29.1596 3ffe:8001:12:a88::2 -> 3ffe:8001:12:f88:fcfd:aff:fe01:203 ICMPv6 Echo reply +00:15:31.1097 3ffe:8001:12:a88::2 -> 3ffe:8001:12:f88:fcfd:aff:fe01:203 ICMPv6 Echo reply +00:15:32.1097 3ffe:8001:12:a88::2 -> 3ffe:8001:12:f88:fcfd:aff:fe01:203 ICMPv6 Echo reply +00:15:34.0596 3ffe:8001:12:a88::2 -> 3ffe:8001:12:f88:fcfd:aff:fe01:203 ICMPv6 Echo reply + +map1:~# mipdiag -c +Mobile IPv6 Binding cache +Home Address Care-of Address Lifetime Type +3ffe:8001:12:a88::3 3ffe:8001:12:f88:fcfd:aff:fe01:203 38 1 +3ffe:8001:12:f88:fcfd:aff:fe01:203 3ffe:8001:12:c88:fcfd:aff:fe01:203 321 4 +map1:~# + +-------------------------------------------------------------------- + +20020318: continuous router solicitation after mobile_ip6 module + loaded on MN + + After binding update, router solicitations are received continually for + +map1:~# tethereal -n -s 1600 -i eth2 ip6 +Capturing on eth2 + 0.000000 fe80::fcfd:aff:fe01:202 -> ff02::1 ICMPv6 Router advertisement + 3.249990 fe80::fcfd:aff:fe01:202 -> ff02::1 ICMPv6 Router advertisement + 13.199982 fe80::fcfd:aff:fe01:202 -> ff02::1 ICMPv6 Router advertisement + 19.750004 fe80::fcfd:aff:fe01:202 -> ff02::1 ICMPv6 Router advertisement + 27.199988 fe80::fcfd:aff:fe01:202 -> ff02::1 ICMPv6 Router advertisement + 35.499981 fe80::fcfd:aff:fe01:202 -> ff02::1 ICMPv6 Router advertisement + 35.499981 3ffe:8001:12:c88:fcfd:aff:fe01:203 -> 3ffe:8001:12:a88::5 IPv6 Mobile IPv6 Destination Option + 35.499981 fe80::fcfd:aff:fe01:202 -> ff02::1:ff01:203 ICMPv6 Neighbor solicitation + 35.557737 3ffe:8001:12:c88:fcfd:aff:fe01:203 -> fe80::fcfd:aff:fe01:202 ICMPv6 Neighbor advertisement + 35.557737 3ffe:8001:12:a88::5 -> 3ffe:8001:12:c88:fcfd:aff:fe01:203 IPv6 Mobile IPv6 Destination Option + 36.049986 3ffe:8001:12:f88:fcfd:aff:fe01:203 -> 3ffe:8001:12:f88::2 IPv6 Mobile IPv6 Destination Option + 36.050000 3ffe:8001:12:f88::2 -> 3ffe:8001:12:c88:fcfd:aff:fe01:203 IPv6 Mobile IPv6 Destination Option + 36.100000 3ffe:8001:12:c88:fcfd:aff:fe01:203 -> 3ffe:8001:12:a88::5 IPv6 Mobile IPv6 Destination Option + 36.099996 3ffe:8001:12:a88::5 -> 3ffe:8001:12:f88:fcfd:aff:fe01:203 IPv6 Mobile IPv6 Destination Option + 40.499982 fe80::fcfd:aff:fe01:202 -> ff02::1 ICMPv6 Router advertisement + 45.949982 fe80::fcfd:aff:fe01:202 -> ff02::1 ICMPv6 Router advertisement + 51.999984 fe80::fcfd:aff:fe01:203 -> ff02::2 ICMPv6 Router solicitation + 51.999984 fe80::fcfd:aff:fe01:202 -> ff02::1 ICMPv6 Router advertisement + 58.199983 fe80::fcfd:aff:fe01:203 -> ff02::2 ICMPv6 Router solicitation + 58.199983 fe80::fcfd:aff:fe01:202 -> ff02::1 ICMPv6 Router advertisement + 61.299977 fe80::fcfd:aff:fe01:202 -> ff02::1 ICMPv6 Router advertisement + 64.549981 fe80::fcfd:aff:fe01:202 -> ff02::1 ICMPv6 Router advertisement + 70.699992 fe80::fcfd:aff:fe01:203 -> ff02::2 ICMPv6 Router solicitation + 70.699992 fe80::fcfd:aff:fe01:202 -> ff02::1 ICMPv6 Router advertisement + + + + +restarted with shorter interval + +map1:~# tethereal -n -s 1600 -i eth2 ip6 +Capturing on eth2 + 0.000000 fe80::fcfd:aff:fe01:202 -> ff02::1 ICMPv6 Router advertisement + 2.949986 fe80::fcfd:aff:fe01:202 -> ff02::1 ICMPv6 Router advertisement + 3.750001 fe80::fcfd:aff:fe01:202 -> ff02::1 ICMPv6 Router advertisement + 6.649996 fe80::fcfd:aff:fe01:202 -> ff02::1 ICMPv6 Router advertisement + 8.691388 fe80::fcfd:aff:fe01:202 -> ff02::1 ICMPv6 Router advertisement + 9.350027 fe80::fcfd:aff:fe01:202 -> ff02::1 ICMPv6 Router advertisement + 11.700064 fe80::fcfd:aff:fe01:202 -> ff02::1 ICMPv6 Router advertisement + 12.900063 fe80::fcfd:aff:fe01:202 -> ff02::1 ICMPv6 Router advertisement + 15.650084 fe80::fcfd:aff:fe01:202 -> ff02::1 ICMPv6 Router advertisement + 18.050074 fe80::fcfd:aff:fe01:202 -> ff02::1 ICMPv6 Router advertisement + 19.400063 fe80::fcfd:aff:fe01:202 -> ff02::1 ICMPv6 Router advertisement + 20.200015 fe80::fcfd:aff:fe01:202 -> ff02::1 ICMPv6 Router advertisement + 21.500000 fe80::fcfd:aff:fe01:203 -> ff02::2 ICMPv6 Router solicitation + 21.500000 fe80::fcfd:aff:fe01:202 -> ff02::1:ff01:203 ICMPv6 Neighbor solicitation + 21.500000 fe80::fcfd:aff:fe01:203 -> fe80::fcfd:aff:fe01:202 ICMPv6 Neighbor advertisement + 21.500000 fe80::fcfd:aff:fe01:202 -> fe80::fcfd:aff:fe01:203 ICMPv6 Router advertisement + 21.515111 3ffe:8001:12:c88:fcfd:aff:fe01:203 -> 3ffe:8001:12:a88::5 IPv6 Mobile IPv6 Destination Option + 21.515111 fe80::fcfd:aff:fe01:202 -> ff02::1:ff01:203 ICMPv6 Neighbor solicitation + 21.586634 3ffe:8001:12:c88:fcfd:aff:fe01:203 -> fe80::fcfd:aff:fe01:202 ICMPv6 Neighbor advertisement + 21.586634 3ffe:8001:12:a88::5 -> 3ffe:8001:12:c88:fcfd:aff:fe01:203 IPv6 Mobile IPv6 Destination Option + 22.950055 fe80::fcfd:aff:fe01:202 -> ff02::1 ICMPv6 Router advertisement + 23.599989 3ffe:8001:12:f88:fcfd:aff:fe01:203 -> 3ffe:8001:12:f88::2 IPv6 Mobile IPv6 Destination Option + 23.599989 3ffe:8001:12:f88::2 -> 3ffe:8001:12:c88:fcfd:aff:fe01:203 IPv6 Mobile IPv6 Destination Option + 23.650020 3ffe:8001:12:c88:fcfd:aff:fe01:203 -> 3ffe:8001:12:a88::5 IPv6 Mobile IPv6 Destination Option + 23.650020 3ffe:8001:12:a88::5 -> 3ffe:8001:12:f88:fcfd:aff:fe01:203 IPv6 Mobile IPv6 Destination Option + 24.599994 :: -> ff02::1:ff01:203 ICMPv6 Neighbor solicitation + 25.299978 fe80::fcfd:aff:fe01:202 -> ff02::1 ICMPv6 Router advertisement + 28.099982 fe80::fcfd:aff:fe01:202 -> ff02::1 ICMPv6 Router advertisement + 29.949991 fe80::fcfd:aff:fe01:202 -> ff02::1 ICMPv6 Router advertisement + 32.849998 fe80::fcfd:aff:fe01:202 -> ff02::1 ICMPv6 Router advertisement + 33.799983 fe80::fcfd:aff:fe01:202 -> ff02::1 ICMPv6 Router advertisement + 35.449986 fe80::fcfd:aff:fe01:202 -> ff02::1 ICMPv6 Router advertisement + 38.050002 fe80::fcfd:aff:fe01:202 -> ff02::1 ICMPv6 Router advertisement + 39.150031 fe80::fcfd:aff:fe01:202 -> ff02::1 ICMPv6 Router advertisement + 41.649997 fe80::fcfd:aff:fe01:202 -> ff02::1 ICMPv6 Router advertisement + 43.049994 fe80::fcfd:aff:fe01:202 -> ff02::1 ICMPv6 Router advertisement + 45.399989 fe80::fcfd:aff:fe01:202 -> ff02::1 ICMPv6 Router advertisement + 46.599992 fe80::fcfd:aff:fe01:202 -> ff02::1 ICMPv6 Router advertisement + 48.849982 fe80::fcfd:aff:fe01:202 -> ff02::1 ICMPv6 Router advertisement + 51.399992 fe80::fcfd:aff:fe01:202 -> ff02::1 ICMPv6 Router advertisement + 52.049990 fe80::fcfd:aff:fe01:202 -> ff02::1 ICMPv6 Router advertisement + 52.749983 fe80::fcfd:aff:fe01:202 -> ff02::1 ICMPv6 Router advertisement + 54.999980 fe80::fcfd:aff:fe01:202 -> ff02::1 ICMPv6 Router advertisement + 57.949982 fe80::fcfd:aff:fe01:202 -> ff02::1 ICMPv6 Router advertisement + 59.600065 fe80::fcfd:aff:fe01:202 -> ff02::1 ICMPv6 Router advertisement + + +mdetect.h:#define MAX_RADV_INTERVAL 6*HZ /* Spec says max is 1800, but... */ + + If no r_adv received within 6 seconds, send RS + Does not occur when max interval between r_adv is 3 seconds + + Function as designed. + + Check in CVS MIPL. (same). +----------------------------------------------------------------------- + + +2002-03-18: changing prefix on the same router (same LL address) does not + stimulate binding update to MAP + Guess: looks like interval timer is being ignored + try without link address + still same effect w/o link address + Analysis: looks like RA source address (link local) used for RADV + Need to use this and prefix + Action: Test again under MIPL CVS + RESULT 2002-07-04 No BU sent in HMIPL-0.9.3 + + + +Frame 1 (142 on wire, 142 captured) + Arrival Time: Mar 18, 2002 06:46:44.389709000 + Time delta from previous packet: 0.000000000 seconds + Time relative to first packet: 0.000000000 seconds + Frame Number: 1 + Packet Length: 142 bytes + Capture Length: 142 bytes +Ethernet II + Destination: 33:33:00:00:00:01 (33:33:00:00:00:01) + Source: fe:fd:0a:01:02:02 (fe:fd:0a:01:02:02) + Type: IPv6 (0x86dd) +Internet Protocol Version 6 + Version: 6 + Traffic class: 0x00 + Flowlabel: 0x00000 + Payload length: 88 + Next header: ICMPv6 (0x3a) + Hop limit: 255 + Source address: fe80::fcfd:aff:fe01:202 (fe80::fcfd:aff:fe01:202) + Destination address: ff02::1 (ff02::1) +Internet Control Message Protocol v6 + Type: 134 (Router advertisement) + Code: 0 + Checksum: 0x430c (correct) + Cur hop limit: 64 + Flags: 0x00 + 0... .... = Not managed + .0.. .... = Not other + ..0. .... = Not Home Agent + ...0 0... = Router preference: Medium + Router lifetime: 200 + Reachable time: 0 + Retrans time: 0 + ICMPv6 options + Type: 3 (Prefix information) + Length: 32 bytes (4) + Prefix length: 64 + Flags: 0xe0 + 1... .... = Onlink + .1.. .... = Auto + ..1. .... = Router Address + ...0 .... = Not site prefix + Valid lifetime: 0x00000258 + Preferred lifetime: 0x00000258 + Prefix: 3ffe:8001:12:c88::2 + ICMPv6 options + Type: 1 (Source link-layer address) + Length: 8 bytes (1) + Link-layer address: fe:fd:0a:01:02:02 + ICMPv6 options + Type: 7 (Advertisement Interval) + Length: 8 bytes (1) + Advertisement Interval: 6000 + ICMPv6 options + Type: 201 (HMIPv6 MAP option) + Length: 24 bytes (3) + Distance: 1 + Preference: 7 + Flags: 0x80 + 1... .... = R + .0.. .... = No M + ..0. .... = No I + ...0 .... = No T + .... 0... = No P + .... .0.. = No V + Lifetime: 80 + Address of MAP: 3ffe:8001:12:f88::2 (3ffe:8001:12:f88::2) + +Frame 2 (142 on wire, 142 captured) + Arrival Time: Mar 18, 2002 06:46:48.139699000 + Time delta from previous packet: 3.749990000 seconds + Time relative to first packet: 3.749990000 seconds + Frame Number: 2 + Packet Length: 142 bytes + Capture Length: 142 bytes +Ethernet II + Destination: 33:33:00:00:00:01 (33:33:00:00:00:01) + Source: fe:fd:0a:01:02:02 (fe:fd:0a:01:02:02) + Type: IPv6 (0x86dd) +Internet Protocol Version 6 + Version: 6 + Traffic class: 0x00 + Flowlabel: 0x00000 + Payload length: 88 + Next header: ICMPv6 (0x3a) + Hop limit: 255 + Source address: fe80::fcfd:aff:fe01:202 (fe80::fcfd:aff:fe01:202) + Destination address: ff02::1 (ff02::1) +Internet Control Message Protocol v6 + Type: 134 (Router advertisement) + Code: 0 + Checksum: 0x430c (correct) + Cur hop limit: 64 + Flags: 0x00 + 0... .... = Not managed + .0.. .... = Not other + ..0. .... = Not Home Agent + ...0 0... = Router preference: Medium + Router lifetime: 200 + Reachable time: 0 + Retrans time: 0 + ICMPv6 options + Type: 3 (Prefix information) + Length: 32 bytes (4) + Prefix length: 64 + Flags: 0xe0 + 1... .... = Onlink + .1.. .... = Auto + ..1. .... = Router Address + ...0 .... = Not site prefix + Valid lifetime: 0x00000258 + Preferred lifetime: 0x00000258 + Prefix: 3ffe:8001:12:c88::2 + ICMPv6 options + Type: 1 (Source link-layer address) + Length: 8 bytes (1) + Link-layer address: fe:fd:0a:01:02:02 + ICMPv6 options + Type: 7 (Advertisement Interval) + Length: 8 bytes (1) + Advertisement Interval: 6000 + ICMPv6 options +