| /trueos/sys/net80211/ |
| HD | ieee80211_node.c | 209 ieee80211_node_authorize(struct ieee80211_node *ni) in ieee80211_node_authorize() argument 211 struct ieee80211vap *vap = ni->ni_vap; in ieee80211_node_authorize() 213 ni->ni_flags |= IEEE80211_NODE_AUTH; in ieee80211_node_authorize() 214 ni->ni_inact_reload = vap->iv_inact_run; in ieee80211_node_authorize() 215 ni->ni_inact = ni->ni_inact_reload; in ieee80211_node_authorize() 217 IEEE80211_NOTE(vap, IEEE80211_MSG_INACT, ni, in ieee80211_node_authorize() 218 "%s: inact_reload %u", __func__, ni->ni_inact_reload); in ieee80211_node_authorize() 222 ieee80211_node_unauthorize(struct ieee80211_node *ni) in ieee80211_node_unauthorize() argument 224 struct ieee80211vap *vap = ni->ni_vap; in ieee80211_node_unauthorize() 226 ni->ni_flags &= ~IEEE80211_NODE_AUTH; in ieee80211_node_unauthorize() [all …]
|
| HD | ieee80211_ht.c | 210 static int ieee80211_ampdu_enable(struct ieee80211_node *ni, 212 static int ieee80211_addba_request(struct ieee80211_node *ni, 215 static int ieee80211_addba_response(struct ieee80211_node *ni, 218 static void ieee80211_addba_stop(struct ieee80211_node *ni, 220 static void null_addba_response_timeout(struct ieee80211_node *ni, 223 static void ieee80211_bar_response(struct ieee80211_node *ni, 465 ieee80211_decap_amsdu(struct ieee80211_node *ni, struct mbuf *m) in ieee80211_decap_amsdu() argument 467 struct ieee80211vap *vap = ni->ni_vap; in ieee80211_decap_amsdu() 486 ni->ni_macaddr, "a-msdu", "%s", "decap failed"); in ieee80211_decap_amsdu() 495 ni->ni_macaddr, "a-msdu", in ieee80211_decap_amsdu() [all …]
|
| HD | ieee80211_hostap.c | 69 static int hostap_input(struct ieee80211_node *ni, struct mbuf *m, 106 sta_disassoc(void *arg, struct ieee80211_node *ni) in sta_disassoc() argument 110 if (ni->ni_vap == vap && ni->ni_associd != 0) { in sta_disassoc() 111 IEEE80211_SEND_MGMT(ni, IEEE80211_FC0_SUBTYPE_DISASSOC, in sta_disassoc() 113 ieee80211_node_leave(ni); in sta_disassoc() 118 sta_csa(void *arg, struct ieee80211_node *ni) in sta_csa() argument 122 if (ni->ni_vap == vap && ni->ni_associd != 0) in sta_csa() 123 if (ni->ni_inact > vap->iv_inact_init) { in sta_csa() 124 ni->ni_inact = vap->iv_inact_init; in sta_csa() 125 IEEE80211_NOTE(vap, IEEE80211_MSG_INACT, ni, in sta_csa() [all …]
|
| HD | ieee80211_wds.c | 66 static int wds_input(struct ieee80211_node *ni, struct mbuf *m, int, int); 101 wds_flush(struct ieee80211_node *ni) in wds_flush() argument 103 struct ieee80211com *ic = ni->ni_ic; in wds_flush() 108 (void *)(uintptr_t) ieee80211_mac_hash(ic, ni->ni_macaddr)); in wds_flush() 112 IEEE80211_NOTE(ni->ni_vap, IEEE80211_MSG_WDS, ni, in wds_flush() 114 ic->ic_node_getsignal(ni, &rssi, &nf); in wds_flush() 118 ieee80211_input(ni, m, rssi, nf); in wds_flush() 127 struct ieee80211_node *ni, *obss; in ieee80211_create_wds() local 149 ni = ieee80211_find_node_locked(&ic->ic_sta, vap->iv_des_bssid); in ieee80211_create_wds() 150 if (ni == NULL) { in ieee80211_create_wds() [all …]
|
| HD | ieee80211_amrr.c | 133 amrr_node_is_11n(struct ieee80211_node *ni) in amrr_node_is_11n() argument 136 if (ni->ni_chan == NULL) in amrr_node_is_11n() 138 if (ni->ni_chan == IEEE80211_CHAN_ANYC) in amrr_node_is_11n() 140 return (IEEE80211_IS_CHAN_HT(ni->ni_chan)); in amrr_node_is_11n() 144 amrr_node_init(struct ieee80211_node *ni) in amrr_node_init() argument 147 struct ieee80211vap *vap = ni->ni_vap; in amrr_node_init() 152 if (ni->ni_rctls == NULL) { in amrr_node_init() 153 ni->ni_rctls = amn = malloc(sizeof(struct ieee80211_amrr_node), in amrr_node_init() 161 amn = ni->ni_rctls; in amrr_node_init() 169 if (amrr_node_is_11n(ni)) { in amrr_node_init() [all …]
|
| HD | ieee80211_sta.c | 188 sta_authretry(struct ieee80211vap *vap, struct ieee80211_node *ni, int reason) in sta_authretry() argument 198 IEEE80211_SEND_MGMT(ni, IEEE80211_FC0_SUBTYPE_AUTH, 1); in sta_authretry() 216 struct ieee80211_node *ni; in sta_newstate() local 229 ni = vap->iv_bss; /* NB: no reference held */ in sta_newstate() 238 IEEE80211_SEND_MGMT(ni, in sta_newstate() 241 ieee80211_sta_leave(ni); in sta_newstate() 244 IEEE80211_SEND_MGMT(ni, in sta_newstate() 308 ieee80211_sta_leave(ni); in sta_newstate() 320 IEEE80211_SEND_MGMT(ni, in sta_newstate() 328 IEEE80211_SEND_MGMT(ni, in sta_newstate() [all …]
|
| HD | ieee80211_adhoc.c | 119 sta_leave(void *arg, struct ieee80211_node *ni) in sta_leave() argument 123 if (ni->ni_vap == vap && ni != vap->iv_bss) in sta_leave() 124 ieee80211_node_leave(ni); in sta_leave() 134 struct ieee80211_node *ni; in adhoc_newstate() local 146 ni = vap->iv_bss; /* NB: no reference held */ in adhoc_newstate() 221 ether_sprintf(ni->ni_bssid)); in adhoc_newstate() 223 ni->ni_esslen); in adhoc_newstate() 227 IEEE80211_RATE2MBS(ni->ni_txrate)); in adhoc_newstate() 238 if (ni->ni_authmode != IEEE80211_AUTH_8021X) in adhoc_newstate() 239 ieee80211_node_authorize(ni); in adhoc_newstate() [all …]
|
| HD | ieee80211_mesh.c | 624 mesh_vdetach_peers(void *arg, struct ieee80211_node *ni) in mesh_vdetach_peers() argument 626 struct ieee80211com *ic = ni->ni_ic; in mesh_vdetach_peers() 629 if (ni->ni_mlstate == IEEE80211_NODE_MESH_ESTABLISHED) { in mesh_vdetach_peers() 630 args[0] = ni->ni_mlpid; in mesh_vdetach_peers() 631 args[1] = ni->ni_mllid; in mesh_vdetach_peers() 633 ieee80211_send_action(ni, in mesh_vdetach_peers() 638 callout_drain(&ni->ni_mltimer); in mesh_vdetach_peers() 641 (void *)(uintptr_t) ieee80211_mac_hash(ic, ni->ni_macaddr)); in mesh_vdetach_peers() 699 struct ieee80211_node *ni; in mesh_newstate() local 711 ni = vap->iv_bss; /* NB: no reference held */ in mesh_newstate() [all …]
|
| HD | ieee80211_power.c | 127 ieee80211_node_psq_dequeue(struct ieee80211_node *ni, int *qlen) in ieee80211_node_psq_dequeue() argument 129 struct ieee80211_psq *psq = &ni->ni_psq; in ieee80211_node_psq_dequeue() 164 struct ieee80211_node *ni = (void *) m->m_pkthdr.rcvif; in psq_mfree() local 165 ieee80211_free_node(ni); in psq_mfree() 207 ieee80211_node_psq_drain(struct ieee80211_node *ni) in ieee80211_node_psq_drain() argument 209 return psq_drain(&ni->ni_psq); in ieee80211_node_psq_drain() 223 ieee80211_node_psq_age(struct ieee80211_node *ni) in ieee80211_node_psq_age() argument 225 struct ieee80211_psq *psq = &ni->ni_psq; in ieee80211_node_psq_age() 230 struct ieee80211vap *vap = ni->ni_vap; in ieee80211_node_psq_age() 240 IEEE80211_NOTE(vap, IEEE80211_MSG_POWER, ni, in ieee80211_node_psq_age() [all …]
|
| HD | ieee80211_ddb.c | 242 _db_show_sta(const struct ieee80211_node *ni) in _db_show_sta() argument 246 db_printf("0x%p: mac %s refcnt %d\n", ni, in _db_show_sta() 247 ether_sprintf(ni->ni_macaddr), ieee80211_node_refcnt(ni)); in _db_show_sta() 249 ni->ni_vap, ni->ni_wdsvap, ni->ni_ic, ni->ni_table); in _db_show_sta() 250 db_printf("\tflags=%b\n", ni->ni_flags, IEEE80211_NODE_BITS); in _db_show_sta() 252 ni->ni_scangen, ni->ni_authmode, in _db_show_sta() 253 ni->ni_ath_flags, ni->ni_ath_defkeyix); in _db_show_sta() 255 ni->ni_associd, ni->ni_txpower, ni->ni_vlan); in _db_show_sta() 257 ni->ni_jointime, (unsigned long)(time_uptime - ni->ni_jointime), in _db_show_sta() 258 ni->ni_challenge); in _db_show_sta() [all …]
|
| HD | ieee80211_output.c | 130 struct ieee80211_node *ni) in ieee80211_vap_pkt_send_dest() argument 136 if ((ni->ni_flags & IEEE80211_NODE_PWR_MGT) && in ieee80211_vap_pkt_send_dest() 144 if (ieee80211_pwrsave(ni, m) != 0) in ieee80211_vap_pkt_send_dest() 146 ieee80211_free_node(ni); in ieee80211_vap_pkt_send_dest() 155 if (ieee80211_classify(ni, m)) { in ieee80211_vap_pkt_send_dest() 157 ni->ni_macaddr, NULL, in ieee80211_vap_pkt_send_dest() 162 ieee80211_free_node(ni); in ieee80211_vap_pkt_send_dest() 173 m->m_pkthdr.rcvif = (void *)ni; in ieee80211_vap_pkt_send_dest() 191 if ((ni->ni_flags & IEEE80211_NODE_AMPDU_TX) && in ieee80211_vap_pkt_send_dest() 195 struct ieee80211_tx_ampdu *tap = &ni->ni_tx_ampdu[tid]; in ieee80211_vap_pkt_send_dest() [all …]
|
| HD | ieee80211_superg.c | 187 ieee80211_parse_ath(struct ieee80211_node *ni, uint8_t *ie) in ieee80211_parse_ath() argument 192 ni->ni_ath_flags = ath->ath_capability; in ieee80211_parse_ath() 193 ni->ni_ath_defkeyix = LE_READ_2(&ath->ath_defkeyix); in ieee80211_parse_ath() 197 ieee80211_parse_athparams(struct ieee80211_node *ni, uint8_t *frm, in ieee80211_parse_athparams() argument 200 struct ieee80211vap *vap = ni->ni_vap; in ieee80211_parse_athparams() 213 capschanged = (ni->ni_ath_flags != ath->ath_capability); in ieee80211_parse_athparams() 215 if (capschanged || defkeyix != ni->ni_ath_defkeyix) { in ieee80211_parse_athparams() 216 ni->ni_ath_flags = ath->ath_capability; in ieee80211_parse_athparams() 217 ni->ni_ath_defkeyix = defkeyix; in ieee80211_parse_athparams() 218 IEEE80211_NOTE(vap, IEEE80211_MSG_SUPERG, ni, in ieee80211_parse_athparams() [all …]
|
| HD | ieee80211_input.c | 61 ieee80211_process_mimo(struct ieee80211_node *ni, struct ieee80211_rx_stats *rx) in ieee80211_process_mimo() argument 72 IEEE80211_RSSI_LPF(ni->ni_mimo_rssi_ctl[i], rx->c_rssi_ctl[i]); in ieee80211_process_mimo() 73 IEEE80211_RSSI_LPF(ni->ni_mimo_rssi_ext[i], rx->c_rssi_ext[i]); in ieee80211_process_mimo() 78 ni->ni_mimo_noise_ctl[i] = rx->c_nf_ctl[i]; in ieee80211_process_mimo() 79 ni->ni_mimo_noise_ext[i] = rx->c_nf_ext[i]; in ieee80211_process_mimo() 81 ni->ni_mimo_chains = rx->c_chain; in ieee80211_process_mimo() 85 ieee80211_input_mimo(struct ieee80211_node *ni, struct mbuf *m, in ieee80211_input_mimo() argument 89 ieee80211_process_mimo(ni, rx); in ieee80211_input_mimo() 90 return ieee80211_input(ni, m, rx->rssi, rx->nf); in ieee80211_input_mimo() 115 struct ieee80211_node *ni; in ieee80211_input_mimo_all() local [all …]
|
| HD | ieee80211_ratectl.h | 72 ieee80211_ratectl_node_init(struct ieee80211_node *ni) in ieee80211_ratectl_node_init() argument 74 const struct ieee80211vap *vap = ni->ni_vap; in ieee80211_ratectl_node_init() 76 vap->iv_rate->ir_node_init(ni); in ieee80211_ratectl_node_init() 80 ieee80211_ratectl_node_deinit(struct ieee80211_node *ni) in ieee80211_ratectl_node_deinit() argument 82 const struct ieee80211vap *vap = ni->ni_vap; in ieee80211_ratectl_node_deinit() 84 vap->iv_rate->ir_node_deinit(ni); in ieee80211_ratectl_node_deinit() 88 ieee80211_ratectl_rate(struct ieee80211_node *ni, void *arg, uint32_t iarg) in ieee80211_ratectl_rate() argument 90 const struct ieee80211vap *vap = ni->ni_vap; in ieee80211_ratectl_rate() 92 return vap->iv_rate->ir_rate(ni, arg, iarg); in ieee80211_ratectl_rate() 97 const struct ieee80211_node *ni, int status, void *arg1, void *arg2) in ieee80211_ratectl_tx_complete() argument [all …]
|
| HD | ieee80211_rssadapt.c | 165 rssadapt_node_init(struct ieee80211_node *ni) in rssadapt_node_init() argument 168 struct ieee80211vap *vap = ni->ni_vap; in rssadapt_node_init() 170 const struct ieee80211_rateset *rs = &ni->ni_rates; in rssadapt_node_init() 172 if (ni->ni_rctls == NULL) { in rssadapt_node_init() 173 ni->ni_rctls = ra = in rssadapt_node_init() 182 ra = ni->ni_rctls; in rssadapt_node_init() 192 ni->ni_txrate = rs->rs_rates[ra->ra_rix] & IEEE80211_RATE_VAL; in rssadapt_node_init() 195 IEEE80211_NOTE(ni->ni_vap, IEEE80211_MSG_RATECTL, ni, in rssadapt_node_init() 196 "RSSADAPT initial rate %d", ni->ni_txrate); in rssadapt_node_init() 200 rssadapt_node_deinit(struct ieee80211_node *ni) in rssadapt_node_deinit() argument [all …]
|
| HD | ieee80211_ioctl.c | 80 struct ieee80211_node *ni; in ieee80211_ioctl_getkey() local 94 ni = ieee80211_find_vap_node(&ic->ic_sta, vap, ik.ik_macaddr); in ieee80211_ioctl_getkey() 95 if (ni == NULL) in ieee80211_ioctl_getkey() 97 wk = &ni->ni_ucastkey; in ieee80211_ioctl_getkey() 103 ni = NULL; in ieee80211_ioctl_getkey() 127 if (ni != NULL) in ieee80211_ioctl_getkey() 128 ieee80211_free_node(ni); in ieee80211_ioctl_getkey() 160 struct ieee80211_node *ni; in ieee80211_ioctl_getwpaie() local 169 ni = ieee80211_find_vap_node(&vap->iv_ic->ic_sta, vap, wpaie.wpa_macaddr); in ieee80211_ioctl_getwpaie() 170 if (ni == NULL) in ieee80211_ioctl_getwpaie() [all …]
|
| HD | ieee80211_tdma.c | 120 const struct ieee80211_tdma_param *tdma, struct ieee80211_node *ni, 122 static int tdma_process_params(struct ieee80211_node *ni, 209 sta_leave(void *arg, struct ieee80211_node *ni) in sta_leave() argument 213 if (ni->ni_vap == vap && ni != vap->iv_bss) in sta_leave() 214 ieee80211_node_leave(ni); in sta_leave() 322 tdma_recv_mgmt(struct ieee80211_node *ni, struct mbuf *m0, in tdma_recv_mgmt() argument 325 struct ieee80211com *ic = ni->ni_ic; in tdma_recv_mgmt() 326 struct ieee80211vap *vap = ni->ni_vap; in tdma_recv_mgmt() 334 if (ieee80211_parse_beacon(ni, m0, &scan) != 0) in tdma_recv_mgmt() 350 if (ni == vap->iv_bss && in tdma_recv_mgmt() [all …]
|
| HD | ieee80211_ratectl_none.c | 60 none_node_init(struct ieee80211_node *ni) in none_node_init() argument 62 ni->ni_txrate = ni->ni_rates.rs_rates[0] & IEEE80211_RATE_VAL; in none_node_init() 66 none_node_deinit(struct ieee80211_node *ni) in none_node_deinit() argument 71 none_rate(struct ieee80211_node *ni, void *arg __unused, uint32_t iarg __unused) in none_rate() argument 75 ni->ni_txrate = ni->ni_rates.rs_rates[rix] & IEEE80211_RATE_VAL; in none_rate() 81 const struct ieee80211_node *ni, int ok, in none_tx_complete() argument 87 none_tx_update(const struct ieee80211vap *vap, const struct ieee80211_node *ni, in none_tx_update() argument
|
| /trueos/contrib/tcpdump/ |
| HD | print-rip.c | 99 rip_entry_print_v1(register const struct rip_netinfo *ni) in rip_entry_print_v1() argument 104 family = EXTRACT_16BITS(&ni->rip_family); in rip_entry_print_v1() 107 print_unknown_data((u_int8_t *)&ni->rip_family,"\n\t ",RIP_ROUTELEN); in rip_entry_print_v1() 110 if (EXTRACT_16BITS(&ni->rip_tag) || in rip_entry_print_v1() 111 EXTRACT_32BITS(&ni->rip_dest_mask) || in rip_entry_print_v1() 112 EXTRACT_32BITS(&ni->rip_router)) { in rip_entry_print_v1() 114 print_unknown_data((u_int8_t *)&ni->rip_family,"\n\t ",RIP_ROUTELEN); in rip_entry_print_v1() 119 ipaddr_string(&ni->rip_dest), in rip_entry_print_v1() 120 EXTRACT_32BITS(&ni->rip_metric)); in rip_entry_print_v1() 124 ipaddr_string(&ni->rip_dest), in rip_entry_print_v1() [all …]
|
| HD | print-ripng.c | 50 rip6_entry_print(register const struct netinfo6 *ni, int metric) in rip6_entry_print() argument 53 l = printf("%s/%d", ip6addr_string(&ni->rip6_dest), ni->rip6_plen); in rip6_entry_print() 54 if (ni->rip6_tag) in rip6_entry_print() 55 l += printf(" [%d]", EXTRACT_16BITS(&ni->rip6_tag)); in rip6_entry_print() 57 l += printf(" (%d)", ni->rip6_metric); in rip6_entry_print() 65 register const struct netinfo6 *ni; in ripng_print() local 82 j = length / sizeof(*ni); in ripng_print() 89 if (j * sizeof(*ni) != length - 4) in ripng_print() 93 trunc = ((i / sizeof(*ni)) * sizeof(*ni) != i); in ripng_print() 94 for (ni = rp->rip6_nets; i >= sizeof(*ni); in ripng_print() [all …]
|
| /trueos/lib/libc/gen/ |
| HD | sem_new.c | 146 struct sem_nameinfo *ni = NULL; in _sem_open() local 175 LIST_FOREACH(ni, &sem_list, next) { in _sem_open() 176 if (ni->name != NULL && strcmp(name, ni->name) == 0) { in _sem_open() 182 O_EXCL) || ni->dev != sb.st_dev || in _sem_open() 183 ni->ino != sb.st_ino) { in _sem_open() 184 ni->name = NULL; in _sem_open() 185 ni = NULL; in _sem_open() 188 ni->open_count++; in _sem_open() 189 sem = ni->sem; in _sem_open() 196 len = sizeof(*ni) + strlen(name) + 1; in _sem_open() [all …]
|
| /trueos/sys/dev/ath/ath_rate/amrr/ |
| HD | amrr.c | 218 ath_rate_update(struct ath_softc *sc, struct ieee80211_node *ni, int rate) in ath_rate_update() argument 220 struct ath_node *an = ATH_NODE(ni); in ath_rate_update() 222 struct ieee80211vap *vap = ni->ni_vap; in ath_rate_update() 228 IEEE80211_NOTE(vap, IEEE80211_MSG_RATECTL, ni, in ath_rate_update() 230 ni->ni_rates.rs_nrates > 0 ? in ath_rate_update() 231 (ni->ni_rates.rs_rates[rate] & IEEE80211_RATE_VAL) / 2 : 0); in ath_rate_update() 241 if (ni->ni_rates.rs_nrates > 0) { in ath_rate_update() 242 ni->ni_txrate = ni->ni_rates.rs_rates[rate] & IEEE80211_RATE_VAL; in ath_rate_update() 243 amn->amn_tx_rix0 = sc->sc_rixmap[ni->ni_txrate]; in ath_rate_update() 254 ni->ni_rates.rs_rates[rate]&IEEE80211_RATE_VAL]; in ath_rate_update() [all …]
|
| /trueos/sys/dev/wtap/ |
| HD | if_wtap.c | 140 static int wtap_raw_xmit(struct ieee80211_node *ni, struct mbuf *m, 165 wtap_recv_mgmt(struct ieee80211_node *ni, struct mbuf *m, in wtap_recv_mgmt() argument 168 struct ieee80211vap *vap = ni->ni_vap; in wtap_recv_mgmt() 170 DWTAP_PRINTF("[%d] %s\n", myath_id(ni), __func__); in wtap_recv_mgmt() 172 WTAP_VAP(vap)->av_recv_mgmt(ni, m, subtype, rssi, nf); in wtap_recv_mgmt() 196 wtap_beacon_alloc(struct wtap_softc *sc, struct ieee80211_node *ni) in wtap_beacon_alloc() argument 198 struct ieee80211vap *vap = ni->ni_vap; in wtap_beacon_alloc() 201 DWTAP_PRINTF("[%s] %s\n", ether_sprintf(ni->ni_macaddr), __func__); in wtap_beacon_alloc() 208 avp->beacon = ieee80211_beacon_alloc(ni, &avp->av_boff); in wtap_beacon_alloc() 214 avp->bf_node = ieee80211_ref_node(ni); in wtap_beacon_alloc() [all …]
|
| /trueos/sys/dev/ath/ath_rate/onoe/ |
| HD | onoe.c | 191 ath_rate_update(struct ath_softc *sc, struct ieee80211_node *ni, int rate) in ath_rate_update() argument 193 struct ath_node *an = ATH_NODE(ni); in ath_rate_update() 195 struct ieee80211vap *vap = ni->ni_vap; in ath_rate_update() 201 IEEE80211_NOTE(vap, IEEE80211_MSG_RATECTL, ni, in ath_rate_update() 203 ni->ni_rates.rs_nrates > 0 ? in ath_rate_update() 204 (ni->ni_rates.rs_rates[rate] & IEEE80211_RATE_VAL) / 2 : 0); in ath_rate_update() 213 if (ni->ni_rates.rs_nrates == 0) in ath_rate_update() 216 ni->ni_txrate = ni->ni_rates.rs_rates[rate] & IEEE80211_RATE_VAL; in ath_rate_update() 217 on->on_tx_rix0 = sc->sc_rixmap[ni->ni_txrate]; in ath_rate_update() 233 ni->ni_rates.rs_rates[rate]&IEEE80211_RATE_VAL]; in ath_rate_update() [all …]
|
| /trueos/lib/libc/rpc/ |
| HD | getnetconfig.c | 133 static struct netconfig_info ni = { 0, 0, NULL, NULL}; variable 211 ni.ref++; in setnetconfig() 218 nc_vars->nc_configs = ni.head; in setnetconfig() 225 ni.ref--; in setnetconfig() 276 ncp->nc_configs = ni.head; 291 if (ni.eof == 1) { 322 ni.eof = 1; 359 if (ni.head == NULL) { /* first entry */ 360 ni.head = ni.tail = list; 363 ni.tail->next = list; [all …]
|