rose_node
struct rose_node *next;
struct rose_node *rose_node;
for (rose_node = rose_node_list; rose_node && i < *pos;
rose_node = rose_node->next, ++i);
return (i == *pos) ? rose_node : NULL;
: ((struct rose_node *)v)->next;
const struct rose_node *rose_node = v;
rose2asc(rsbuf, &rose_node->address),
rose_node->mask,
rose_node->count);
for (i = 0; i < rose_node->count; i++)
seq_printf(seq, " %05d", rose_node->neighbour[i]->number);
struct rose_node *t, *rose_node = rose_node_list;
while (rose_node != NULL) {
t = rose_node;
rose_node = rose_node->next;
if (rose_node == NULL) {
rose_node = kmalloc_obj(*rose_node, GFP_ATOMIC);
if (rose_node == NULL) {
rose_node->address = rose_route->address;
rose_node->mask = rose_route->mask;
rose_node->count = 1;
rose_node->loopback = 0;
rose_node->neighbour[0] = rose_neigh;
rose_node_list = rose_node;
rose_node->next = NULL;
rose_tmpp->next = rose_node;
rose_node->next = NULL;
rose_node->next = rose_node_list;
rose_node_list = rose_node;
rose_tmpp->next = rose_node;
rose_node->next = rose_tmpn;
if (rose_node->count < 3) {
rose_node->neighbour[rose_node->count] = rose_neigh;
rose_node->count++;
static void rose_remove_node(struct rose_node *rose_node)
struct rose_node *s;
if ((s = rose_node_list) == rose_node) {
rose_node_list = rose_node->next;
kfree(rose_node);
if (s->next == rose_node) {
s->next = rose_node->next;
kfree(rose_node);
struct rose_node *rose_node;
rose_node = rose_node_list;
while (rose_node != NULL) {
if ((rose_node->mask == rose_route->mask) &&
(rosecmpm(&rose_route->address, &rose_node->address,
rose_node = rose_node->next;
if (rose_node == NULL || rose_node->loopback) {
for (i = 0; i < rose_node->count; i++) {
if (rose_node->neighbour[i] == rose_neigh) {
rose_node->count--;
if (rose_node->count == 0) {
rose_remove_node(rose_node);
rose_node->neighbour[0] =
rose_node->neighbour[1];
rose_node->neighbour[1] =
rose_node->neighbour[2];
static struct rose_node *rose_node_list;
struct rose_node *rose_node;
rose_node = rose_node_list;
while (rose_node != NULL) {
if ((rose_node->mask == 10) &&
(rosecmpm(address, &rose_node->address, 10) == 0) &&
rose_node->loopback)
rose_node = rose_node->next;
if (rose_node != NULL)
if ((rose_node = kmalloc_obj(*rose_node, GFP_ATOMIC)) == NULL) {
rose_node->address = *address;
rose_node->mask = 10;
rose_node->count = 1;
rose_node->loopback = 1;
rose_node->neighbour[0] = rose_loopback_neigh;
rose_node->next = rose_node_list;
rose_node_list = rose_node;
struct rose_node *rose_node;
rose_node = rose_node_list;
while (rose_node != NULL) {
if ((rose_node->mask == 10) &&
(rosecmpm(address, &rose_node->address, 10) == 0) &&
rose_node->loopback)
rose_node = rose_node->next;
if (rose_node == NULL)
rose_remove_node(rose_node);
struct rose_node *t, *rose_node;
rose_node = rose_node_list;
while (rose_node != NULL) {
t = rose_node;
rose_node = rose_node->next;
struct rose_node *rose_node, *rose_tmpn, *rose_tmpp;
struct rose_node *t, *rose_node;
rose_node = rose_node_list;
while (rose_node != NULL) {
t = rose_node;
rose_node = rose_node->next;
rose_node = rose_node_list;
while (rose_node != NULL) {
if ((rose_node->mask == rose_route->mask) &&
(rosecmpm(&rose_route->address, &rose_node->address,
rose_node = rose_node->next;
struct rose_node *node;
if (rose_node != NULL && rose_node->loopback) {