describe el procesamiento de datos en el controlador NIC y luego el flujo del paquete continúa hacia abajo. La última función del controlador NIC es netif_receive_skb. Vamos a empezar con él. Por simplicidad, que eliminó el código precompilado int netif_receive_skb (struct sk_buff * SKB) (net /core /dev.c) {packet_type struct * de tipo p, * pt_prev; int ret = NET_RX_DROP; unsigned tipo corto; //recibidas marcados marca de tiempo si (skb- >! stamp.tv_sec) net_timestamp (&skb- > sello); //si hay dev- > maestro. Entonces actualiza el skb_bond puntero correspondiente (SKB); //actualizar la CPU recibe estadísticas __get_cpu_var (netdev_rx_stat) .total ++; skb- > h.raw = skb- > nh.raw = skb- > datos; skb- > mac_len = skb- > nh.raw - skb- >! mac.raw; pt_prev = NULL; rcu_read_lock (); //un módulo de procesamiento list_for_each_entry_rcu todos los protocolos (de tipo p, &ptype_all, lista) {if (ptype- > dev |
|
ptype- > dev == skb- > dev) {if (pt_prev)
ret = deliver_skb (SKB, pt_prev); pt_prev = tipo p;}} //procesamiento fragmento handle_diverter (SKB); //procesamiento de puente si (handle_bridge (&skb, &pt_prev, &ret)) valla a cabo; type = skb- > protocolo; //llaman el módulo apropiado para procesar el protocolo. list_for_each_entry_rcu (PTYPE, &Amp; ptype_base [ntohs (tipo) y amp; 15], lista) {if (ptype- > == Tipo Tipo &&(ptype- > dev |!
|
ptype- > dev == skb- > dev)) {if (pt_prev)
ret = deliver_skb (SKB, pt_prev); pt_prev = tipo p;}} if (pt_prev) {ret = pt_prev- > func (SKB, skb- > dev, pt_prev);} else {kfree_skb (SKB); /* Jamal, ahora usted no será capaz de escapar de explicar * me cómo se va a utilizar esto: -) * /ret. = NET_RX_DROP;} Salida: rcu_read_unlock (); retorno ret;} esta función es reensamblaje principalmente fragmento completado, el procesamiento del puente, del módulo de procesamiento de llamadas diferentes capas de transporte de acuerdo con diferentes protocolos. El enfoque de esta sección es describir la implementación y el procesamiento de los puentes de Linux. La capa de protocolo de la capa de transporte se dará en los capítulos siguientes. Ingrese el código de procesamiento del puente: # si está definido (CONFIG_BRIDGE) |
|
definido (CONFIG_BRIDGE_MODULE) (/core /dev.c neto) int (* br_handle_frame_hook) (struct net_bridge_port * p, struct sk_buff ** pskb); estática __inline__ int handle_bridge (struct sk_buff ** pskb, struct packet_type ** pt_prev, int * Ret) {struct net_bridge_port * port; //loopback interface? ¿Interfaz no Ethernet? Si ((* pskb) - > pkt_type == PACKET_LOOPBACK |
|
(Puerto = rcu_dereference ((* pskb) - > dev- > br_port)) == NULL) return 0; si (* pt_prev) {* ret = deliver_skb (* pskb, * pt_prev); * pt_prev = NULL;}
//br_handle_frame_hook es un puntero de función de retorno br_handle_frame_hook mundial (puerto, pskb);} else # # define handle_bridge (SKB, pt_prev, RET) (0) #endif se puede ver en. Si se selecciona el modo puente durante la compilación, entrará en el módulo de procesamiento del puente. De lo contrario, es solo una función vacía y regresa directamente. ¿Cuál es la función representada por br_handle_frame_hook? ¿Cuál es el marco de procesamiento de datos del puente? Jeje Este es el problema que estamos analizando hoy.
en Linux linux rm eliminar archivos, la recuperación es más problemática, incluso si se restaura, e
La instalación de Linux es un poco aterradora para los principiantes: las partici
No hay un nuevo concepto en este artículo. Simplemente usamos herramientas de línea de comandos para
Redis es una base de datos de código-valor, de código abierto, basada en registros, que está escri
Explicación de por qué Linux se puede dividir en 4 sectores como máximo.
El archivo de inicio automático de Nginx ejecuta el error
PDF helper bajo el sistema Linux LinuxPDFeditor
Construye fácilmente tu propio servidor DNS bajo Linux
Linux /VPS CentOS yum descarga lenta? Instala el complemento Axel para acelerar el aspecto
Introducción al método de carga de archivos ISO bajo el sistema operativo Linux
¿Qué juega el kernel de Unix /linux en el sistema?
Método de configuración de los permisos de archivos y carpetas de Magento
Comando de montaje: Medios de almacenamiento externo de Linux Método de montaje
Subsistema vecino de la pila de protocolos de linux (recuperación de basura siete)
Cómo borrar comentarios sobre Sina Weibo
La línea de comandos de linux para modificar los métodos de IP 2
Windows 7 diversos métodos de instalación ventajas y desventajas de evaluación
Windows 2003 para completar el pequeño golpe de aislamiento de usuario de FTP
sistema operativo de escritorio win10 en más de
¿Quieres saber la dirección IP? Dos métodos te ayudarán a resolverla rápidamente.
Método de creación de acceso directo de suspensión del sistema Win7 (1)