Symbol: rose_route
include/net/rose.h
120
struct rose_route *next;
include/net/rose.h
232
struct rose_route *rose_route_free_lci(unsigned int, struct rose_neigh *);
net/rose/rose_route.c
1000
rose_transmit_link(skb, rose_route->neigh1);
net/rose/rose_route.c
1002
rose_remove_route(rose_route);
net/rose/rose_route.c
1007
rose_remove_route(rose_route);
net/rose/rose_route.c
1011
rose_route = rose_route->next;
net/rose/rose_route.c
1036
rose_route = rose_route_list;
net/rose/rose_route.c
1037
while (rose_route != NULL) {
net/rose/rose_route.c
1038
if (rose_route->rand == facilities.rand &&
net/rose/rose_route.c
1039
rosecmp(src_addr, &rose_route->src_addr) == 0 &&
net/rose/rose_route.c
1040
ax25cmp(&facilities.dest_call, &rose_route->src_call) == 0 &&
net/rose/rose_route.c
1041
ax25cmp(&facilities.source_call, &rose_route->dest_call) == 0) {
net/rose/rose_route.c
1045
rose_route = rose_route->next;
net/rose/rose_route.c
1058
if ((rose_route = kmalloc_obj(*rose_route, GFP_ATOMIC)) == NULL) {
net/rose/rose_route.c
1063
rose_route->lci1 = lci;
net/rose/rose_route.c
1064
rose_route->src_addr = *src_addr;
net/rose/rose_route.c
1065
rose_route->dest_addr = *dest_addr;
net/rose/rose_route.c
1066
rose_route->src_call = facilities.dest_call;
net/rose/rose_route.c
1067
rose_route->dest_call = facilities.source_call;
net/rose/rose_route.c
1068
rose_route->rand = facilities.rand;
net/rose/rose_route.c
1069
rose_route->neigh1 = rose_neigh;
net/rose/rose_route.c
107
if (rose_route->ndigis != 0) {
net/rose/rose_route.c
1070
rose_route->lci2 = new_lci;
net/rose/rose_route.c
1071
rose_route->neigh2 = new_neigh;
net/rose/rose_route.c
1073
rose_neigh_hold(rose_route->neigh1);
net/rose/rose_route.c
1074
rose_neigh_hold(rose_route->neigh2);
net/rose/rose_route.c
1076
rose_route->next = rose_route_list;
net/rose/rose_route.c
1077
rose_route_list = rose_route;
net/rose/rose_route.c
1080
skb->data[0] |= (rose_route->lci2 >> 8) & 0x0F;
net/rose/rose_route.c
1081
skb->data[1] = (rose_route->lci2 >> 0) & 0xFF;
net/rose/rose_route.c
1083
rose_transmit_link(skb, rose_route->neigh2);
net/rose/rose_route.c
116
rose_neigh->digipeat->ndigi = rose_route->ndigis;
net/rose/rose_route.c
119
for (i = 0; i < rose_route->ndigis; i++) {
net/rose/rose_route.c
121
rose_route->digipeaters[i];
net/rose/rose_route.c
1230
struct rose_route *rose_route;
net/rose/rose_route.c
1237
for (rose_route = rose_route_list; rose_route && i < *pos;
net/rose/rose_route.c
1238
rose_route = rose_route->next, ++i);
net/rose/rose_route.c
1240
return (i == *pos) ? rose_route : NULL;
net/rose/rose_route.c
1248
: ((struct rose_route *)v)->next;
net/rose/rose_route.c
1265
struct rose_route *rose_route = v;
net/rose/rose_route.c
1267
if (rose_route->neigh1)
net/rose/rose_route.c
1270
rose_route->lci1,
net/rose/rose_route.c
1271
rose2asc(rsbuf, &rose_route->src_addr),
net/rose/rose_route.c
1272
ax2asc(buf, &rose_route->src_call),
net/rose/rose_route.c
1273
rose_route->neigh1->number);
net/rose/rose_route.c
1278
if (rose_route->neigh2)
net/rose/rose_route.c
1281
rose_route->lci2,
net/rose/rose_route.c
1282
rose2asc(rsbuf, &rose_route->dest_addr),
net/rose/rose_route.c
1283
ax2asc(buf, &rose_route->dest_call),
net/rose/rose_route.c
1284
rose_route->neigh2->number);
net/rose/rose_route.c
1307
struct rose_route *u, *rose_route = rose_route_list;
net/rose/rose_route.c
1327
while (rose_route != NULL) {
net/rose/rose_route.c
1328
u = rose_route;
net/rose/rose_route.c
1329
rose_route = rose_route->next;
net/rose/rose_route.c
142
if (rose_tmpn->mask > rose_route->mask) {
net/rose/rose_route.c
157
rose_node->address = rose_route->address;
net/rose/rose_route.c
158
rose_node->mask = rose_route->mask;
net/rose/rose_route.c
255
static void rose_remove_route(struct rose_route *rose_route)
net/rose/rose_route.c
257
struct rose_route *s;
net/rose/rose_route.c
259
if (rose_route->neigh1 != NULL)
net/rose/rose_route.c
260
rose_neigh_put(rose_route->neigh1);
net/rose/rose_route.c
262
if (rose_route->neigh2 != NULL)
net/rose/rose_route.c
263
rose_neigh_put(rose_route->neigh2);
net/rose/rose_route.c
265
if ((s = rose_route_list) == rose_route) {
net/rose/rose_route.c
266
rose_route_list = rose_route->next;
net/rose/rose_route.c
267
kfree(rose_route);
net/rose/rose_route.c
272
if (s->next == rose_route) {
net/rose/rose_route.c
273
s->next = rose_route->next;
net/rose/rose_route.c
274
kfree(rose_route);
net/rose/rose_route.c
286
static int rose_del_node(struct rose_route_struct *rose_route,
net/rose/rose_route.c
298
if ((rose_node->mask == rose_route->mask) &&
net/rose/rose_route.c
299
(rosecmpm(&rose_route->address, &rose_node->address,
net/rose/rose_route.c
300
rose_route->mask) == 0))
net/rose/rose_route.c
312
if (ax25cmp(&rose_route->neighbour,
net/rose/rose_route.c
42
static struct rose_route *rose_route_list;
net/rose/rose_route.c
51
static int __must_check rose_add_node(struct rose_route_struct *rose_route,
net/rose/rose_route.c
528
struct rose_route *s, *rose_route;
net/rose/rose_route.c
531
rose_route = rose_route_list;
net/rose/rose_route.c
532
while (rose_route != NULL) {
net/rose/rose_route.c
533
s = rose_route;
net/rose/rose_route.c
534
rose_route = rose_route->next;
net/rose/rose_route.c
63
if ((rose_node->mask == rose_route->mask) &&
net/rose/rose_route.c
64
(rosecmpm(&rose_route->address, &rose_node->address,
net/rose/rose_route.c
65
rose_route->mask) == 0))
net/rose/rose_route.c
664
struct rose_route *rose_route_free_lci(unsigned int lci, struct rose_neigh *neigh)
net/rose/rose_route.c
666
struct rose_route *rose_route;
net/rose/rose_route.c
668
for (rose_route = rose_route_list; rose_route != NULL; rose_route = rose_route->next)
net/rose/rose_route.c
669
if ((rose_route->neigh1 == neigh && rose_route->lci1 == lci) ||
net/rose/rose_route.c
670
(rose_route->neigh2 == neigh && rose_route->lci2 == lci))
net/rose/rose_route.c
671
return rose_route;
net/rose/rose_route.c
732
struct rose_route_struct rose_route;
net/rose/rose_route.c
738
if (copy_from_user(&rose_route, arg, sizeof(struct rose_route_struct)))
net/rose/rose_route.c
740
if ((dev = rose_ax25_dev_find(rose_route.device)) == NULL)
net/rose/rose_route.c
742
if (rose_dev_exists(&rose_route.address)) /* Can't add routes to ourself */
net/rose/rose_route.c
744
if (rose_route.mask > 10) /* Mask can't be more than 10 digits */
net/rose/rose_route.c
746
if (rose_route.ndigis > AX25_MAX_DIGIS)
net/rose/rose_route.c
748
err = rose_add_node(&rose_route, dev);
net/rose/rose_route.c
752
if (copy_from_user(&rose_route, arg, sizeof(struct rose_route_struct)))
net/rose/rose_route.c
754
if ((dev = rose_ax25_dev_find(rose_route.device)) == NULL)
net/rose/rose_route.c
756
err = rose_del_node(&rose_route, dev);
net/rose/rose_route.c
77
if (ax25cmp(&rose_route->neighbour,
net/rose/rose_route.c
771
struct rose_route *rose_route, *s;
net/rose/rose_route.c
782
rose_route = rose_route_list;
net/rose/rose_route.c
784
while (rose_route != NULL) {
net/rose/rose_route.c
785
if ((rose_route->neigh1 == rose_neigh && rose_route->neigh2 == rose_neigh) ||
net/rose/rose_route.c
786
(rose_route->neigh1 == rose_neigh && rose_route->neigh2 == NULL) ||
net/rose/rose_route.c
787
(rose_route->neigh2 == rose_neigh && rose_route->neigh1 == NULL)) {
net/rose/rose_route.c
788
s = rose_route->next;
net/rose/rose_route.c
789
rose_remove_route(rose_route);
net/rose/rose_route.c
790
rose_route = s;
net/rose/rose_route.c
794
if (rose_route->neigh1 == rose_neigh) {
net/rose/rose_route.c
795
rose_neigh_put(rose_route->neigh1);
net/rose/rose_route.c
796
rose_route->neigh1 = NULL;
net/rose/rose_route.c
797
rose_transmit_clear_request(rose_route->neigh2, rose_route->lci2, ROSE_OUT_OF_ORDER, 0);
net/rose/rose_route.c
800
if (rose_route->neigh2 == rose_neigh) {
net/rose/rose_route.c
801
rose_neigh_put(rose_route->neigh2);
net/rose/rose_route.c
802
rose_route->neigh2 = NULL;
net/rose/rose_route.c
803
rose_transmit_clear_request(rose_route->neigh1, rose_route->lci1, ROSE_OUT_OF_ORDER, 0);
net/rose/rose_route.c
806
rose_route = rose_route->next;
net/rose/rose_route.c
861
struct rose_route *rose_route;
net/rose/rose_route.c
91
rose_neigh->callsign = rose_route->neighbour;
net/rose/rose_route.c
967
rose_route = rose_route_list;
net/rose/rose_route.c
968
while (rose_route != NULL) {
net/rose/rose_route.c
969
if (rose_route->lci1 == lci &&
net/rose/rose_route.c
970
rose_route->neigh1 == rose_neigh) {
net/rose/rose_route.c
973
rose_remove_route(rose_route);
net/rose/rose_route.c
975
} else if (rose_route->neigh2 != NULL) {
net/rose/rose_route.c
977
skb->data[0] |= (rose_route->lci2 >> 8) & 0x0F;
net/rose/rose_route.c
978
skb->data[1] = (rose_route->lci2 >> 0) & 0xFF;
net/rose/rose_route.c
979
rose_transmit_link(skb, rose_route->neigh2);
net/rose/rose_route.c
981
rose_remove_route(rose_route);
net/rose/rose_route.c
986
rose_remove_route(rose_route);
net/rose/rose_route.c
990
if (rose_route->lci2 == lci &&
net/rose/rose_route.c
991
rose_route->neigh2 == rose_neigh) {
net/rose/rose_route.c
994
rose_remove_route(rose_route);
net/rose/rose_route.c
996
} else if (rose_route->neigh1 != NULL) {
net/rose/rose_route.c
998
skb->data[0] |= (rose_route->lci1 >> 8) & 0x0F;
net/rose/rose_route.c
999
skb->data[1] = (rose_route->lci1 >> 0) & 0xFF;