Narzędzie ipcalc, jest dostępne w dystrybucjach z rodziny debian (co do innych także wiem że jest ale już nie będę szukał czy to samo). Tu masz witrynę domową: http://jodies.de/ipcalc
Możesz pomyśleć o notacji CIDR, dopuszczalnych "rutowalnych sieciach" (polskie słowo trasowalnych jest jednak trochę.. dziwne :) ), sieciach specjalnych (np. multicast)
Co do kodu... sugestie a nie prawdy objawione i nie ukrywam że tylko przeglądam:
1. W CMakeLists.txt dodał bym hurtem wszystkie *.cpp. Chyba że masz jakieś powody by je wydzielać.
2. Nie chciałeś wykorzystać getopt(..) przy parsowaniu przełączników? Jakiś powód?
man 3 getopt
3. Stosuj nawiasy przy większej ilości argumentów w if. Dobra praktyka i często wymaganie metodyk wytwarzania dla systemów krytycznych.
4. W przypadku braku różnicy pomiędzy prze i post inkrementacją, preferuj pre.
5. W przypadku posiadania wiedzy ile jest elementów (np. w std::vector), dobrze jest zrobić vec.reserve(..) i stosować emplace_back(...). Nawet lepiej często zastosować std::array. Alokuje na stosie (więc może choć niekoniecznie być nieco szybciej) i ma sztywną ilość elementów.
6. Nie wiem co to za "kwiatek" jest w netmask.cpp w 10 linii. std::string przecież ma konstruktor wypełniający znakiem.
7. Jeśli nie modyfikujesz kontenera lub string'a, prześlij go jako const referencję lub dla string'a string_view.
8. get_network_addresses.cpp okolice 37. Jeśli nie modyfikujesz danych a tylko trzymasz wskaźnik, to raczej powinien być:
const void * tmpAddrPtr = nullptr;
czyli modyfikowalny wskaźnik na stałe dane. Inną sprawą jest ... czy to ma być aż takie ostre. void * to brzmi groźnie.
9. W tym samym pliku: 78 i 79 linia.. z jakiego powodu tam jest struct? To przecież C++ a nie C.
10. Nagłówki bez strażników lub pragma once to bardzo słaby pomysł.
11. Masz trochę nieporządku w nagłówkach. Np. w check_ip.h, nie wiem z jakiego powodu występuje coś czego nie ma ani jako argumentów w funkcji ani jako wywołania.
12. W get_network_addresses.h masz nawciąganych stado nagłówków które powinny być w pliku implementacji.
To tak na pierwszy rzut..