Dual-stack ping command

Project description

Ping has been one of the basic most used utilities for network diagnostic. Because of this the major aspect concerning it is ensuring its long term quality. Currently, there are two implementations of ping in FreeBSD: ping is for IPv4 networks and ping6 is for IPv6. They have a lot of duplicate code. To ease maintenance of this tools (adding new features, fixing bugs) the primary goal of my work is to create a single implementation, containing support for both IPv4 and IPv6 networks, where the code duplication will be eliminated and the functionality and output will be equal to the old implementations. The secondary goal is to document my work so that it could be used as a guide for other programmers who would do some similar unifying work.

Approach to solving the problem

The main concern when unifying ping and pin6 is that their output and functionality must not change. In order to increase probability of detection of such changes the development will be similar to a test-driven development. Unification of the utilities will not start until the tests have been created.


  1. Dual-stack ping command maintaining functionality of the old ping and ping6.
  2. Tests for checking that the unification has not changed the functionality.
  3. Documentation of the unification process.


Test Plan

The tests will be based on the Automated Testing Framework.

The Code

ping branch in https://github.com/jansucan/freebsd





(A place to make notes that will be useful to others looking at your code. You probably don't need to put anything here on day one)

Introduction to ATF tests in FreeBSD Journal
Building FreeBSD in meta mode

SummerOfCode2019Projects/DualStackPingCommand (last edited 2019-05-31T10:03:06+0000 by JanSucan)