Lines Matching refs:rose_neigh

43 static struct rose_neigh *rose_neigh_list;
48 struct rose_neigh *rose_loopback_neigh;
58 struct rose_neigh *rose_neigh; in rose_add_node() local
78 rose_neigh = rose_neigh_list; in rose_add_node()
79 while (rose_neigh != NULL) { in rose_add_node()
81 &rose_neigh->callsign) == 0 && in rose_add_node()
82 rose_neigh->dev == dev) in rose_add_node()
84 rose_neigh = rose_neigh->next; in rose_add_node()
87 if (rose_neigh == NULL) { in rose_add_node()
88 rose_neigh = kmalloc(sizeof(*rose_neigh), GFP_ATOMIC); in rose_add_node()
89 if (rose_neigh == NULL) { in rose_add_node()
94 rose_neigh->callsign = rose_route->neighbour; in rose_add_node()
95 rose_neigh->digipeat = NULL; in rose_add_node()
96 rose_neigh->ax25 = NULL; in rose_add_node()
97 rose_neigh->dev = dev; in rose_add_node()
98 rose_neigh->count = 0; in rose_add_node()
99 rose_neigh->use = 0; in rose_add_node()
100 rose_neigh->dce_mode = 0; in rose_add_node()
101 rose_neigh->loopback = 0; in rose_add_node()
102 rose_neigh->number = rose_neigh_no++; in rose_add_node()
103 rose_neigh->restarted = 0; in rose_add_node()
105 skb_queue_head_init(&rose_neigh->queue); in rose_add_node()
107 init_timer(&rose_neigh->ftimer); in rose_add_node()
108 init_timer(&rose_neigh->t0timer); in rose_add_node()
111 rose_neigh->digipeat = in rose_add_node()
113 if (rose_neigh->digipeat == NULL) { in rose_add_node()
114 kfree(rose_neigh); in rose_add_node()
119 rose_neigh->digipeat->ndigi = rose_route->ndigis; in rose_add_node()
120 rose_neigh->digipeat->lastrepeat = -1; in rose_add_node()
123 rose_neigh->digipeat->calls[i] = in rose_add_node()
125 rose_neigh->digipeat->repeated[i] = 0; in rose_add_node()
129 rose_neigh->next = rose_neigh_list; in rose_add_node()
130 rose_neigh_list = rose_neigh; in rose_add_node()
164 rose_node->neighbour[0] = rose_neigh; in rose_add_node()
183 rose_neigh->count++; in rose_add_node()
190 rose_node->neighbour[rose_node->count] = rose_neigh; in rose_add_node()
192 rose_neigh->count++; in rose_add_node()
229 static void rose_remove_neigh(struct rose_neigh *rose_neigh) in rose_remove_neigh() argument
231 struct rose_neigh *s; in rose_remove_neigh()
233 rose_stop_ftimer(rose_neigh); in rose_remove_neigh()
234 rose_stop_t0timer(rose_neigh); in rose_remove_neigh()
236 skb_queue_purge(&rose_neigh->queue); in rose_remove_neigh()
238 if ((s = rose_neigh_list) == rose_neigh) { in rose_remove_neigh()
239 rose_neigh_list = rose_neigh->next; in rose_remove_neigh()
240 if (rose_neigh->ax25) in rose_remove_neigh()
241 ax25_cb_put(rose_neigh->ax25); in rose_remove_neigh()
242 kfree(rose_neigh->digipeat); in rose_remove_neigh()
243 kfree(rose_neigh); in rose_remove_neigh()
248 if (s->next == rose_neigh) { in rose_remove_neigh()
249 s->next = rose_neigh->next; in rose_remove_neigh()
250 if (rose_neigh->ax25) in rose_remove_neigh()
251 ax25_cb_put(rose_neigh->ax25); in rose_remove_neigh()
252 kfree(rose_neigh->digipeat); in rose_remove_neigh()
253 kfree(rose_neigh); in rose_remove_neigh()
299 struct rose_neigh *rose_neigh; in rose_del_node() local
319 rose_neigh = rose_neigh_list; in rose_del_node()
320 while (rose_neigh != NULL) { in rose_del_node()
322 &rose_neigh->callsign) == 0 && in rose_del_node()
323 rose_neigh->dev == dev) in rose_del_node()
325 rose_neigh = rose_neigh->next; in rose_del_node()
328 if (rose_neigh == NULL) { in rose_del_node()
334 if (rose_node->neighbour[i] == rose_neigh) { in rose_del_node()
335 rose_neigh->count--; in rose_del_node()
337 if (rose_neigh->count == 0 && rose_neigh->use == 0) in rose_del_node()
338 rose_remove_neigh(rose_neigh); in rose_del_node()
373 struct rose_neigh *sn; in rose_add_loopback_neigh()
375 rose_loopback_neigh = kmalloc(sizeof(struct rose_neigh), GFP_KERNEL); in rose_add_loopback_neigh()
481 struct rose_neigh *s, *rose_neigh; in rose_rt_device_down() local
487 rose_neigh = rose_neigh_list; in rose_rt_device_down()
488 while (rose_neigh != NULL) { in rose_rt_device_down()
489 s = rose_neigh; in rose_rt_device_down()
490 rose_neigh = rose_neigh->next; in rose_rt_device_down()
555 struct rose_neigh *s, *rose_neigh; in rose_clear_routes() local
561 rose_neigh = rose_neigh_list; in rose_clear_routes()
571 while (rose_neigh != NULL) { in rose_clear_routes()
572 s = rose_neigh; in rose_clear_routes()
573 rose_neigh = rose_neigh->next; in rose_clear_routes()
660 struct rose_route *rose_route_free_lci(unsigned int lci, struct rose_neigh *neigh) in rose_route_free_lci()
675 struct rose_neigh *rose_get_neigh(rose_address *addr, unsigned char *cause, in rose_get_neigh()
678 struct rose_neigh *res = NULL; in rose_get_neigh()
764 static void rose_del_route_by_neigh(struct rose_neigh *rose_neigh) in rose_del_route_by_neigh() argument
768 rose_neigh->restarted = 0; in rose_del_route_by_neigh()
770 rose_stop_t0timer(rose_neigh); in rose_del_route_by_neigh()
771 rose_start_ftimer(rose_neigh); in rose_del_route_by_neigh()
773 skb_queue_purge(&rose_neigh->queue); in rose_del_route_by_neigh()
780 if ((rose_route->neigh1 == rose_neigh && rose_route->neigh2 == rose_neigh) || in rose_del_route_by_neigh()
781 (rose_route->neigh1 == rose_neigh && rose_route->neigh2 == NULL) || in rose_del_route_by_neigh()
782 (rose_route->neigh2 == rose_neigh && rose_route->neigh1 == NULL)) { in rose_del_route_by_neigh()
789 if (rose_route->neigh1 == rose_neigh) { in rose_del_route_by_neigh()
795 if (rose_route->neigh2 == rose_neigh) { in rose_del_route_by_neigh()
813 struct rose_neigh *rose_neigh; in rose_link_failed() local
816 rose_neigh = rose_neigh_list; in rose_link_failed()
817 while (rose_neigh != NULL) { in rose_link_failed()
818 if (rose_neigh->ax25 == ax25) in rose_link_failed()
820 rose_neigh = rose_neigh->next; in rose_link_failed()
823 if (rose_neigh != NULL) { in rose_link_failed()
824 rose_neigh->ax25 = NULL; in rose_link_failed()
827 rose_del_route_by_neigh(rose_neigh); in rose_link_failed()
828 rose_kill_by_neigh(rose_neigh); in rose_link_failed()
839 struct rose_neigh *rose_neigh; in rose_link_device_down() local
841 for (rose_neigh = rose_neigh_list; rose_neigh != NULL; rose_neigh = rose_neigh->next) { in rose_link_device_down()
842 if (rose_neigh->dev == dev) { in rose_link_device_down()
843 rose_del_route_by_neigh(rose_neigh); in rose_link_device_down()
844 rose_kill_by_neigh(rose_neigh); in rose_link_device_down()
854 struct rose_neigh *rose_neigh, *new_neigh; in rose_route_frame() local
881 rose_neigh = rose_neigh_list; in rose_route_frame()
882 while (rose_neigh != NULL) { in rose_route_frame()
883 if (ax25cmp(&ax25->dest_addr, &rose_neigh->callsign) == 0 && in rose_route_frame()
884 ax25->ax25_dev->dev == rose_neigh->dev) in rose_route_frame()
886 rose_neigh = rose_neigh->next; in rose_route_frame()
889 if (rose_neigh == NULL) { in rose_route_frame()
898 rose_stop_ftimer(rose_neigh); in rose_route_frame()
905 rose_link_rx_restart(skb, rose_neigh, frametype); in rose_route_frame()
912 if ((sk = rose_find_socket(lci, rose_neigh)) != NULL) { in rose_route_frame()
944 res = rose_rx_call_request(skb, dev, rose_neigh, lci); in rose_route_frame()
950 rose_transmit_clear_request(rose_neigh, lci, ROSE_NOT_OBTAINABLE, 0); in rose_route_frame()
960 rose_route->neigh1 == rose_neigh) { in rose_route_frame()
981 rose_route->neigh2 == rose_neigh) { in rose_route_frame()
1019 rose_transmit_clear_request(rose_neigh, lci, ROSE_INVALID_FACILITY, 76); in rose_route_frame()
1032 rose_transmit_clear_request(rose_neigh, lci, ROSE_NOT_OBTAINABLE, 120); in rose_route_frame()
1039 rose_transmit_clear_request(rose_neigh, lci, cause, diagnostic); in rose_route_frame()
1044 rose_transmit_clear_request(rose_neigh, lci, ROSE_NETWORK_CONGESTION, 71); in rose_route_frame()
1049 rose_transmit_clear_request(rose_neigh, lci, ROSE_NETWORK_CONGESTION, 120); in rose_route_frame()
1059 rose_route->neigh1 = rose_neigh; in rose_route_frame()
1167 struct rose_neigh *rose_neigh; in rose_neigh_start() local
1174 for (rose_neigh = rose_neigh_list; rose_neigh && i < *pos; in rose_neigh_start()
1175 rose_neigh = rose_neigh->next, ++i); in rose_neigh_start()
1177 return (i == *pos) ? rose_neigh : NULL; in rose_neigh_start()
1185 : ((struct rose_neigh *)v)->next; in rose_neigh_next()
1203 struct rose_neigh *rose_neigh = v; in rose_neigh_show() local
1207 rose_neigh->number, in rose_neigh_show()
1208 (rose_neigh->loopback) ? "RSLOOP-0" : ax2asc(buf, &rose_neigh->callsign), in rose_neigh_show()
1209 rose_neigh->dev ? rose_neigh->dev->name : "???", in rose_neigh_show()
1210 rose_neigh->count, in rose_neigh_show()
1211 rose_neigh->use, in rose_neigh_show()
1212 (rose_neigh->dce_mode) ? "DCE" : "DTE", in rose_neigh_show()
1213 (rose_neigh->restarted) ? "yes" : "no", in rose_neigh_show()
1214 ax25_display_timer(&rose_neigh->t0timer) / HZ, in rose_neigh_show()
1215 ax25_display_timer(&rose_neigh->ftimer) / HZ); in rose_neigh_show()
1217 if (rose_neigh->digipeat != NULL) { in rose_neigh_show()
1218 for (i = 0; i < rose_neigh->digipeat->ndigi; i++) in rose_neigh_show()
1219 seq_printf(seq, " %s", ax2asc(buf, &rose_neigh->digipeat->calls[i])); in rose_neigh_show()
1341 struct rose_neigh *s, *rose_neigh = rose_neigh_list; in rose_rt_free() local
1345 while (rose_neigh != NULL) { in rose_rt_free()
1346 s = rose_neigh; in rose_rt_free()
1347 rose_neigh = rose_neigh->next; in rose_rt_free()