linux内核源码分析--核心网络文件和目录

news2024/11/26 15:26:52

3-2显示/proc/sys网络代码所使用主要目录每个目录而言列出了哪一章描述文件

proc/sys/net

bridge ipv4 core

route neigh conf

3-2/proc/sys/net 核心目录

根据前借所述我们来看net树根是如何定义的以及引导期间如何注册

对于如图3-2所示每个目录以及这些目录每个文件而言都有一个ctl_table 实体3-3显示3-2所示大多数目录ctl_table实体在何处定义以及父子关系什么为了

使具有更高可读性并没有包括所有目录

3-3三个方块显示ctl_table初始化三个实例注意

netdev_max_bcklog文件分派一个proc_handler例程因为netdev_max_backlog是一个整数来自于用户输入proc_dointvec读取

min_delay 文件分派proc_handlerstrategy两个因为内核变量ip_rt_min_delay jiffies表示但是用户输入输出都是表示因此这两个例程可以完成转换jiffies

ip_local_port_range 文件是一个有趣实例这个文件允许用户配置一个范围定义两个值这恶搞范围必须遵循一个最小值一个最大值规范因此所选strategyproc_handler例程必须能够管理一个蒸熟值数组这些表示这个范围并且用于确保用户输入遵循范围

ioctl

3-4顶端可以看到ioctl调用如何发布来看一个包括ifconfig示例

稍早我们就说过ifconfig命令使用ioctl内核通信例如系统管理输入ifconfig eth0 mtu1250这样命令用以改变接口eth0MTUifconfig打开一个套接字管理员那里接受的信息初始化一个本地数据结构然后ioctl 调用传给内核SIOCSIFMTU命令标识符

struct ifreq data;

fd = socket(PF_INET, SOCK_DGRAM, 0);

err = ioctl(fd, SIOCSIFMTU, &data);

内核会在几个不同地方处理ioctl命令3-4显示网络代码最常用ioctl命令如何sock_ioctl分派并且路由正确函数处理例程我们不说明sock_ioctl如何调用或者UDPTCP这些传输协议如何注册处理例程如果你想深入挖掘这部分代码可以使用作为起点有关本书谈及例程3-4提供正确章节指引

kernel/sysctl.c --root_table

.proname="net"

.child = net_table

net/sysctl_net.c

net_table

.proname = "core"

.child = core_table

proname = ipv4

.child = ipv4_table

net/core/sysctl_net_core.c

core_table

net/ipv4/sysctl_net.c

.proname = netdev_max_backlog

.data = &netdev_max_backlog

.maxlen = sizeof(int)

.mode = 0644

.pro_handler = &proc_dointvec

net/ipv4/route.c

ipv4_route_table

.proname = min_delay

.data = &ip_rt_min_delay

.maxlen = sizeof(int)

.mode = 0644

.provc_handler = &proc_dointvec_jiffies

.strategy = &sysctl_jiffies

3-3 /proc/sys/net创建核心目录

为了方便起见图中ioctl命令名称已经做了分解例如用于一条路径新增路由表命令SIOCADDRT显示SIOC ADDR RT强调两个感兴趣组建ADD 表示添加什么RT表示添加一条路由多数命令遵循语法通常当一个对象类型可以读写命令名称多一个组件G是指取得S是指设置SIOCGIFADDRSIOCSIFADDR这两个命令可以接口新增或者删除IP地址就是实际例子先前ifconfig范例所见SIOCSIFMTU设定S接口IF最大传输单位MTU这件事dev_ioctl但是并没有出现3-4

网络ioctl命令列在include/linux.sockio.h设备驱动程序可以代码定义命令范围介于SIOCDEVPRIVATESIOCDEVPRIVATE 之间例如可以看一看隧道设备使用四个私有命令include/linux/if_tunnel.h是如何定义然而使用私有ioctl命令被反对不鼓励

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1639387.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringCloudAlibaba:3.1dubbo

dubbo 概述 简介 Apache Dubbo 是一款 RPC 服务开发框架,用于解决微服务架构下的服务治理与通信问题 官方提供了 Java、Golang、Rust 等多语言 SDK 实现 Dubbo的开源故事 最早在2008年,阿里巴巴就将Dubbo捐献到开源社区,它很快成为了国内开源…

R语言的学习—5—多元数据直观表示

1、数据读取 ## 数据整理 d3.1read.xlsx(adstats.xlsx,d3.1,rowNamesT);d3.1 #读取adstats.xlsx表格d3.1数据 barplot(apply(d3.1,1,mean)) #按行做均值条形图 barplot(apply(d3.1,1,mean),las3) barplot(apply(d3.1,2,mean)) #按列做均值图条形图 barplot(a…

JavaEE >> Spring MVC(1)

MVC MVC:Model View Controller 的缩写,是一种软件架构模式,将软件系统分为模型、视图和控制器三个部分。 Mode(模型):是应⽤程序中⽤于处理应⽤程序数据逻辑的部分。通常模型对象负责在数据库中存取数据…

【C++STL详解(五)】--------list的介绍与使用

目录 前言 一、list的介绍 二、list的使用 Ⅰ.默认成员函数 1、构造函数 2、赋值重载 3、析构函数 Ⅱ、容量 1.size() Ⅲ、迭代器与遍历 1.beginend (正向迭代器) 2.rbeginrend (反向迭代器) 3.front 4.back Ⅳ、增删查改 1.push_front 2.pop_front 3.push_b…

