- ifp->if_addrlist = &ia->ia_ifa;
- ifa = &ia->ia_ifa;
- ifa->ifa_netmask = (struct sockaddr *)&ia->ia_sockmask;
- ifa->ifa_addr = (struct sockaddr *)&ia->ia_xc.xc_addr;
- ia->ia_xcp = &ia->ia_xc;
- ia->ia_ifp = ifp;
- ia->ia_pkcb.pk_ia = ia;
- ia->ia_pkcb.pk_next = pkcbhead;
- ia->ia_pkcb.pk_state = DTE_WAITING;
- ia->ia_pkcb.pk_start = pk_start;
- pkcbhead = &ia->ia_pkcb;
- }
- old_maxlcn = ia->ia_maxlcn;
- ia->ia_xc = ifr->ifr_xc;
- if (ia->ia_chan && (ia->ia_maxlcn != old_maxlcn)) {
- pk_restart(&ia->ia_pkcb, X25_RESTART_NETWORK_CONGESTION);
- dev_lcp = ia->ia_chan[0];
- free((caddr_t)ia->ia_chan, M_IFADDR);
- ia->ia_chan = 0;
+ ifp -> if_addrlist = &ia -> ia_ifa;
+ ifa = &ia -> ia_ifa;
+ ifa -> ifa_netmask = (struct sockaddr *)&pk_sockmask;
+ ifa -> ifa_addr = (struct sockaddr *)&ia -> ia_xc.xc_addr;
+ ifa -> ifa_dstaddr = (struct sockaddr *)&ia -> ia_dstaddr; /* XXX */
+ ia -> ia_ifp = ifp;
+ ia -> ia_dstaddr.x25_family = AF_CCITT;
+ ia -> ia_dstaddr.x25_len = pk_sockmask.x25_len;
+ } else {
+ rtinit (ifa, (int)RTM_DELETE, 0);