Lines Matching refs:rose_neigh
44 static struct rose_neigh *rose_neigh_list;
49 struct rose_neigh *rose_loopback_neigh;
59 struct rose_neigh *rose_neigh; in rose_add_node() local
79 rose_neigh = rose_neigh_list; in rose_add_node()
80 while (rose_neigh != NULL) { in rose_add_node()
82 &rose_neigh->callsign) == 0 && in rose_add_node()
83 rose_neigh->dev == dev) in rose_add_node()
85 rose_neigh = rose_neigh->next; in rose_add_node()
88 if (rose_neigh == NULL) { in rose_add_node()
89 rose_neigh = kmalloc(sizeof(*rose_neigh), GFP_ATOMIC); in rose_add_node()
90 if (rose_neigh == NULL) { in rose_add_node()
95 rose_neigh->callsign = rose_route->neighbour; in rose_add_node()
96 rose_neigh->digipeat = NULL; in rose_add_node()
97 rose_neigh->ax25 = NULL; in rose_add_node()
98 rose_neigh->dev = dev; in rose_add_node()
99 rose_neigh->count = 0; in rose_add_node()
100 rose_neigh->use = 0; in rose_add_node()
101 rose_neigh->dce_mode = 0; in rose_add_node()
102 rose_neigh->loopback = 0; in rose_add_node()
103 rose_neigh->number = rose_neigh_no++; in rose_add_node()
104 rose_neigh->restarted = 0; in rose_add_node()
106 skb_queue_head_init(&rose_neigh->queue); in rose_add_node()
108 init_timer(&rose_neigh->ftimer); in rose_add_node()
109 init_timer(&rose_neigh->t0timer); in rose_add_node()
112 rose_neigh->digipeat = in rose_add_node()
114 if (rose_neigh->digipeat == NULL) { in rose_add_node()
115 kfree(rose_neigh); in rose_add_node()
120 rose_neigh->digipeat->ndigi = rose_route->ndigis; in rose_add_node()
121 rose_neigh->digipeat->lastrepeat = -1; in rose_add_node()
124 rose_neigh->digipeat->calls[i] = in rose_add_node()
126 rose_neigh->digipeat->repeated[i] = 0; in rose_add_node()
130 rose_neigh->next = rose_neigh_list; in rose_add_node()
131 rose_neigh_list = rose_neigh; in rose_add_node()
165 rose_node->neighbour[0] = rose_neigh; in rose_add_node()
184 rose_neigh->count++; in rose_add_node()
191 rose_node->neighbour[rose_node->count] = rose_neigh; in rose_add_node()
193 rose_neigh->count++; in rose_add_node()
230 static void rose_remove_neigh(struct rose_neigh *rose_neigh) in rose_remove_neigh() argument
232 struct rose_neigh *s; in rose_remove_neigh()
234 rose_stop_ftimer(rose_neigh); in rose_remove_neigh()
235 rose_stop_t0timer(rose_neigh); in rose_remove_neigh()
237 skb_queue_purge(&rose_neigh->queue); in rose_remove_neigh()
239 if ((s = rose_neigh_list) == rose_neigh) { in rose_remove_neigh()
240 rose_neigh_list = rose_neigh->next; in rose_remove_neigh()
241 if (rose_neigh->ax25) in rose_remove_neigh()
242 ax25_cb_put(rose_neigh->ax25); in rose_remove_neigh()
243 kfree(rose_neigh->digipeat); in rose_remove_neigh()
244 kfree(rose_neigh); in rose_remove_neigh()
249 if (s->next == rose_neigh) { in rose_remove_neigh()
250 s->next = rose_neigh->next; in rose_remove_neigh()
251 if (rose_neigh->ax25) in rose_remove_neigh()
252 ax25_cb_put(rose_neigh->ax25); in rose_remove_neigh()
253 kfree(rose_neigh->digipeat); in rose_remove_neigh()
254 kfree(rose_neigh); in rose_remove_neigh()
300 struct rose_neigh *rose_neigh; in rose_del_node() local
320 rose_neigh = rose_neigh_list; in rose_del_node()
321 while (rose_neigh != NULL) { in rose_del_node()
323 &rose_neigh->callsign) == 0 && in rose_del_node()
324 rose_neigh->dev == dev) in rose_del_node()
326 rose_neigh = rose_neigh->next; in rose_del_node()
329 if (rose_neigh == NULL) { in rose_del_node()
335 if (rose_node->neighbour[i] == rose_neigh) { in rose_del_node()
336 rose_neigh->count--; in rose_del_node()
338 if (rose_neigh->count == 0 && rose_neigh->use == 0) in rose_del_node()
339 rose_remove_neigh(rose_neigh); in rose_del_node()
374 struct rose_neigh *sn; in rose_add_loopback_neigh()
376 rose_loopback_neigh = kmalloc(sizeof(struct rose_neigh), GFP_KERNEL); in rose_add_loopback_neigh()
482 struct rose_neigh *s, *rose_neigh; in rose_rt_device_down() local
488 rose_neigh = rose_neigh_list; in rose_rt_device_down()
489 while (rose_neigh != NULL) { in rose_rt_device_down()
490 s = rose_neigh; in rose_rt_device_down()
491 rose_neigh = rose_neigh->next; in rose_rt_device_down()
556 struct rose_neigh *s, *rose_neigh; in rose_clear_routes() local
562 rose_neigh = rose_neigh_list; in rose_clear_routes()
572 while (rose_neigh != NULL) { in rose_clear_routes()
573 s = rose_neigh; in rose_clear_routes()
574 rose_neigh = rose_neigh->next; in rose_clear_routes()
661 struct rose_route *rose_route_free_lci(unsigned int lci, struct rose_neigh *neigh) in rose_route_free_lci()
676 struct rose_neigh *rose_get_neigh(rose_address *addr, unsigned char *cause, in rose_get_neigh()
679 struct rose_neigh *res = NULL; in rose_get_neigh()
765 static void rose_del_route_by_neigh(struct rose_neigh *rose_neigh) in rose_del_route_by_neigh() argument
769 rose_neigh->restarted = 0; in rose_del_route_by_neigh()
771 rose_stop_t0timer(rose_neigh); in rose_del_route_by_neigh()
772 rose_start_ftimer(rose_neigh); in rose_del_route_by_neigh()
774 skb_queue_purge(&rose_neigh->queue); in rose_del_route_by_neigh()
781 if ((rose_route->neigh1 == rose_neigh && rose_route->neigh2 == rose_neigh) || in rose_del_route_by_neigh()
782 (rose_route->neigh1 == rose_neigh && rose_route->neigh2 == NULL) || in rose_del_route_by_neigh()
783 (rose_route->neigh2 == rose_neigh && rose_route->neigh1 == NULL)) { in rose_del_route_by_neigh()
790 if (rose_route->neigh1 == rose_neigh) { in rose_del_route_by_neigh()
796 if (rose_route->neigh2 == rose_neigh) { in rose_del_route_by_neigh()
814 struct rose_neigh *rose_neigh; in rose_link_failed() local
817 rose_neigh = rose_neigh_list; in rose_link_failed()
818 while (rose_neigh != NULL) { in rose_link_failed()
819 if (rose_neigh->ax25 == ax25) in rose_link_failed()
821 rose_neigh = rose_neigh->next; in rose_link_failed()
824 if (rose_neigh != NULL) { in rose_link_failed()
825 rose_neigh->ax25 = NULL; in rose_link_failed()
828 rose_del_route_by_neigh(rose_neigh); in rose_link_failed()
829 rose_kill_by_neigh(rose_neigh); in rose_link_failed()
840 struct rose_neigh *rose_neigh; in rose_link_device_down() local
842 for (rose_neigh = rose_neigh_list; rose_neigh != NULL; rose_neigh = rose_neigh->next) { in rose_link_device_down()
843 if (rose_neigh->dev == dev) { in rose_link_device_down()
844 rose_del_route_by_neigh(rose_neigh); in rose_link_device_down()
845 rose_kill_by_neigh(rose_neigh); in rose_link_device_down()
855 struct rose_neigh *rose_neigh, *new_neigh; in rose_route_frame() local
882 rose_neigh = rose_neigh_list; in rose_route_frame()
883 while (rose_neigh != NULL) { in rose_route_frame()
884 if (ax25cmp(&ax25->dest_addr, &rose_neigh->callsign) == 0 && in rose_route_frame()
885 ax25->ax25_dev->dev == rose_neigh->dev) in rose_route_frame()
887 rose_neigh = rose_neigh->next; in rose_route_frame()
890 if (rose_neigh == NULL) { in rose_route_frame()
899 rose_stop_ftimer(rose_neigh); in rose_route_frame()
906 rose_link_rx_restart(skb, rose_neigh, frametype); in rose_route_frame()
913 if ((sk = rose_find_socket(lci, rose_neigh)) != NULL) { in rose_route_frame()
945 res = rose_rx_call_request(skb, dev, rose_neigh, lci); in rose_route_frame()
951 rose_transmit_clear_request(rose_neigh, lci, ROSE_NOT_OBTAINABLE, 0); in rose_route_frame()
961 rose_route->neigh1 == rose_neigh) { in rose_route_frame()
982 rose_route->neigh2 == rose_neigh) { in rose_route_frame()
1020 rose_transmit_clear_request(rose_neigh, lci, ROSE_INVALID_FACILITY, 76); in rose_route_frame()
1033 rose_transmit_clear_request(rose_neigh, lci, ROSE_NOT_OBTAINABLE, 120); in rose_route_frame()
1040 rose_transmit_clear_request(rose_neigh, lci, cause, diagnostic); in rose_route_frame()
1045 rose_transmit_clear_request(rose_neigh, lci, ROSE_NETWORK_CONGESTION, 71); in rose_route_frame()
1050 rose_transmit_clear_request(rose_neigh, lci, ROSE_NETWORK_CONGESTION, 120); in rose_route_frame()
1060 rose_route->neigh1 = rose_neigh; in rose_route_frame()
1168 struct rose_neigh *rose_neigh; in rose_neigh_start() local
1175 for (rose_neigh = rose_neigh_list; rose_neigh && i < *pos; in rose_neigh_start()
1176 rose_neigh = rose_neigh->next, ++i); in rose_neigh_start()
1178 return (i == *pos) ? rose_neigh : NULL; in rose_neigh_start()
1186 : ((struct rose_neigh *)v)->next; in rose_neigh_next()
1204 struct rose_neigh *rose_neigh = v; in rose_neigh_show() local
1208 rose_neigh->number, in rose_neigh_show()
1209 (rose_neigh->loopback) ? "RSLOOP-0" : ax2asc(buf, &rose_neigh->callsign), in rose_neigh_show()
1210 rose_neigh->dev ? rose_neigh->dev->name : "???", in rose_neigh_show()
1211 rose_neigh->count, in rose_neigh_show()
1212 rose_neigh->use, in rose_neigh_show()
1213 (rose_neigh->dce_mode) ? "DCE" : "DTE", in rose_neigh_show()
1214 (rose_neigh->restarted) ? "yes" : "no", in rose_neigh_show()
1215 ax25_display_timer(&rose_neigh->t0timer) / HZ, in rose_neigh_show()
1216 ax25_display_timer(&rose_neigh->ftimer) / HZ); in rose_neigh_show()
1218 if (rose_neigh->digipeat != NULL) { in rose_neigh_show()
1219 for (i = 0; i < rose_neigh->digipeat->ndigi; i++) in rose_neigh_show()
1220 seq_printf(seq, " %s", ax2asc(buf, &rose_neigh->digipeat->calls[i])); in rose_neigh_show()
1342 struct rose_neigh *s, *rose_neigh = rose_neigh_list; in rose_rt_free() local
1346 while (rose_neigh != NULL) { in rose_rt_free()
1347 s = rose_neigh; in rose_rt_free()
1348 rose_neigh = rose_neigh->next; in rose_rt_free()