【跟马少平老师学AI】-【神经网络是怎么实现的】(九)长短期记忆网络

一句话归纳: 1)RNN也会存在梯度消失的问题。 2)同一句话,对于不同的任务,句中不同的词起的作用也不一样。 3)LSTM(长短期记忆)子网络: 门,让输入经过运算&…

目标检测算法YOLOv4简介

YOLOv4由Alexey Bochkovskiy等人于2020年提出,论文名为:《YOLOv4: Optimal Speed and Accuracy of Object Detection》,论文见:https://arxiv.org/pdf/2004.10934 ,GitHub Code:https://github.com/AlexeyA…

05_机器学习赛事_优惠券使用预测

1. 函数库导入 # import libraries necessary for this project import os, sys, pickleimport numpy as np import pandas as pdimport matplotlib.pyplot as plt import matplotlib.dates as mdatesimport seaborn as sns import datetime as dtfrom datetime import datefr…

webm视频转mp4,webm视频格式转换,6个方法介绍!

如何把webm格式转换成mp4?随着生活节奏的加快,视频的应用范围愈发广泛,我们较常见于短视频平台、网站页面等等。同样的,视频已经成为当前分享信息、传播信息的关键工具之一。在技术不断革新的基础上,视频技术也在不断完…

C++深度解析教程笔记4

C深度解析教程笔记4 第7课 - 函数参数的扩展实验-默认参数实验-从右提供的默认参数实验-默认值与占位参数结合小结 第8课 - 函数重载分析(上)实验-函数重载实验-有歧义的重载实验-重载函数是同一函数吗查看vs2010的obj文件的符号表 小结 第9课 - 函数重载…

How a window is added to windowmanager when you start an activity

finally call mWindowSession.addToDisplayAsUser how surfacecontrol is showed when you start an activity

Redis教程——事务

在上篇文章我们学习了Redis教程——持久化(AOF),这篇文章我们学习Redis教程——事务。 Redis事务 事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求&a…

ROS1快速入门学习笔记 - 014launch启动文件的使用方法

一、定义 Launch文件&#xff1a;通过XML文件实现多节点的配置和启动&#xff08;可自动启动ROSMaster&#xff09; 二、常用语法 1. 根标签 <launch> - launch文件中的根元素采用<launch>标签定义 <launch>表示开始&#xff1b;<launch>表示结束&…

搜狗输入法自动切换双拼方案

解决方法&#xff0c; 安装 13.2.0 &#xff0c; to be verified SGSRv13206899_搜狗输入法13.2.0 需要关闭自动升级

某米社区请求data类型multipart_form-data分析

随笔记录 之前未曾遇到请求的Content-Type:multipart/form-data; boundary=----WebKitFormBoundary9Fxpi3Dvlnhm3MKq,今天就简单是根据目标网站进行分析下,目标站点是:aHR0cHM6Ly93ZWIudmlwLm1pdWkuY29tL3BhZ2UvaW5mby9taW8vbWlvL3BjU2VhcmNoP2Zyb21QYXRobmFtZT1taW9Cb2FyZ…

STL中常见的算法及其应用(一)

总述: 一、常见的遍历算法 1、for_each//遍历容器 函数原型: for_each(iterator beg, iterator end, _func); beg:开始迭代器; end:结束迭代器; _func:函数或者函数对象; 总结:for_each函数在STL中十分重要,需要熟练掌握 示例: std::for_each 是 C++ 标准…

如何利用ChatGPT撰写满分文案:技巧与实例解析

在当今社会&#xff0c;随着企业越来越重视宣传推广&#xff0c;文案写作已成为关键的营销手段之一。同时&#xff0c;人工智能的快速发展为文案创作提供了新的工具和方法。例如&#xff0c;ChatGPT这种基于自然语言处理的模型&#xff0c;在协助撰写多种文案方面展现出了极大的…

A4的PDF按A3打印

先用办公软件打开&#xff0c;比如WPS。 选择打印-属性。 纸张选A3&#xff0c;如果是双面打印&#xff0c;选短边装订&#xff0c;然后在版面-页面排版-每张页数&#xff08;N合1&#xff09;选2。 不同打印机的具体配置可能不一样&#xff0c;但大体都是这个套路。

【画图】读取无人机IMU数据并打印成log用matlab分析

一、修改IMU频率 原来的imu没有加速度信息&#xff0c;查看加速度信息的指令为&#xff1a; rostopic echo /mavros/imu/data 修改imu频率&#xff0c;分别修改的是 原始IMU数据话题 /mavros/imu/data_raw。飞控计算过后的IMU数据 /mavros/imu/data rosrun mavros mavcmd l…

算法提高之方格取数

算法提高之方格取数 核心思想&#xff1a;数字三角形模型 考虑同时走两条路 用f[i1][j1][i2][j2]表示两条路取值 因为两条路步数一定相同 即i1j1 i2j2 设为k 则f[k][i1][i2]即可表示两条路 k n*2 dp方法如图 #include <iostream>#include <cstring>#inclu…

【系统架构师】-选择题(十)

1、某计算机系统页面大小为2K&#xff0c;进程P1的页面变换表如下图所示&#xff0c;若P1要访问数据的逻辑地址为十六进制1B1AH&#xff0c;那么该逻辑地址经过变换后&#xff0c;其对应的物理地址应为十六进制 &#xff08;231AH&#xff09; 。 四位换一位 逻辑地址1B1AH对应…