openWRT自学---对官方的开发指导文档的解读和理解 记录2:如何控制内核模块的编译
openwrt对于kernel module的处理分两类:随内核主线而来的kernel module 和 其他作为独立project的kernel module。而这两种,openwrt将采用相同的模版进行处理。
对于随内核主线一起提供的kernel module,the makefiles are located in package/kernel/modules/*.mk and they appear under the section "Kernel modules"。举例:package/kernel/modules/netfilter.mk,全文如下:
#
# Copyright (C) 2006-2008 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
NF_MENU:=Netfilter Extensions
NF_KMOD:=1
include $(INCLUDE_DIR)/netfilter.mk
define KernelPackage/ipt-core
SUBMENU:=$(NF_MENU) //The sub menu under which this package will be seen
TITLE:=Netfilter core //The name of the module as seen via menuconfig
KCONFIG:=$(KCONFIG_IPT_CORE) //Kernel configuration option dependency. For external modules, remove it.
FILES:=$(foreach mod,$(IPT_CORE-m),$(LINUX_DIR)/net/$(mod).$(LINUX_KMOD_SUFFIX)) //Files you want to inlude to this kernel module package, separate with spaces.
AUTOLOAD:=$(call AutoLoad,40,$(notdir $(IPT_CORE-m))) //Modules that will be loaded automatically on boot, the order you write them is the order they would be loaded.
endef
define KernelPackage/ipt-core/description
Netfilter core kernel modules
Includes:
- comment (2.6)
- limit
- LOG
- mac
- multiport
- REJECT
- TCPMSS
endef
$(eval $(call KernelPackage,ipt-core))
define KernelPackage/ipt/Depends
SUBMENU:=$(NF_MENU)
DEPENDS:= kmod-ipt-core $(1)
endef
define KernelPackage/ipt-conntrack
$(call KernelPackage/ipt/Depends,)
TITLE:=Basic connection tracking modules
KCONFIG:=$(KCONFIG_IPT_CONNTRACK)
FILES:=$(foreach mod,$(IPT_CONNTRACK-m),$(LINUX_DIR)/net/$(mod).$(LINUX_KMOD_SUFFIX))
AUTOLOAD:=$(call AutoLoad,41,$(notdir $(IPT_CONNTRACK-m)))
endef
define KernelPackage/ipt-conntrack/description
Netfilter (IPv4) kernel modules for connection tracking
Includes:
- conntrack
- defrag (2.6)
- iptables_raw
- NOTRACK
- state
endef
$(eval $(call KernelPackage,ipt-conntrack))
define KernelPackage/ipt-conntrack-extra
$(call KernelPackage/ipt/Depends,+kmod-ipt-conntrack)
TITLE:=Extra connection tracking modules
KCONFIG:=$(KCONFIG_IPT_CONNTRACK_EXTRA)
FILES:=$(foreach mod,$(IPT_CONNTRACK_EXTRA-m),$(LINUX_DIR)/net/$(mod).$(LINUX_KMOD_SUFFIX))
AUTOLOAD:=$(call AutoLoad,42,$(notdir $(IPT_CONNTRACK_EXTRA-m)))
endef
define KernelPackage/ipt-conntrack-extra/description
Netfilter (IPv4) extra kernel modules for connection tracking
Includes:
- connbytes
- connmark/CONNMARK
- conntrack
- helper
- recent
endef
$(eval $(call KernelPackage,ipt-conntrack-extra))
define KernelPackage/ipt-filter
$(call KernelPackage/ipt/Depends,+LINUX_2_6:kmod-textsearch)
TITLE:=Modules for packet content inspection
KCONFIG:=$(KCONFIG_IPT_FILTER)
FILES:=$(foreach mod,$(IPT_FILTER-m),$(LINUX_DIR)/net/$(mod).$(LINUX_KMOD_SUFFIX))
AUTOLOAD:=$(call AutoLoad,45,$(notdir $(IPT_FILTER-m)))
endef
define KernelPackage/ipt-filter/description
Netfilter (IPv4) kernel modules for packet content inspection
Includes:
- layer7
- string
endef
$(eval $(call KernelPackage,ipt-filter))
define KernelPackage/ipt-ipopt
$(call KernelPackage/ipt/Depends,)
TITLE:=Modules for matching/changing IP packet options
KCONFIG:=$(KCONFIG_IPT_IPOPT)
FILES:=$(foreach mod,$(IPT_IPOPT-m),$(LINUX_DIR)/net/$(mod).$(LINUX_KMOD_SUFFIX))
AUTOLOAD:=$(call AutoLoad,45,$(notdir $(IPT_IPOPT-m)))
endef
define KernelPackage/ipt-ipopt/description
Netfilter (IPv4) modules for matching/changing IP packet options
Includes:
- CLASSIFY
- dscp/DSCP
- ecn/ECN
- hl/HL (2.6.30 and later)
- length
- mark/MARK
- statistic (2.6)
- tcpmss
- time
- tos/TOS (prior to 2.6.25)
- ttl/TTL (prior to 2.6.30)
- unclean
endef
$(eval $(call KernelPackage,ipt-ipopt))
define KernelPackage/ipt-ipsec
$(call KernelPackage/ipt/Depends,)
TITLE:=Modules for matching IPSec packets
KCONFIG:=$(KCONFIG_IPT_IPSEC)
FILES:=$(foreach mod,$(IPT_IPSEC-m),$(LINUX_DIR)/net/$(mod).$(LINUX_KMOD_SUFFIX))
AUTOLOAD:=$(call AutoLoad,45,$(notdir $(IPT_IPSEC-m)))
endef
define KernelPackage/ipt-ipsec/description
Netfilter (IPv4) modules for matching IPSec packets
Includes:
- ah
- esp
- policy (2.6)
endef
$(eval $(call KernelPackage,ipt-ipsec))
define KernelPackage/ipt-nat
$(call KernelPackage/ipt/Depends,+kmod-ipt-conntrack)
TITLE:=Basic NAT targets
KCONFIG:=$(KCONFIG_IPT_NAT)
FILES:=$(foreach mod,$(IPT_NAT-m),$(LINUX_DIR)/net/$(mod).$(LINUX_KMOD_SUFFIX))
AUTOLOAD:=$(call AutoLoad,42,$(notdir $(IPT_NAT-m)))
endef
define KernelPackage/ipt-nat/description
Netfilter (IPv4) kernel modules for basic NAT targets
Includes:
- MASQUERADE
endef
$(eval $(call KernelPackage,ipt-nat))
define KernelPackage/ipt-nat-extra
$(call KernelPackage/ipt/Depends,+kmod-ipt-nat)
TITLE:=Extra NAT targets
KCONFIG:=$(KCONFIG_IPT_NAT_EXTRA)
FILES:=$(foreach mod,$(IPT_NAT_EXTRA-m),$(LINUX_DIR)/net/$(mod).$(LINUX_KMOD_SUFFIX))
AUTOLOAD:=$(call AutoLoad,43,$(notdir $(IPT_NAT_EXTRA-m)))
endef
define KernelPackage/ipt-nat-extra/description
Netfilter (IPv4) kernel modules for extra NAT targets
Includes:
- MIRROR (2.4)
- NETMAP
- REDIRECT
endef
$(eval $(call KernelPackage,ipt-nat-extra))
define KernelPackage/ipt-nathelper
$(call KernelPackage/ipt/Depends,+kmod-ipt-nat)
TITLE:=Basic Conntrack and NAT helpers
KCONFIG:=$(KCONFIG_IPT_NATHELPER)
FILES:=$(foreach mod,$(IPT_NATHELPER-m),$(LINUX_DIR)/net/$(mod).$(LINUX_KMOD_SUFFIX))
AUTOLOAD:=$(call AutoLoad,45,$(notdir $(IPT_NATHELPER-m)))
endef
define KernelPackage/ipt-nathelper/description
Default Netfilter (IPv4) Conntrack and NAT helpers
Includes:
- ftp
- irc
- tftp
endef
$(eval $(call KernelPackage,ipt-nathelper))
define KernelPackage/ipt-nathelper-extra
$(call KernelPackage/ipt/Depends,+kmod-ipt-nat +LINUX_2_6:kmod-textsearch)
TITLE:=Extra Conntrack and NAT helpers
KCONFIG:=$(KCONFIG_IPT_NATHELPER_EXTRA)
FILES:=$(foreach mod,$(IPT_NATHELPER_EXTRA-m),$(LINUX_DIR)/net/$(mod).$(LINUX_KMOD_SUFFIX))
AUTOLOAD:=$(call AutoLoad,45,$(notdir $(IPT_NATHELPER_EXTRA-m)))
endef
define KernelPackage/ipt-nathelper-extra/description
Extra Netfilter (IPv4) Conntrack and NAT helpers
Includes:
- amanda
- h323
- mms
- pptp (2.6)
- proto_gre (2.6)
- rtsp
- sip (2.6)
- snmp_basic
endef
$(eval $(call KernelPackage,ipt-nathelper-extra))
define KernelPackage/ipt-imq
$(call KernelPackage/ipt/Depends,)
TITLE:=Intermediate Queueing support
KCONFIG:= \
CONFIG_IMQ \
CONFIG_IMQ_BEHAVIOR_BA=y \
CONFIG_IMQ_NUM_DEVS=2 \
CONFIG_NETFILTER_XT_TARGET_IMQ
FILES:= \
$(LINUX_DIR)/drivers/net/imq.$(LINUX_KMOD_SUFFIX) \
$(foreach mod,$(IPT_IMQ-m),$(LINUX_DIR)/net/$(mod).$(LINUX_KMOD_SUFFIX))
AUTOLOAD:=$(call AutoLoad,45,$(notdir \
imq \
$(IPT_IMQ-m) \
))
endef
define KernelPackage/ipt-imq/description
Kernel support for Intermediate Queueing devices
endef
$(eval $(call KernelPackage,ipt-imq))
define KernelPackage/ipt-queue
$(call KernelPackage/ipt/Depends,)
TITLE:=Module for user-space packet queueing
KCONFIG:=$(KCONFIG_IPT_QUEUE)
FILES:=$(foreach mod,$(IPT_QUEUE-m),$(LINUX_DIR)/net/$(mod).$(LINUX_KMOD_SUFFIX))
AUTOLOAD:=$(call AutoLoad,45,$(notdir $(IPT_QUEUE-m)))
endef
define KernelPackage/ipt-queue/description
Netfilter (IPv4) module for user-space packet queueing
Includes:
- QUEUE
endef
$(eval $(call KernelPackage,ipt-queue))
define KernelPackage/ipt-ulog
$(call KernelPackage/ipt/Depends,)
TITLE:=Module for user-space packet logging
KCONFIG:=$(KCONFIG_IPT_ULOG)
FILES:=$(foreach mod,$(IPT_ULOG-m),$(LINUX_DIR)/net/$(mod).$(LINUX_KMOD_SUFFIX))
AUTOLOAD:=$(call AutoLoad,45,$(notdir $(IPT_ULOG-m)))
endef
define KernelPackage/ipt-ulog/description
Netfilter (IPv4) module for user-space packet logging
Includes:
- ULOG
endef
$(eval $(call KernelPackage,ipt-ulog))
define KernelPackage/ipt-iprange
$(call KernelPackage/ipt/Depends,)
TITLE:=Module for matching ip ranges
KCONFIG:=$(KCONFIG_IPT_IPRANGE)
FILES:=$(foreach mod,$(IPT_IPRANGE-m),$(LINUX_DIR)/net/$(mod).$(LINUX_KMOD_SUFFIX))
AUTOLOAD:=$(call AutoLoad,45,$(notdir $(IPT_IPRANGE-m)))
endef
define KernelPackage/ipt-iprange/description
Netfilter (IPv4) module for matching ip ranges
Includes:
- iprange
endef
$(eval $(call KernelPackage,ipt-iprange))
define KernelPackage/ipt-extra
$(call KernelPackage/ipt/Depends,)
TITLE:=Extra modules
KCONFIG:=$(KCONFIG_IPT_EXTRA)
FILES:=$(foreach mod,$(IPT_EXTRA-m),$(LINUX_DIR)/net/$(mod).$(LINUX_KMOD_SUFFIX))
AUTOLOAD:=$(call AutoLoad,45,$(notdir $(IPT_EXTRA-m)))
endef
define KernelPackage/ipt-extra/description
Other Netfilter (IPv4) kernel modules
Includes:
- condition (2.4 only)
- owner
- physdev (if bridge support was enabled in kernel)
- pkttype
- quota
endef
$(eval $(call KernelPackage,ipt-extra))
define KernelPackage/ip6tables
SUBMENU:=$(NF_MENU)
TITLE:=IPv6 modules
DEPENDS:=+kmod-ipv6
KCONFIG:=$(KCONFIG_IPT_IPV6)
FILES:=$(foreach mod,$(IPT_IPV6-m),$(LINUX_DIR)/net/$(mod).$(LINUX_KMOD_SUFFIX))
AUTOLOAD:=$(call AutoLoad,49,$(notdir $(IPT_IPV6-m)))
endef
define KernelPackage/ip6tables/description
Netfilter IPv6 firewalling support
endef
$(eval $(call KernelPackage,ip6tables))
define KernelPackage/arptables
SUBMENU:=$(NF_MENU)
TITLE:=ARP firewalling modules
FILES:=$(LINUX_DIR)/net/ipv4/netfilter/arp*.$(LINUX_KMOD_SUFFIX)
KCONFIG:=CONFIG_IP_NF_ARPTABLES \
CONFIG_IP_NF_ARPFILTER \
CONFIG_IP_NF_ARP_MANGLE
AUTOLOAD:=$(call AutoLoad,49,$(notdir $(patsubst %.$(LINUX_KMOD_SUFFIX),%,$(wildcard $(LINUX_DIR)/net/ipv4/netfilter/arp*.$(LINUX_KMOD_SUFFIX)))))
endef
define KernelPackage/arptables/description
Kernel modules for ARP firewalling
endef
$(eval $(call KernelPackage,arptables))
define KernelPackage/ebtables
SUBMENU:=$(NF_MENU)
TITLE:=Bridge firewalling modules
DEPENDS:=@LINUX_2_6
FILES:=$(foreach mod,$(EBTABLES-m),$(LINUX_DIR)/net/$(mod).$(LINUX_KMOD_SUFFIX))
KCONFIG:=CONFIG_BRIDGE_NETFILTER=y \
$(KCONFIG_EBTABLES)
AUTOLOAD:=$(call AutoLoad,49,$(notdir $(EBTABLES-m)))
endef
define KernelPackage/ebtables/description
ebtables is a general, extensible frame/packet identification
framework. It provides you to do Ethernet
filtering/NAT/brouting on the Ethernet bridge.
endef
$(eval $(call KernelPackage,ebtables))
define KernelPackage/ebtables/Depends
SUBMENU:=$(NF_MENU)
DEPENDS:=kmod-ebtables $(1)
endef
define KernelPackage/ebtables-ipv4
$(call KernelPackage/ebtables/Depends,)
TITLE:=ebtables: IPv4 support
FILES:=$(foreach mod,$(EBTABLES_IP4-m),$(LINUX_DIR)/net/$(mod).$(LINUX_KMOD_SUFFIX))
KCONFIG:=$(KCONFIG_EBTABLES_IP4)
AUTOLOAD:=$(call AutoLoad,49,$(notdir $(EBTABLES_IP4-m)))
endef
define KernelPackage/ebtables-ipv4/description
This option adds the IPv4 support to ebtables, which allows basic
IPv4 header field filtering, ARP filtering as well as SNAT, DNAT targets.
endef
$(eval $(call KernelPackage,ebtables-ipv4))
define KernelPackage/ebtables-ipv6
$(call KernelPackage/ebtables/Depends,)
TITLE:=ebtables: IPv6 support
FILES:=$(foreach mod,$(EBTABLES_IP6-m),$(LINUX_DIR)/net/$(mod).$(LINUX_KMOD_SUFFIX))
KCONFIG:=$(KCONFIG_EBTABLES_IP6)
AUTOLOAD:=$(call AutoLoad,49,$(notdir $(EBTABLES_IP6-m)))
endef
define KernelPackage/ebtables-ipv6/description
This option adds the IPv6 support to ebtables, which allows basic
IPv6 header field filtering and target support.
endef
$(eval $(call KernelPackage,ebtables-ipv6))
define KernelPackage/ebtables-watchers
$(call KernelPackage/ebtables/Depends,)
TITLE:=ebtables: watchers support
FILES:=$(foreach mod,$(EBTABLES_WATCHERS-m),$(LINUX_DIR)/net/$(mod).$(LINUX_KMOD_SUFFIX))
KCONFIG:=$(KCONFIG_EBTABLES_WATCHERS)
AUTOLOAD:=$(call AutoLoad,49,$(notdir $(EBTABLES_WATCHERS-m)))
endef
define KernelPackage/ebtables-watchers/description
This option adds the log watchers, that you can use in any rule
in any ebtables table.
endef
$(eval $(call KernelPackage,ebtables-watchers))
define KernelPackage/nfnetlink
SUBMENU:=$(NF_MENU)
TITLE:=Netlink-based userspace interface
DEPENDS:=@LINUX_2_6 +kmod-ipt-core
FILES:=$(LINUX_DIR)/net/netfilter/nfnetlink.$(LINUX_KMOD_SUFFIX)
KCONFIG:=CONFIG_NETFILTER_NETLINK
AUTOLOAD:=$(call AutoLoad,48,nfnetlink)
endef
define KernelPackage/nfnetlink/description
Kernel modules support for a netlink-based userspace interface
endef
$(eval $(call KernelPackage,nfnetlink))
define KernelPackage/nfnetlink/Depends
SUBMENU:=$(NF_MENU)
DEPENDS:=@LINUX_2_6 +kmod-nfnetlink $(1)
endef
define KernelPackage/nfnetlink-log
$(call KernelPackage/nfnetlink/Depends,)
TITLE:=Netfilter LOG over NFNETLINK interface
FILES:=$(LINUX_DIR)/net/netfilter/nfnetlink_log.$(LINUX_KMOD_SUFFIX)
KCONFIG:=CONFIG_NETFILTER_NETLINK_LOG
AUTOLOAD:=$(call AutoLoad,48,nfnetlink_log)
endef
define KernelPackage/nfnetlink-log/description
Kernel modules support for logging packets via NFNETLINK
endef
$(eval $(call KernelPackage,nfnetlink-log))
define KernelPackage/nfnetlink-queue
$(call KernelPackage/nfnetlink/Depends,)
TITLE:=Netfilter QUEUE over NFNETLINK interface
FILES:=$(LINUX_DIR)/net/netfilter/nfnetlink_queue.$(LINUX_KMOD_SUFFIX)
KCONFIG:=CONFIG_NETFILTER_NETLINK_QUEUE
AUTOLOAD:=$(call AutoLoad,48,nfnetlink_queue)
endef
define KernelPackage/nfnetlink-queue/description
Kernel modules support for queueing packets via NFNETLINK
endef
$(eval $(call KernelPackage,nfnetlink-queue))
define KernelPackage/nf-conntrack-netlink
$(call KernelPackage/nfnetlink/Depends,+kmod-ipt-conntrack)
TITLE:=Connection tracking netlink interface
FILES:=$(LINUX_DIR)/net/netfilter/nf_conntrack_netlink.$(LINUX_KMOD_SUFFIX)
KCONFIG:=CONFIG_NF_CT_NETLINK
AUTOLOAD:=$(call AutoLoad,49,nf_conntrack_netlink)
endef
define KernelPackage/nf-conntrack-netlink/description
Kernel modules support for a netlink-based connection tracking
userspace interface
endef
$(eval $(call KernelPackage,nf-conntrack-netlink))
而对于外部独立的kernel module,you can add them to the build system just like if they were software packages by defining a KernelPackage section in the package makefile.
openWRT自学---对官方的开发指导文档的解读和理解 记录2:如何控制内核模块的编译的更多相关文章
- openWRT自学---对官方的开发指导文档的解读和理解 记录3:一些常用方法
1.约定 configuration files follow the convention: <name>.conf init files follow the convention: ...
- openWRT自学---对官方的开发指导文档的解读和理解 记录1:编译一个package
针对的是:http://kamikaze.openwrt.org/docs/openwrt.html#x1-390002 1.If you want, you can also modify the ...
- Enterprise Solution 2.2 开发帮助文档集合
首先是一个PPT文档,从宏观层面展示Enterprise Soltion的几个功能特色. Enterprise Solution解决方案安装与配置 将源代码解决方案和演示程序在电脑中进行配置,作为了解 ...
- Spring MVC 指导文档解读(一)
22.1 指导文档章节 In the Web MVC framework, each DispatcherServlet has its own WebApplicationContext, whic ...
- WEB前端开发规范文档(转)
http://codeguide.bootcss.com/ 编写灵活.稳定.高质量的 HTML 和 CSS 代码的规范上面的文档 再结合下面的规范: 无论是从技术角度还是开发视角,对于web前端开发 ...
- Android APP开发需求文档范本
Android APP开发需求文档范本 软件需求文档格式的标准写法 1.引言 1.1 编写目的 • 阐明开发本软件的目的: 1.2 项目背景 • 标识待开发软件产品的名称.代码: • 列出本项目的任 ...
- 网站开发进阶(三十八)Web前端开发规范文档你需要知道的事
Web前端开发规范文档你需要知道的事 规范目的 为提高团队协作效率, 便于后台人员添加功能及前端后期优化维护, 输出高质量的文档, 特制订此文档. 本规范文档一经确认, 前端开发人员必须按本文档规范进 ...
- FlappyBird开发帮助文档
FlappyBird开发帮助文档 项目需求 完成FlappyBird游戏. 功能说明: 游戏开始后,间歇性的点击鼠标,让小鸟向上飞,不会掉下来,并且要穿过柱子的空隙,不能碰到柱子,碰到就dead了,穿 ...
- Web前端开发规范文档你需要知道的事
Web前端开发规范文档你需要知道的事 规范目的 为提高团队协作效率, 便于后台人员添加功能及前端后期优化维护, 输出高质量的文档, 特制订此文档. 本规范文档一经确认, 前端开发人员必须按本文档规范进 ...
随机推荐
- iOS AudioSession详解 Category选择 听筒扬声器切换
在你读这篇文章之前,如果你不嫌读英文太累,推荐阅读下苹果iOS Human Interface Guidelines中Sound这一章. 选择一个Category AVAudioSessionCa ...
- Word中如何设置图片与段落的间距为半行
第一种: 正文为5号,那么图片或者Viso对象前后空一行,设置字号为7号或者更小,这样设置的间距就是那个7号字的间距,比5号小,看着空白不是那么大. 第二种: Visio对象转为jpg,然后选中图片和 ...
- mysql关于数据量大的时候分页分批处理
前几天遇到一个问题是,数据库一开始有24W是信息,需要取出来,进行下载到excel中.一开始遇到的问题是,excel表格行只有65535条行数,远远不够,有人说了很多其他解决方式,为了快速开发我就直接 ...
- C# this.Invoke()的作用与用法
Invoke()的作用是:在应用程序的主线程上执行指定的委托.一般应用:在辅助线程中修改UI线程( 主线程 )中对象的属性时,调用this.Invoke(); 在多线程编程中,我们经常要在工作线程 ...
- python字典里的update函数
>>> print d {'age': 34, 'name': 'jeapedu'} >>> d1={"age":38} >>> ...
- redhat6.4 install 163 source
1) 到http://mirrors.163.com的 centos帮助文档 中下载CentOS6-Base-163.repo文件,存放到/etc/yum.repo.d中 wget http://mi ...
- [转]js模块化编程之彻底弄懂CommonJS和AMD/CMD!
原文: https://www.cnblogs.com/chenguangliang/p/5856701.html ------------------------------------------ ...
- PV、UV
1.什么是PV值 PV(page view)即页面浏览量或点击量,是衡量一个网站或网页用户访问量.具体的说,PV值就是所有访问者在24小时(0点到24点)内看了某个网站多少个页面或某个网页多少次.PV ...
- 2017.7.18 linux下用户、组和文件的操作
参考来自:<鸟叔的linux私房菜(基础学习篇)-第14章> 0 目的 在linux下搭建ELK环境时,因为elasticsearch不能在root下操作,所以要为其新增一个用户,以及随之 ...
- 7. JPA - Hibernate【从零开始学Spring Boot】
转载:http://blog.csdn.net/linxingliang/article/details/51636976 在说具体如何在spring boot 使用hibernate前,先抛装引玉些 ...