Buenas tardes,
Quisiera consultar en dónde se espera sea implementada la actualización de las interfaces de nuestro router. Es decir, los campos .neighbor_ip y .neighbor_id del tipo struct sr_if.
.
El resto de estructuras que requieren actualizarse periódicamente (lista de vecinos, y topología) se trabajan de manera modular, ejecutando funciones especializadas en hilos separados. Por tanto, parececiera que actualizar interfaces no encaja como responsabilidad de ningún método en el código dado; eso sucita mi duda.
Saludos,
-Jero
En respuesta a Jerónimo Ismael Acosta Monteavaro
Re: Actualización de interfaces
de Eduardo Grampin -
Hola,
Existen funciones de mantenimiento de los vecinos que se pueden invocar cuando sea necesario, en particular cuando se necesite refrescar o crear un vecino nuevo como parte de la solución.
Saludos,
Eduardo
Existen funciones de mantenimiento de los vecinos que se pueden invocar cuando sea necesario, en particular cuando se necesite refrescar o crear un vecino nuevo como parte de la solución.
Saludos,
Eduardo
En respuesta a Eduardo Grampin
Re: Actualización de interfaces
Hola,
He visto esas funciones. Entiendo que se refiere a las definidas en pwospf_neighbors.h, ¿correcto?. Ese módulo trabaja con la estructura g_neighbors exclusivamente, no muta el estado de ninguna interfaz. En particular, cuando se invoque delete_neighbor será liberada la memoria de un ospfv2_neighbor, pero el campo .neighbor_id de la interfaz sr_if correspondiente no será asignada a 0 como debería. Por lo menos no por esa función. De modo semejante, add_neighbor no coloca en .neighbor_id el valor que allí se requiere.
Las funciones que mencioné son invocadas en el hilo g_neighbors_thread. También hay un hilo (y función/es) para el mantenimiento de la estructura g_topology. ¿En dónde debemos realizar el mantenimiento del estado de las interfaces?.
Aprovecho a añadir: las funciones que mencioné no indican qué vecinos o entradas de la topología están siendo eliminadas (cuando se eliminan). Si se quiere conocer qué interfaces hay que actualizar, no se me ocurre otra forma (sin modificar su código) que no implique volver a iterar sobre las diferentes listas otra vez, cosa que presiento puede ser innecesariamente ineficiente. Aunque podría no estarme percatando de una opción mejor, claro.
Era eso a lo que me refería. ¿Qué opina, profe?
Saludos,
-Jero
He visto esas funciones. Entiendo que se refiere a las definidas en pwospf_neighbors.h, ¿correcto?. Ese módulo trabaja con la estructura g_neighbors exclusivamente, no muta el estado de ninguna interfaz. En particular, cuando se invoque delete_neighbor será liberada la memoria de un ospfv2_neighbor, pero el campo .neighbor_id de la interfaz sr_if correspondiente no será asignada a 0 como debería. Por lo menos no por esa función. De modo semejante, add_neighbor no coloca en .neighbor_id el valor que allí se requiere.
Las funciones que mencioné son invocadas en el hilo g_neighbors_thread. También hay un hilo (y función/es) para el mantenimiento de la estructura g_topology. ¿En dónde debemos realizar el mantenimiento del estado de las interfaces?.
Aprovecho a añadir: las funciones que mencioné no indican qué vecinos o entradas de la topología están siendo eliminadas (cuando se eliminan). Si se quiere conocer qué interfaces hay que actualizar, no se me ocurre otra forma (sin modificar su código) que no implique volver a iterar sobre las diferentes listas otra vez, cosa que presiento puede ser innecesariamente ineficiente. Aunque podría no estarme percatando de una opción mejor, claro.
Era eso a lo que me refería. ¿Qué opina, profe?
Saludos,
-Jero
En respuesta a Jerónimo Ismael Acosta Monteavaro
Re: Actualización de interfaces
de Matias Richart -
Hola Jerónimo,
Estás en lo correcto, con el código que tienen disponible es un poco complicado actualizar las interfaces.
Hemos actualizado el código para que sea mas fácil y modular.
Ahora la función que chequea los vecinos devuelve una lista de los vecinos eliminados para que puedan actualizar las interfaces.
Tengan en cuenta que la lista es una copia y deben gestionar ustedes la memoria.
Saludos
Estás en lo correcto, con el código que tienen disponible es un poco complicado actualizar las interfaces.
Hemos actualizado el código para que sea mas fácil y modular.
Ahora la función que chequea los vecinos devuelve una lista de los vecinos eliminados para que puedan actualizar las interfaces.
Tengan en cuenta que la lista es una copia y deben gestionar ustedes la memoria.
Saludos