Class E IP Address Configuration Today ifconfig does not allow the configuration of addresses in the Class E range. For instance the following ifconfig commands fail : #ifconfig bge0 251.1.2.3/24 ifconfig: SIOCSLIFADDR: bge0: Cannot assign requested address # ifconfig ce0 248.53.129.24 up ifconfig: SIOCSLIFADDR: ce0: Cannot assign requested address In light of Internet draft, draft-fuller-240space-00.txt, the above command should be allowed (see CR 6605607.) Note that the draft does not specify a default netmask for Class E. Since the RIPv1 routing protocol does not handle CIDR, using /32 as the default netmask for Class E is the best solution to keep the code changes minimal and avoid bugs. This fasttrack is being submitted for the following changes: o The behavior of SIOCSLIFADDR ioctl needs to be modified to allow the setting of a Class E address. It currently returns EADDRNOTAVAIL when passed an address in the Class E range. o The following classful routines: inet_lnaof(), inet_netof(), and inet_makeaddr() assume classful IP address and have thus been "de-facto obsolete" since CIDR was introduced. This case officially classifies them to be Obsolete. The man page for these functions will be updated to state this detail. These functions will use an unspecified value for address mask. Hence the behaviour of these functions will be intentionally underspecified for Class E. If the draft's specification changes in future to specify a default mask for Class E address, we can implement that and make the aforementioned classful routines have a defined behavior. o The IN_CLASSA, IN_CLASSB, IN_CLASSC and IN_CLASSD macros have also been "de-facto obsolete" since CIDR was introduced. This case officially classifies them to be Obsolete. The IN_MULTICAST macro should be used to distinguish multicast from non-multicast addresses. o Tne following interfaces will be introduced: IN_CLASSE() Committed Obsolete Macro in netinet/in.h IN_CLASSE_NET Committed Obsolete Macro in netinet/in.h o The route(1M) command currently assigns a default netmask of 255.255.255.0 to destinations in the Class E range as shown in the following example: # route add 248.53.129.0 192.168.81.25 add net 248.53.129.0: gateway 192.168.81.25 # route get 248.53.129.0 route to: 248.53.129.0 destination: 248.53.129.0 mask: 255.255.255.0 gateway: surya5 interface: bge0 flags: recvpipe sendpipe ssthresh rtt,ms rttvar,ms hopcount mtu expire 0 0 0 0 0 0 1500 0 This current behavior is wrong as per the route(1M) man page: If a subnet mask is not specified, the mask used is the sub- net mask of the output interface selected by the gateway address, if the classful network of the destination is the same as the classful network of the interface. Otherwise, the classful network mask for the destination address is used. Network addresses in the Class E range have no pre-defined netmask. Thus the route command's behavior should be changed so that when a mask is not specified for a IP address from Class E address block, /32 should be used as a default. Release binding requested: Patch