firewalld  0.9.3
About: firewalld provides a dynamically managed firewall with support for network/firewall zones to define the trust level of network connections or interfaces.
  Fossies Dox: firewalld-0.9.3.tar.gz  ("unofficial" and yet experimental doxygen-generated source code documentation)  

firewalld Documentation

Some Fossies usage hints in advance:

  1. To see the Doxygen generated documentation please click on one of the items in the steelblue colored "quick index" bar above or use the side panel at the left which displays a hierarchical tree-like index structure and is adjustable in width.
  2. If you want to search for something by keyword rather than browse for it you can use the client side search facility (using Javascript and DHTML) that provides live searching, i.e. the search results are presented and adapted as you type in the Search input field at the top right.
  3. Doxygen doesn't incorporate all member files but just a definable subset (basically the main project source code files that are written in a supported language). So to search and browse all member files you may visit the Fossies firewalld-0.9.3.tar.gz contents page and use the Fossies standard member browsing features (also with source code highlighting and additionally with optional code folding).
README for firewalld

firewalld provides a dynamically managed firewall with support for network or 
firewall zones to define the trust level of network connections or interfaces. 
It has support for IPv4, IPv6 firewall settings and for ethernet bridges and a 
separation of runtime and permanent configuration options. It also provides an 
interface for services or applications to add ip*tables and ebtables rules 

To check out the source repository, you can use:

  git clone

This will create a local copy of the repository.

Language Translations
Firewalld uses GNU gettext for localization support. Translations can be done
using Fedora's Weblate instance [1]. Translations are periodically merged into
the main firewalld repository.


Working With The Source Repository
Install the following requirements or packages:

  desktop-file-utils: /usr/bin/desktop-file-install
  glib2: /usr/bin/glib-compile-schemas
  glib2-devel: /usr/share/aclocal/gsettings.m4

For use with Python 3:

  python3-nftables (nftables >= 0.9.3)

For use with Python 2:

  python-slip-dbus (
  pygobject3-base (non-cairo parts of pygobject3)
  python-nftables (nftables >= 0.9.3)

To be able to create man pages and documentation from docbook files:


Use the usual autoconf/automake incantation to generate makefiles


You can use a specific python interpreter by passing the PYTHON variable. This
is also used by the testsuite.

  ./configure PYTHON=/path/to/python3



to create the documentation and to update the po files.


  make check

to run the testsuite. Tests are run inside network namespaces and do not
interfere with the host's running firewalld. They can also be run in parallel
by passing flags to autotest.

  make check TESTSUITEFLAGS="-j4"

The testsuite also uses keywords to allow running a subset of tests that
exercise a specific area.
For example:

  make check TESTSUITEFLAGS="-k rich -j4"
   24: rich rules audit                                ok
   25: rich rules priority                             ok
   26: rich rules bad                                  ok
   53: rich rules audit                                ok
   23: rich rules good                                 ok
   55: rich rules bad                                  ok
   74: remove forward-port after reload                ok

You can get a list of tests and keywords

  make -C src/tests check TESTSUITEFLAGS="-l"

Or just the keywords

  make -C src/tests check TESTSUITEFLAGS="-l" \
    |awk '/^[[:space:]]*[[:digit:]]+/{getline; print $0}' \
    |tr ' ' '\n' |sort |uniq

There are integration tests. Currently this includes NetworkManager. These may
be _destructive_ to the host. Run them in a disposable VM or container.

    make check-integration

There is also a check-container target that will run the testsuite inside
various podman/docker containers. This is useful for coverage of multiple
distributions. It also runs tests that may be destructive to the host such as
integration tests.

  make check-container TESTSUITEFLAGS="-j4"

RPM package

For Fedora and RHEL based distributions, there is a spec file in the source
repo named firewalld.spec. This should be usable for Fedora versions >= 16 and
RHEL >= 7.

Report a bug:
Git repo browser:
Git repo:

Mailing lists
For usage:
For development:

Directory Structure
config/                 Configuration files
config/icmptypes/       Predefined ICMP types
config/services/        Predefined services
config/zones/           Predefined zones
config/ipsets/          Predefined ipsets
doc/                    Documentation
doc/man/                Base directory for man pages
doc/man/man1/           Man(1) pages
doc/man/man5/           Man(5) pages
po/                     Translations
shell-completion/       Base directory for auto completion scripts
src/                    Source tree
src/firewall/           Import tree for the sevice and all applications
src/icons/              Icons in the sizes: 16, 22, 24, 32, 48 and scalable
src/tests/              Testsuite