> For the complete documentation index, see [llms.txt](https://yeasy.gitbook.io/openstack_code_neutron/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://yeasy.gitbook.io/openstack_code_neutron/neutron/services/firewall/fwaas_pluginpy.md).

# fwaas\_plugin.py

FirewallCallbacks类，继承自rpc.RpcCallback，agent利用rpc来调用该类的方法实现设置防火墙的状态、通知防火墙被删除、获取tenant所拥有的防火墙和规则、获取防火墙所属的租户们的信息。

FirewallAgentApi类，继承自rpc.RpcProxy类，是plugin向agent端发送rpc调用时候，为plugin端使用的方法，包括对防火墙的创建、更新和删除。

FirewallPlugin类，继承自firewall\_db.Firewall\_db\_mixin类，是防火墙这个服务plugin的实现类，其中定义了一系列对防火墙进行操作的方法，包括create\_firewall、update\_firewall、delete\_db\_firewall\_object、delete\_firewall、update\_firewall\_policy、update\_firewall\_rule、insert\_rule、remove\_rule等。 plugin和agent之间的调用关系如下面图表所示。

![防火墙服务plugin和agent之间的rpc消息](https://github.com/yeasy/openstack_code_Neutron/tree/f46dcf5e6238c1e730845060ea2d3e4103007e88/neutron/_images/neutron.services.firewall.png)
