Lines Matching defs:rose_neigh
40 static struct rose_neigh *rose_neigh_list;
45 struct rose_neigh *rose_loopback_neigh;
55 struct rose_neigh *rose_neigh;
75 rose_neigh = rose_neigh_list;
76 while (rose_neigh != NULL) {
78 &rose_neigh->callsign) == 0 &&
79 rose_neigh->dev == dev)
81 rose_neigh = rose_neigh->next;
84 if (rose_neigh == NULL) {
85 rose_neigh = kmalloc(sizeof(*rose_neigh), GFP_ATOMIC);
86 if (rose_neigh == NULL) {
91 rose_neigh->callsign = rose_route->neighbour;
92 rose_neigh->digipeat = NULL;
93 rose_neigh->ax25 = NULL;
94 rose_neigh->dev = dev;
95 rose_neigh->count = 0;
96 rose_neigh->use = 0;
97 rose_neigh->dce_mode = 0;
98 rose_neigh->loopback = 0;
99 rose_neigh->number = rose_neigh_no++;
100 rose_neigh->restarted = 0;
102 skb_queue_head_init(&rose_neigh->queue);
104 timer_setup(&rose_neigh->ftimer, NULL, 0);
105 timer_setup(&rose_neigh->t0timer, NULL, 0);
108 rose_neigh->digipeat =
110 if (rose_neigh->digipeat == NULL) {
111 kfree(rose_neigh);
116 rose_neigh->digipeat->ndigi = rose_route->ndigis;
117 rose_neigh->digipeat->lastrepeat = -1;
120 rose_neigh->digipeat->calls[i] =
122 rose_neigh->digipeat->repeated[i] = 0;
126 rose_neigh->next = rose_neigh_list;
127 rose_neigh_list = rose_neigh;
161 rose_node->neighbour[0] = rose_neigh;
180 rose_neigh->count++;
187 rose_node->neighbour[rose_node->count] = rose_neigh;
189 rose_neigh->count++;
226 static void rose_remove_neigh(struct rose_neigh *rose_neigh)
228 struct rose_neigh *s;
230 del_timer_sync(&rose_neigh->ftimer);
231 del_timer_sync(&rose_neigh->t0timer);
233 skb_queue_purge(&rose_neigh->queue);
235 if ((s = rose_neigh_list) == rose_neigh) {
236 rose_neigh_list = rose_neigh->next;
237 if (rose_neigh->ax25)
238 ax25_cb_put(rose_neigh->ax25);
239 kfree(rose_neigh->digipeat);
240 kfree(rose_neigh);
245 if (s->next == rose_neigh) {
246 s->next = rose_neigh->next;
247 if (rose_neigh->ax25)
248 ax25_cb_put(rose_neigh->ax25);
249 kfree(rose_neigh->digipeat);
250 kfree(rose_neigh);
296 struct rose_neigh *rose_neigh;
316 rose_neigh = rose_neigh_list;
317 while (rose_neigh != NULL) {
319 &rose_neigh->callsign) == 0 &&
320 rose_neigh->dev == dev)
322 rose_neigh = rose_neigh->next;
325 if (rose_neigh == NULL) {
331 if (rose_node->neighbour[i] == rose_neigh) {
332 rose_neigh->count--;
334 if (rose_neigh->count == 0 && rose_neigh->use == 0)
335 rose_remove_neigh(rose_neigh);
372 struct rose_neigh *sn;
374 rose_loopback_neigh = kmalloc(sizeof(struct rose_neigh), GFP_KERNEL);
480 struct rose_neigh *s, *rose_neigh;
486 rose_neigh = rose_neigh_list;
487 while (rose_neigh != NULL) {
488 s = rose_neigh;
489 rose_neigh = rose_neigh->next;
556 struct rose_neigh *s, *rose_neigh;
562 rose_neigh = rose_neigh_list;
572 while (rose_neigh != NULL) {
573 s = rose_neigh;
574 rose_neigh = rose_neigh->next;
665 struct rose_route *rose_route_free_lci(unsigned int lci, struct rose_neigh *neigh)
680 struct rose_neigh *rose_get_neigh(rose_address *addr, unsigned char *cause,
683 struct rose_neigh *res = NULL;
768 static void rose_del_route_by_neigh(struct rose_neigh *rose_neigh)
772 rose_neigh->restarted = 0;
774 rose_stop_t0timer(rose_neigh);
775 rose_start_ftimer(rose_neigh);
777 skb_queue_purge(&rose_neigh->queue);
784 if ((rose_route->neigh1 == rose_neigh && rose_route->neigh2 == rose_neigh) ||
785 (rose_route->neigh1 == rose_neigh && rose_route->neigh2 == NULL) ||
786 (rose_route->neigh2 == rose_neigh && rose_route->neigh1 == NULL)) {
793 if (rose_route->neigh1 == rose_neigh) {
799 if (rose_route->neigh2 == rose_neigh) {
817 struct rose_neigh *rose_neigh;
820 rose_neigh = rose_neigh_list;
821 while (rose_neigh != NULL) {
822 if (rose_neigh->ax25 == ax25)
824 rose_neigh = rose_neigh->next;
827 if (rose_neigh != NULL) {
828 rose_neigh->ax25 = NULL;
831 rose_del_route_by_neigh(rose_neigh);
832 rose_kill_by_neigh(rose_neigh);
843 struct rose_neigh *rose_neigh;
845 for (rose_neigh = rose_neigh_list; rose_neigh != NULL; rose_neigh = rose_neigh->next) {
846 if (rose_neigh->dev == dev) {
847 rose_del_route_by_neigh(rose_neigh);
848 rose_kill_by_neigh(rose_neigh);
859 struct rose_neigh *rose_neigh, *new_neigh;
890 rose_neigh = rose_neigh_list;
891 while (rose_neigh != NULL) {
892 if (ax25cmp(&ax25->dest_addr, &rose_neigh->callsign) == 0 &&
893 ax25->ax25_dev->dev == rose_neigh->dev)
895 rose_neigh = rose_neigh->next;
898 if (rose_neigh == NULL) {
907 rose_stop_ftimer(rose_neigh);
914 rose_link_rx_restart(skb, rose_neigh, frametype);
921 if ((sk = rose_find_socket(lci, rose_neigh)) != NULL) {
953 res = rose_rx_call_request(skb, dev, rose_neigh, lci);
959 rose_transmit_clear_request(rose_neigh, lci, ROSE_NOT_OBTAINABLE, 0);
969 rose_route->neigh1 == rose_neigh) {
990 rose_route->neigh2 == rose_neigh) {
1028 rose_transmit_clear_request(rose_neigh, lci, ROSE_INVALID_FACILITY, 76);
1041 rose_transmit_clear_request(rose_neigh, lci, ROSE_NOT_OBTAINABLE, 120);
1048 rose_transmit_clear_request(rose_neigh, lci, cause, diagnostic);
1053 rose_transmit_clear_request(rose_neigh, lci, ROSE_NETWORK_CONGESTION, 71);
1058 rose_transmit_clear_request(rose_neigh, lci, ROSE_NETWORK_CONGESTION, 120);
1068 rose_route->neigh1 = rose_neigh;
1156 struct rose_neigh *rose_neigh;
1163 for (rose_neigh = rose_neigh_list; rose_neigh && i < *pos;
1164 rose_neigh = rose_neigh->next, ++i);
1166 return (i == *pos) ? rose_neigh : NULL;
1174 : ((struct rose_neigh *)v)->next;
1192 struct rose_neigh *rose_neigh = v;
1194 /* if (!rose_neigh->loopback) { */
1196 rose_neigh->number,
1197 (rose_neigh->loopback) ? "RSLOOP-0" : ax2asc(buf, &rose_neigh->callsign),
1198 rose_neigh->dev ? rose_neigh->dev->name : "???",
1199 rose_neigh->count,
1200 rose_neigh->use,
1201 (rose_neigh->dce_mode) ? "DCE" : "DTE",
1202 (rose_neigh->restarted) ? "yes" : "no",
1203 ax25_display_timer(&rose_neigh->t0timer) / HZ,
1204 ax25_display_timer(&rose_neigh->ftimer) / HZ);
1206 if (rose_neigh->digipeat != NULL) {
1207 for (i = 0; i < rose_neigh->digipeat->ndigi; i++)
1208 seq_printf(seq, " %s", ax2asc(buf, &rose_neigh->digipeat->calls[i]));
1302 struct rose_neigh *s, *rose_neigh = rose_neigh_list;
1306 while (rose_neigh != NULL) {
1307 s = rose_neigh;
1308 rose_neigh = rose_neigh->next;