个人邮箱:xiaokeweng@gmail.com
这篇粗略介绍-Netd文件夹下面的源文件/模块的基本功能,和主要类的组织关系。
一、文件构成Netd文件下的源文件模块~组织以及基本实现功能:
======================================================================
Android.mk \Android makefile
CleanSpec.mk
main.cpp \主函数入口
======================================================================
CommandListener.cpp
\监听 frameworek 层命令,通过 tcp
\向 framework 层注册处理函数命令的 cmd
\实现对应命令的处理函数
CommandListener.h
======================================================================
NetlinkManager.cpp \监听 kernel 的 event,通过无连接socket 可以
\理解为udp在 setsocketopt 中实现与 kernel
\的关联监听事件类型
NetlinkManager.h
======================================================================
NetdCommand.cpp \直接调用 frameworkcommand
NetdCommand.h
NetlinkHandler.cpp \继承自 NetlinkListener
\onEvent 函数的实现
\根据 onEvent 函数命令的解析调用不同的处理函数
\并调用 nm->sendBroadcast 广播 ResponseCode
NetlinkHandler.h
NetdConstants.cpp \全局路径 为操作 iptable 的函数提供
NetdConstants.h
======================================================================
List.h
logwrapper.c
ndc.c \NativeDaemonConnector
oem_iptables_hook.cpp \iptable 系统调用 hook
oem_iptables_hook.h
======================================================================
DnsProxyListener.cpp \DNS 解析相关独立部分
DnsProxyListener.h
MdnsSdListener.cpp \Multi-DNS 解析独立部分
MdnsSdListener.h
======================================================================
IdletimerController.cpp \具体的要注册给 Framework 的 cmd 的处理部分
IdletimerController.h
BandwidthController.cpp
BandwidthController.h
NatController.cpp
NatController.h
PanController.cpp
PanController.h
PppController.cpp
PppController.h
ResolverController.cpp
ResolverController.h
ResponseCode.h
SecondaryTableController.cpp
SecondaryTableController.h
SoftapController.cpp
SoftapController.h
TetherController.cpp
TetherController.h
ThrottleController.cpp
ThrottleController.h
======================================================================
二、文件中最主要的类是:
管理类:
CommandListener、NetlinkManager、MdnsSdListener、DnsProxyListener
处理类:
ResponseCode、Netlinkhandler、 CommandListener::XXXCmd
相关类:
Socketlistener、SocketClient、NetlinkListener、NetlinkEvent、FrameworkListener、FrameworkCommand、FrameworkClient
下面是一些UML,也不规范,大概意思明白就可以~~ 在后面还会详细的介绍。
(1)CommandListener、NetlinkHandler
(2)命令的上传/下达
(3)各种cmd功能