+.LP
+There are two requests that make use of a new structure:
+.TP
+SIOCAIFADDR
+An interface may have more than one address associated with it
+in some protocols. This request provides a means to
+add additional addresses (or modify characteristics of the
+primary address if the default address for the address family
+is specified). Rather than making separate calls to
+set destination or broadcast addresses, or network masks
+(now an integral feature of multiple protocols)
+a separate structure is used to specify all three facets simultaneously:
+.nf
+
+.ta \w'struct 'u +\w'struct 'u +\w'sockaddr 'u +\w'ifra_broaddadr 'u
+struct ifaliasreq {
+ char ifra_name[IFNAMSIZ]; /* if name, e.g. "en0" */
+ struct sockaddr ifra_addr;
+ struct sockaddr ifra_broadaddr;
+ struct sockaddr ifra_mask;
+};
+.fi
+One would use a slightly tailored version of this struct specific
+to each family (replacing each sockaddr by one
+of the family-specific type).
+Where the sockaddr itself is larger than the
+default size, one needs to modify the
+.I ioctl
+identifier itself to include the total size, as described in
+.IR ioctl (2).
+.TP
+SIOCDIFADDR
+This requests deletes the specified address from the list
+associated with an interface. It also uses the if_aliasreq
+structure to allow for the possibility of protocols allowing
+multiple masks or destination addresses, and also adopts the
+convention that specification of the default address means
+to delete the first address for the interface belonging to
+the address family in which the original socket was opened.