{"id":43235184,"url":"https://github.com/hwipl/smc-clc","last_synced_at":"2026-02-01T10:37:40.292Z","repository":{"id":57521916,"uuid":"218011017","full_name":"hwipl/smc-clc","owner":"hwipl","description":"SMC CLC Handshake Parser","archived":false,"fork":false,"pushed_at":"2025-05-01T08:08:34.000Z","size":143,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-05-01T09:23:01.604Z","etag":null,"topics":["clc","command-line-tool","connection-layer-control","golang","network","packet-capture","packet-parser","shared-memory-communication","smc"],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hwipl.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,"zenodo":null}},"created_at":"2019-10-28T09:31:10.000Z","updated_at":"2025-05-01T08:08:38.000Z","dependencies_parsed_at":"2022-08-26T23:40:42.532Z","dependency_job_id":"0ad0e9fe-8fbb-47fc-800c-46ed1ecc74d6","html_url":"https://github.com/hwipl/smc-clc","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/hwipl/smc-clc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hwipl%2Fsmc-clc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hwipl%2Fsmc-clc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hwipl%2Fsmc-clc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hwipl%2Fsmc-clc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hwipl","download_url":"https://codeload.github.com/hwipl/smc-clc/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hwipl%2Fsmc-clc/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28976334,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-01T09:57:52.632Z","status":"ssl_error","status_checked_at":"2026-02-01T09:57:49.143Z","response_time":56,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["clc","command-line-tool","connection-layer-control","golang","network","packet-capture","packet-parser","shared-memory-communication","smc"],"created_at":"2026-02-01T10:37:40.202Z","updated_at":"2026-02-01T10:37:40.284Z","avatar_url":"https://github.com/hwipl.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# smc-clc\n\nsmc-clc is a command line tool for capturing SMC CLC traffic from a network\ninterface and parsing the SMC CLC handshake messages. The CLC handshake is part\nof the [SMC protocol](https://www.rfc-editor.org/info/rfc7609) and is used to\nestablish SMC connections between communication partners.\n\n## Installation\n\nYou can download and install smc-clc with its dependencies to your GOPATH or\nGOBIN with the go tool:\n\n```console\n$ go install github.com/hwipl/smc-clc/cmd/smc-clc\n```\n\n## Usage\n\nYou can run `smc-clc` with the following command line arguments:\n\n```\n  -f file\n        read packets from a pcap file and set it to file\n  -http address\n        use http server output and listen on address (e.g.: :8000 or\n        127.0.0.1:8080)\n  -i interface\n        read packets from a network interface (default) and set it to interface\n  -pcap-filter filter\n        set pcap packet filter to filter (e.g.: \"not port 22\")\n  -pcap-maxpkts number\n        set maximum packets to capture to number (may require pcap-timeout\n        argument)\n  -pcap-maxtime seconds\n        set maximum capturing time to seconds (may require pcap-timeout\n        argument)\n  -pcap-promisc\n        set network interface to promiscuous mode (default true)\n  -pcap-snaplen bytes\n        set pcap snaplen to bytes (default 2048)\n  -pcap-timeout milliseconds\n        set pcap timeout to milliseconds\n  -show-hex\n        show hex dumps of messages\n  -show-reserved\n        show reserved message fields\n  -show-timestamps\n        show timestamps of messages (default true)\n```\n\n## Examples\n\nYou can specify the network interface with the command line argument `-i`.\nMake sure your user has the permission to capture traffic on the network\ninterface. For example, you can capture packets on the loopback interface with\nthe following command as user root:\n\n```console\n# smc-clc -i lo\n```\n\nAlternatively, you can read packets from a pcap file with the command line\nargument `-f`. For example you can read the packets from pcap file `dump.pcap`\nwith the following command:\n\n```console\n$ smc-clc -f dump.pcap\n```\n\nThe regular output of, for example, a SMC handshake over IPv4 on the loopback\ninterface looks like this:\n\n```console\n$ sudo ./smc-clc -i lo\nStarting to listen on interface lo.\n16:17:14.341225 127.0.0.1:60294 -\u003e 127.0.0.1:50000: Proposal: Eyecatcher: SMC-R,\nType: 1 (Proposal), Length: 52, Version: 1, Flag: 0, Path: SMC-R,\nPeer ID: 45472@98:03:9b:ab:cd:ef, SMC-R GID: fe80::9a03:9bff:feab:cdef,\nRoCE MAC: 98:03:9b:ab:cd:ef, IP Area Offset: 0, SMC-D GID: 0,\nIPv4 Prefix: 127.0.0.0/8, IPv6 Prefix Count: 0, Trailer: SMC-R\n16:17:14.342858 127.0.0.1:50000 -\u003e 127.0.0.1:60294: Accept: Eyecatcher: SMC-R,\nType: 2 (Accept), Length: 68, Version: 1, First Contact: 1, Path: SMC-R,\nPeer ID: 45472@98:03:9b:ab:cd:ef, SMC-R GID: fe80::9a03:9bff:feab:cdef,\nRoCE MAC: 98:03:9b:ab:cd:ef, QP Number: 228, RMB RKey: 5501, RMBE Index: 1,\nRMBE Alert Token: 5, RMBE Size: 2 (65536), QP MTU: 3 (1024),\nRMB Virtual Address: 0xf0a60000, Packet Sequence Number: 7534078,\nTrailer: SMC-R\n16:17:14.343078 127.0.0.1:60294 -\u003e 127.0.0.1:50000: Confirm: Eyecatcher: SMC-R,\nType: 3 (Confirm), Length: 68, Version: 1, Flag: 0, Path: SMC-R,\nPeer ID: 45472@98:03:9b:ab:cd:ef, SMC-R GID: fe80::9a03:9bff:feab:cdef,\nRoCE MAC: 98:03:9b:ab:cd:ef, QP Number: 229, RMB RKey: 6271, RMBE Index: 1,\nRMBE Alert Token: 6, RMBE Size: 2 (65536), QP MTU: 3 (1024),\nRMB Virtual Address: 0xf0a40000, Packet Sequence Number: 887204,\nTrailer: SMC-R\n```\n\nYou can enable hex dumps in the output with the command line argument\n`-show-hex`. The output of the same SMC handshake as above with enabled hex\ndumps of the messages looks like this:\n\n```console\n$ sudo ./smc-clc -i lo -show-hex\nStarting to listen on interface lo.\n16:17:14.341225 127.0.0.1:60294 -\u003e 127.0.0.1:50000: Proposal: Eyecatcher: SMC-R,\nType: 1 (Proposal), Length: 52, Version: 1, Flag: 0, Path: SMC-R,\nPeer ID: 45472@98:03:9b:ab:cd:ef, SMC-R GID: fe80::9a03:9bff:feab:cdef,\nRoCE MAC: 98:03:9b:ab:cd:ef, IP Area Offset: 0, SMC-D GID: 0,\nIPv4 Prefix: 127.0.0.0/8, IPv6 Prefix Count: 0, Trailer: SMC-R\n00000000  e2 d4 c3 d9 01 00 34 10  b1 a0 98 03 9b ab cd ef  |......4.........|\n00000010  fe 80 00 00 00 00 00 00  9a 03 9b ff fe ab cd ef  |................|\n00000020  98 03 9b ab cd ef 00 00  7f 00 00 00 08 00 00 00  |................|\n00000030  e2 d4 c3 d9                                       |....|\n16:17:14.342858 127.0.0.1:50000 -\u003e 127.0.0.1:60294: Accept: Eyecatcher: SMC-R,\nType: 2 (Accept), Length: 68, Version: 1, First Contact: 1, Path: SMC-R,\nPeer ID: 45472@98:03:9b:ab:cd:ef, SMC-R GID: fe80::9a03:9bff:feab:cdef,\nRoCE MAC: 98:03:9b:ab:cd:ef, QP Number: 228, RMB RKey: 5501, RMBE Index: 1,\nRMBE Alert Token: 5, RMBE Size: 2 (65536), QP MTU: 3 (1024),\nRMB Virtual Address: 0xf0a60000, Packet Sequence Number: 7534078,\nTrailer: SMC-R\n00000000  e2 d4 c3 d9 02 00 44 18  b1 a0 98 03 9b ab cd ef  |......D.........|\n00000010  fe 80 00 00 00 00 00 00  9a 03 9b ff fe ab cd ef  |................|\n00000020  98 03 9b ab cd ef 00 00  e4 00 00 15 7d 01 00 00  |............}...|\n00000030  00 05 23 00 00 00 00 00  f0 a6 00 00 00 72 f5 fe  |..#..........r..|\n00000040  e2 d4 c3 d9                                       |....|\n16:17:14.343078 127.0.0.1:60294 -\u003e 127.0.0.1:50000: Confirm: Eyecatcher: SMC-R,\nType: 3 (Confirm), Length: 68, Version: 1, Flag: 0, Path: SMC-R,\nPeer ID: 45472@98:03:9b:ab:cd:ef, SMC-R GID: fe80::9a03:9bff:feab:cdef,\nRoCE MAC: 98:03:9b:ab:cd:ef, QP Number: 229, RMB RKey: 6271, RMBE Index: 1,\nRMBE Alert Token: 6, RMBE Size: 2 (65536), QP MTU: 3 (1024),\nRMB Virtual Address: 0xf0a40000, Packet Sequence Number: 887204,\nTrailer: SMC-R\n00000000  e2 d4 c3 d9 03 00 44 10  b1 a0 98 03 9b ab cd ef  |......D.........|\n00000010  fe 80 00 00 00 00 00 00  9a 03 9b ff fe ab cd ef  |................|\n00000020  98 03 9b ab cd ef 00 00  e5 00 00 18 7f 01 00 00  |................|\n00000030  00 06 23 00 00 00 00 00  f0 a4 00 00 00 0d 89 a4  |..#.............|\n00000040  e2 d4 c3 d9                                       |....|\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhwipl%2Fsmc-clc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhwipl%2Fsmc-clc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhwipl%2Fsmc-clc/lists"}