{"id":47795013,"url":"https://github.com/eclipse-score/inc_someip_gateway","last_synced_at":"2026-04-03T16:13:51.085Z","repository":{"id":321806893,"uuid":"1075320937","full_name":"eclipse-score/inc_someip_gateway","owner":"eclipse-score","description":"Incubation repository for SOME/IP gateway feature","archived":false,"fork":false,"pushed_at":"2026-03-31T07:36:41.000Z","size":4599,"stargazers_count":3,"open_issues_count":15,"forks_count":7,"subscribers_count":4,"default_branch":"main","last_synced_at":"2026-03-31T07:50:32.379Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://eclipse-score.github.io/inc_someip_gateway","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eclipse-score.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":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-13T10:41:28.000Z","updated_at":"2026-03-30T10:34:00.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/eclipse-score/inc_someip_gateway","commit_stats":null,"previous_names":["eclipse-score/inc_someip_gateway"],"tags_count":0,"template":false,"template_full_name":"eclipse-score/module_template","purl":"pkg:github/eclipse-score/inc_someip_gateway","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-score%2Finc_someip_gateway","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-score%2Finc_someip_gateway/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-score%2Finc_someip_gateway/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-score%2Finc_someip_gateway/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eclipse-score","download_url":"https://codeload.github.com/eclipse-score/inc_someip_gateway/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-score%2Finc_someip_gateway/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31362716,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-03T15:19:21.178Z","status":"ssl_error","status_checked_at":"2026-04-03T15:19:20.670Z","response_time":107,"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":[],"created_at":"2026-04-03T16:13:50.352Z","updated_at":"2026-04-03T16:13:51.059Z","avatar_url":"https://github.com/eclipse-score.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!--\n*******************************************************************************\nCopyright (c) 2026 Contributors to the Eclipse Foundation\n\nSee the NOTICE file(s) distributed with this work for additional\ninformation regarding copyright ownership.\n\nThis program and the accompanying materials are made available under the\nterms of the Apache License Version 2.0 which is available at\nhttps://www.apache.org/licenses/LICENSE-2.0\n\nSPDX-License-Identifier: Apache-2.0\n*******************************************************************************\n--\u003e\n\n# SOME/IP Gateway\n\nThe gateway is divided into a gateway daemon (gatewayd) which contains the network-independent logic (payload serialization, etc.) and the SOME/IP daemon (someipd) which binds to the concrete SOME/IP stack.\nThe IPC interface between the gatewayd and the someipd serves as isolation boundary between ASIL and QM context and also allows to replace the network stack without touching the main gateway logic.\n\n![SOME/IP Gateway Architecture](docs/architecture/score-someip-car-window-overview.drawio.png)\n\n\n---\n\n## 🚀 Getting Started\n\n### Clone the Repository\n\n```sh\ngit clone https://github.com/eclipse-score/inc_someip_gateway.git\ncd inc_someip_gateway\n```\n\n### Start the daemons\n\nStart the daemons in this order:\n\n```sh\nbazel run //src/gatewayd:gatewayd_example\n```\n\nand in a separate terminal\n\n```sh\nbazel run //src/someipd\n```\n\n### Run Example app\n\n```sh\nbazel run //examples/car_window_sim:car_window_controller\n```\n\nIf you type `open` or `close` the command will be sent via network.\n\n\n### Dockerized integration test POC\n\nFor integration tests, a docker based approach was taken.\nAs a proof of concept `docker compose` can be used to build, setup and run the containers.\nIn the future a pytest based setup can be implemented to orchestrate the containers.\n\nBuild the docker containers:\n\n```sh\ndocker compose --project-directory tests/integration/docker_setup/ build\n```\n\nStart up the containers:\n\n```sh\ndocker compose --project-directory tests/integration/docker_setup/ up\n```\n\nThose containers are pre-configured (IP adresses, multicast route, ...).\nThe someipd-1 container already starts up the `gatewayd` and the `someipd`.\n\nIn Wireshark the network traffic can be seen by capturing on `any` with `ip.addr== 192.168.87.2 || ip.addr ==192.168.87.3`.\n\nOn the client side, start up the `sample_client` in another shell:\n\n```sh\ndocker exec -it --env VSOMEIP_CONFIGURATION=/home/source/tests/integration/sample_client/vsomeip.json docker_setup-client-1 /home/source/bazel-bin/tests/integration/sample_client/sample_client\n```\n\nFinally start the benchmark on the someipd-1 container in a third shell:\n\n```sh\ndocker exec -it docker_setup-someipd-1 /home/source/bazel-bin/tests/benchmarks/ipc_benchmarks\n```\n\n\n## 📝 Configuration\n\n### Gatewayd Config Schema Validation\n\nThe `gatewayd` module is configured using a flatbuffer binary file generated from a JSON file. We provide a JSON schema which helps when editing the JSON file, and can also be used to validate it.\n\n#### Configuration Schema\n\nThe JSON schema for the `gatewayd` configuration is located at:\n\n```bash\nsrc/gatewayd/etc/gatewayd_config.schema.json\n```\n\nThis schema defines the expected properties, data types, and constraints for a valid `gatewayd_config.json` configuration file.\n\n#### Generate Configuration Binary\n\nTo generate a someip config binary for your project, add the following to your `BUILD.bazel` file:\n\n```bash\nload(\"@score_someip_gateway//bazel/tools:someip_config.bzl\", \"generate_someip_config_bin\")\ngenerate_someip_config_bin(\n    name = \"\u003cgeneration_rule_name\u003e\",\n    json = \"//\u003cpackage\u003e:\u003cpath_to_gatewayd_config_json\u003e\",\n    output = \"etc/gatewayd_config.bin\",\n)\n```\n\nYou can then either use it as a runfile dependency for a run target:\n\n```bash\ngenerate_someip_config_bin(\n    name = \"someipd_config\",\n    ...\n)\n\nnative_binary(\n    name = \"gatewayd\",\n    src = \"@score_someip_gateway//src/gatewayd\",\n    args = [\n        \"-service_instance_manifest\",\n        \"$(rootpath etc/mw_com_config.json)\",\n    ],\n    data = [\n        \"etc/mw_com_config.json\",\n        \":someipd_config\",\n    ],\n)\n```\n\nOr you can manually generate the `gatewayd_config.bin` with the following command:\n\n```bash\nbazel build //:someipd_config # if the macro has been added to root BUILD.bazel\n```\n\nOn success you can retrieve the generated `gatewayd_config.bin` from `bazel-bin/`. Check the success message for the exact path.\n\n\n#### Configuration Validation\n\nWhen using the `generate_someip_config_bin` macro a validation test is automatically generated to validate the schema json against the schema. This can be executed via:\n\n```bash\nbazel test //:\u003cgeneration_rule_name\u003e_test # if the macro has been added to root BUILD.bazel\n```\n\n\n## QNX Build\n\nEither use a `.netrc` file to provide the login credentials for your myQNX account or provide them as environment variables `SCORE_QNX_USER` and `SCORE_QNX_PASSWORD`.\nYou can use an extension like `pomdtr.secrets` to manage the secrets or inject it via environment.\n\nThe QNX toolchain is automatically downloaded when building for QNX.\nIf the automatic download via bazel fails for some reason you can also provide the manually downloaded file in a directory which you then pass via the `--distdir` command line option.\n\nMake sure your qnx license file is available as `/opt/score_qnx/license/licenses` (e.g. by copying it from your `~/.qnx/license/licenses`)\n\nIf you use a license server then add the following in in your `~/.bazelrc`:\n\n    common --action_env=QNXLM_LICENSE_FILE=\u003cport\u003e@\u003clicense_server_host\u003e\n\n\u003e :warning: Getting license from server not yet supported within devcontainer. Need to figure out how to adjust user \u0026 hostname properly.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feclipse-score%2Finc_someip_gateway","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feclipse-score%2Finc_someip_gateway","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feclipse-score%2Finc_someip_gateway/lists"}