Interfaz de programación de red
Una interfaz de programación de red, o NPI, define la interfaz entre los módulos de red que se pueden conectar entre sí. Un módulo de cliente registrado como cliente de un NPI determinado solo se puede asociar a módulos de proveedor registrados como proveedores del mismo NPI. Del mismo modo, un módulo de proveedor registrado como proveedor de un NPI determinado solo se puede asociar a módulos cliente registrados como clientes del mismo NPI.
Cada NPI define los siguientes elementos:
Identificador NPI que identifica de forma única el NPI. Un módulo de red especifica un identificador NPI para indicar el NPI determinado que admite cuando el módulo de red se registra en el Registrador de módulos de red (NMR). Un módulo de red puede admitir varias NPIs registrándose con NMR varias veces, una vez por cada NPI que admita. NmR iniciará la asociación de un módulo de cliente a un módulo de proveedor solo si ambos admiten el mismo NPI.
Estructura de características de cliente opcional que especifica las características específicas de NPI de cada módulo de cliente. Estas características específicas de NPI pueden incluir elementos como la versión (o las versiones) del NPI que admite un módulo de cliente, o qué familia de direcciones o protocolo requiere un módulo cliente. Un módulo de proveedor puede usar la información contenida en la estructura de características de cliente de un módulo de cliente para determinar si se asociará al módulo cliente. Si un NPI no define ninguna característica de cliente específica de NPI, esta estructura no es necesaria.
Estructura de características de proveedor opcional que especifica las características específicas de NPI de cada módulo de proveedor. Estas características específicas de NPI pueden incluir elementos como la versión (o las versiones) del NPI que admite un módulo de proveedor, o qué familias o protocolos admite un módulo de proveedor. Un módulo cliente puede usar la información contenida en la estructura de características de cliente de un módulo de proveedor para determinar si se asociará al módulo de proveedor. Si un NPI no define ninguna característica de proveedor específica de NPI, esta estructura no es necesaria.
Cero o más funciones de devolución de llamada del módulo cliente. Después de que un módulo de proveedor se adjunte correctamente a un módulo cliente, el módulo de proveedor puede acceder a la funcionalidad del módulo cliente llamando a las funciones de devolución de llamada del módulo cliente.
Una o varias funciones del módulo de proveedor. Después de que un módulo cliente se adjunte correctamente a un módulo de proveedor, el módulo cliente puede acceder a la funcionalidad del módulo de proveedor mediante una llamada a las funciones del módulo del proveedor.
Estructura de tabla de distribución de cliente que contiene punteros de función a cada una de las funciones de devolución de llamada del módulo cliente. Si un NPI no define ninguna función de devolución de llamada del módulo cliente, esta estructura no es necesaria.
Estructura de tabla de distribución de proveedores que contiene punteros de función a cada una de las funciones del módulo de proveedor.
Un módulo de cliente que admite un NPI determinado usa los elementos definidos por el NPI para implementar el lado cliente de la interfaz. Del mismo modo, un módulo de proveedor que admite un NPI determinado usa los elementos definidos por el NPI para implementar el lado del proveedor de la interfaz.
Todos los elementos definidos por un NPI son opacos para el NMR, excepto para el identificador NPI. NmR usa el identificador NPI para determinar qué módulos de cliente se deben adjuntar a qué módulos de proveedor.