{"id":23508750,"url":"https://github.com/lovasko/nemo-core","last_synced_at":"2025-05-13T15:34:48.655Z","repository":{"id":78821029,"uuid":"134899804","full_name":"lovasko/nemo-core","owner":"lovasko","description":":globe_with_meridians: Network Monitoring","archived":false,"fork":false,"pushed_at":"2019-07-19T12:06:25.000Z","size":424,"stargazers_count":3,"open_issues_count":19,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-16T19:48:24.699Z","etag":null,"topics":["c","multicast","payload","unicast","unix"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lovasko.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-05-25T20:03:40.000Z","updated_at":"2021-06-01T10:25:01.000Z","dependencies_parsed_at":null,"dependency_job_id":"3da5b93e-941c-4490-a0b6-d57ade98a0da","html_url":"https://github.com/lovasko/nemo-core","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lovasko%2Fnemo-core","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lovasko%2Fnemo-core/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lovasko%2Fnemo-core/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lovasko%2Fnemo-core/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lovasko","download_url":"https://codeload.github.com/lovasko/nemo-core/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253970569,"owners_count":21992525,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c","multicast","payload","unicast","unix"],"created_at":"2024-12-25T11:31:58.131Z","updated_at":"2025-05-13T15:34:48.594Z","avatar_url":"https://github.com/lovasko.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# nemo-core\nLightweight network monitoring for POSIX systems.\n\n[![Build Status](https://travis-ci.org/lovasko/nemo-core.svg?branch=master)](https://travis-ci.org/lovasko/nemo-core)\n\n[![Coverity Scan](https://scan.coverity.com/projects/16148/badge.svg)](https://scan.coverity.com/projects/lovasko-nemo-core)\n\n## Introduction\nThe `nemo-core` project consists of two programs - the _requester_ and the\n_responder_ - named `nreq` and `nres` respectively. The requester program\nperiodically issues UDP datagram requests to a selected set of network targets,\nwhereas the responder program awaits the requests and issues the appropriate\nresponses. The datagram payload contains diagnostic information that can be\nused to test and monitor unicast network configuration.\n\n## Action sets\nIn order to make the programs as reusable as possible, the decision was taken\nto perform no particular action upon any events - but rather provide a plugin\nmechanism via standard `dlopen(3)` mechanism of shared objects. Each program\nprovides a different set of actions, which are executed upon the triggering.\nExample action sets are:\n\n * `nemo-csv`\n * `nemo-sqlite`\n\n## Example usage\nFirst step is to start the responder process\n * specifying its unique key to be `123`\n * adding action set `nemo-res-csv.so`\n\n```sh\ndlo@linux$ nres \\\n -k 123         \\\n -a nemo-res-csv.so`\n```\n\nSecond step is to start the requestor process:\n * specifying its unique key to be `456`\n * adding action set `nemo-req-csv.so`\n * setting one target: DNS name `linux`\n\n```sh\ndlo@freebsd$ nreq    \\\n  -k 456             \\\n  -a nemo-req-csv.so \\\n  linux\n```\n\n## Build\nTo build `nemo-core` on Linux:\n```\ndlo@linux$ make CC=gcc\ndlo@linux$ make install\n```\n\nTo build `nemo-core` on FreeBSD:\n```\ndlo@freebsd$ make CC=clang FTM= \ndlo@freebsd$ make install\n```\n\n### Supported platforms\nThe project aims at supporting 32-bit and 64-bit architectures, Linux, FreeBSD,\nNetBSD, and OpenBSD operating systems and all major C compilers, e.g. `gcc` and\n`clang`. If any combination of the above does not work, please feel free to\nnotify the project maintainers and/or submit a patch.\n\n## Documentation\nThe `nreq` and `nres` programs are documented via standard UNIX manual pages,\nlocated in the `man/` directory. Both manual pages belong the section 8 of the\nmanual.  The `make install` command copies the manual page files to the\nstandard system location. All reasonable distributions of the software suite\nshould have the manual pages bundled in.\n\n## Code standards\nThe codebase is written in pure C99 while being fully compliant with the\nPOSIX.1-2018 interfaces. All further code contributions must adhere to these\nstandards.\n\n## Resource usage\nOne of the main implementation goals was to create programs that use the\nminimal possible resources. This is reflected in both file descriptor, and\nmemory usage. Both programs use a constant amount of memory and only two open\nsockets at any time. No dynamic allocation is performed by either program\nthroughout the whole lifetime of both processes.\n\n## Limitations\nCertain trade-offs were part of the design and implementation of the programs.\nThe main limitation throughout the software suite is the upper bound of number\nof targets supported in each requester process: _512_. The second main\nlimitation is the number of actions sets attachable to a single process: _32_.\n\n## License\nThe `nemo-core` project is licensed under the terms of the [2-cause BSD\nlicense](LICENSE).\n\n## Author\nDaniel Lovasko \u003cdaniel.lovasko@gmail.com\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flovasko%2Fnemo-core","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flovasko%2Fnemo-core","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flovasko%2Fnemo-core/lists"}