I have made occasional contributions to the Wireshark project for over five years now. I started with small documentation updates, and later I have added two new protocol dissectors (Zabbix and Z21) as well as improved some other dissectors. It can be several months between contributions though, so this post is my own memo about the tooling I use.
I used to use my old Windows 10 laptop for this, but since the machine is not Windows 11 compatible (says Microsoft), I installed Debian Linux 13 (Trixie) for my Wireshark development a short while ago.
Here are my own notes about the development setup, but also remember to read the Wireshark Developers’ Guide if starting your own contributions to the Wireshark project.
Git branch in the bash prompt:
- In
.bashrc, add “\[\033[33m]$(__git_ps1 " (%s)")” just after the “\w” in PS1. The__git_ps1function has been included by/etc/bash_completion.d/git-prompt(provided bygitpackage).
The usual global git configurations:
git config --global alias.lg "log --oneline --all --graph --decorate"git config --global alias.s "status -s"
Setting up the local repository:
- Fork the Wireshark repository in GitLab
- Create a new SSH key and add it to the forked repository in GitLab (Settings – Repository – Deploy keys)
- Use
.ssh/id_ed25519or SSH agent to get seamless experience
- Use
- Clone the fork to the home directory:
git clone git@gitlab.com:yourusername/wireshark.git cd wireshark- Add upstream:
git remote add upstream https://gitlab.com/wireshark/wireshark.git git config user.name xxxgit config user.email yyygit config push.autoSetupRemote truegit config alias.updatemaster '!git pull --rebase upstream master && git fetch upstream --tags'git updatemastercd .git/hooksln -s ../../tools/pre-commitcd -
Setting up the build environment:
sudo tools/debian-setup.sh --install-optional --install-test-depsmkdir ~/wsbuildcd ~/wsbuild- Optional:
export WIRESHARK_VERSION_EXTRA=-MLe cmake -G Ninja -D ENABLE_CCACHE=ON -D CMAKE_INSTALL_PREFIX=.. ../wireshark- See also: https://www.wireshark.org/docs/wsdg_html_chunked/ChapterSetup.html
ninja- Maybe also:
ninja install run/wireshark
Contributing changes:
git checkout -b <branch name>- Make your changes
git add <the files>git commit -m "Proto: xxx"- Repeat more commits if needed
- Squash the commits (if multiple):
git rebase -i master git checkout mastergit updatemastergit checkout -git rebase mastergit push