Commit 9d3ab1c2 authored by Markus Georg Bendel's avatar Markus Georg Bendel

Add docker image and dockerfile

parent 63f3ab4b
Pipeline #145583 passed with stage
in 1 minute and 43 seconds

Too many changes to show.

To preserve performance only 364 of 364+ files are displayed.

......@@ -13,11 +13,27 @@ Installing boost 1.65 on ubuntu:
sudo apt-get install libboost-system1.65-dev libboost-thread1.65-dev libboost-log1.65-dev
Build vsomeip from vsomeip main directory:
mkdir build
cd build
sudo cmake ..
sudo make
sudo make install
If build fails, try to apply this fix:
Summary of the fix:
Replace "return &sockaddr;" with "return reinterpret_cast<struct sockaddr*>(&sockaddr);" in:
Replace "return &sockaddr;" with "return reinterpret_cast<struct sockaddr*>(&sockaddr);"
in: implementation/endpoints/include/netlink_connector.hpp
#### Build the documentation:
To build the documentation asciidoc, source-highlight, doxygen and graphviz is needed:
sudo apt-get install asciidoc source-highlight doxygen graphviz
make doc
Bayerische Motoren Werke Aktiengesellschaft (BMW AG)
\ No newline at end of file
- Improve memory usage of routing manager.
- Improve handling of incoming SD messages with uncommon entry
- Name all threads under Linux and log thread IDs during startup.
- Optimize memory allocation for internal message handling.
- Ensure an (extra) dispatch thread is running in case the main
dispatch thread is (still) blocked.
- Fix race condition which could lead to missing initial events for
local subscriptions if the application hosting the service called
application::offer_event and additionally application::request_event
for the same event.
- Fixed crash
- Add security config (i.e. vsomeip_security.json) to mandatory config files
- Enable to use externally defined configuration
- Reject malformed subscriptions with SubscribeEventgroupNACK if multiple
endpoint options are referenced
- Use CMake define or environment variable to find gtest
- Quit vsomeipd when Service Discovery is configured but module cannot be loaded
- Added error message when Configuration module cannot be loaded
- Export payload_impl to enable compilation with newer GCC versions
- Avoid printing the same warning twice. Ensure all error paths are identifiable
- Fixed security checks for policies without configured client ID
- Fixed crash on auto config load in case of EOWNERDEAD caused by previous crashed/exited application
- Catch exceptions on shutdown (especially from boost::log)
- Fixed handling of malformed packets in TCP client endpoint in conjunction
with magic cookies
- Fix restarting of TCP connection on connection reset by the server
and mark services reachable through it as unavailable until
connection is established again.
- Fix bug which prevented restarting of TCP connections if the peer
instantly send a RST after the connection had been established.
- Fix bug which could cause missing initial events in conjunction with
service discovery messages containing new subscriptions and
- Speedup initial subscriptions to unreliable remote services
- Fix deadlock in conjunction with configured client ports
- Fix bug leading to usage of client port outside of configured range
- Only map shared memory for client IDs once per process
- Fix remote event caching
- Bugfix for pending subscriptions when same port is used
for TCP and UDP endpoint option.
- Fix exception handling for boost logger
- Fix client ID handling for remote selective subscriptions
- Add handling for EDESTADDRREQ in endpoints
- Fix concurrency issue leading to a crash
- Improve handling of service discovery messages with entries
referencing too many options.
- Prevent sending of duplicate remote subscriptions to local clients
if the local client processes incoming subscriptions too slow.
- Remote (un)subscriptions to the same eventgroup are now queued in
the routing manager until the local client has processed the
previous (un)subscription for this eventgroup.
- Introduce new json configuration parameter 'diagnosis_mask' to
control the number of bits in the client ID used for the diagnosis
address. This can be used to enable more than 254 concurrent clients
on a node. For more information see the vsomeipUserGuide.
- If the service discovery is enabled it is is only started if a
matching multicast route for the configured service discovery
multicast group is present in the system. This applies only to
- Rework security configuration:
- Allow policy specifications without client specification.
- Allow policies to be specified for ranges of uids/gids.
For more information see the vsomeipUserGuide.
- Change dispatching of availability states in case an availability
handler of a service instance is blocked in user code: Availability
states of a service instance are now never dispatched parallel. The
next availability state for a service instance is only dispatched
after the blocked availability handler returned from user code. If
the availability of the service instance changes in the meantime,
subsequent incoming messages of the service instance are queued
until the availability change was reported to the user code.
- Subscriptions to remotely offered services are now always done based
on the protocol(s) the remote service is offered with. The
subscription_type parameter of the application::subscribe method is
- Added wildcard support ("any") for the uid and gid json parameters
in the security configuration.
- Fix possible deadlock on application shutdown
- Fix potential deadlock when expiring remote subscriptions
- Rework restarting of tcp client endpoints to prevent heap corruption
under high load situations
- Fix concurrency issue leading to a crash when asynchronous
subscription handlers were used.
- Improved packing of subscriptions sent out as answer to incoming
offer service messages.
- Fix possible deadlock on application shutdown
- Try to reestablish TCP connection on resubscription if the remote
closed the connection
- Introduce new configuration file parameters to control
interpretation of TTL field of incoming remote offers and
- service-discovery > ttl_factor_offers (optional array of
service/instance/TTL factor tuples)
- service-discovery > ttl_factor_subscriptions (optional array of
service/instance/TTL factor tuples)
- Added possibility to debounce external events/fields
based on time or change of data in the payload (maskable) via new
configuration file parameter:
- debounce (optional array)
For more information see the vsomeipUserGuide.
- Added possibility to limit amount of memory used to cache outgoing
messages on IP port basis or globally via configuration file
- endpoint-queue-limits (array): to limit on IP:Port (endpoint)
- endpoint-queue-limit-external: to generally limit all external
- endpoint-queue-limit-local: to limit queue sizes for local
For more information see the vsomeipUserGuide.
- Extended diagnosis plugin to handle requests for
"disableRxAndEnableTx" and "disableRxAndTx".
- Catch unhandled user code exceptions thrown from called handlers.
- Don't send SubscribeEventGroupNACK for pending subscriptions on next
offer to reduce the amount of StopSubscribe/Subscribe messages.
- Added possibility to apply filter for client side logging
using VSOMEIP_CLIENTSIDELOGGING environment variable.
- Interpret all incoming TTLs five times longer in service discovery
to prevent inadvertent expiration of remote offers during high load
- Fix deadlock in routing manager when processing subscription
acknowledgment from a local client if the corresponding service
instance was stopped in the meanwhile.
- Introduce status_log_interval and memory_log_interval json file
parameters which can be used to cyclically log memory consumption
and/or internal status of the routing manager in a given interval
- Add Debug Diagnosis Job plug-in
- Support definition of multiple client port ranges in configuration
- Fix possible memory corruption in routing manager on TCP connection
- Add register_async_subscription_handler to application interface
- Ensure faster stopping of UDP and TCP endpoints
- StopSubscribe eventgroup entries of StopSubscribe/Subscribe
eventgroup entry sequences in incoming SD messages are now
completely handled in the service discovery module
- Change magic cookie behaviour to only send a magic cookie every 10
seconds instead of in front of every SOME/IP message
- Fixed bug which prevented resubscription after resuming from
suspended state
- Fixed deadlock on suspend to RAM / resume, triggered
by signal handler.
- Fixed race condition on application shutdown
- Fixed bug that application object was not destroyed
- Enabled client side logging of received messages
to DLT if environment variable VSOMEIP_CLIENTSIDELOGGING
is set to empty string or another arbitrary value.
- Ensure that the correct source port is used for sending events
- fix handling of received response messages for unknown
- Ensure that all external services are marked as offline when
routing_state is set to RS_SUSPENDED
- Ensure to start sending out FindService messages for requested
services after resuming.
- Ensure that the service info is also deleted if no unreliable
communication happened before the service TTL has expired.
- Don't ignore service requests for UDP-only remote services done
before corresponding OfferService message was received.
- Ensure that main dispatcher thread waits until newly started
dispatcher threads are finished with their call into the user code
before starting to dispatch again after a blocking call occurred.
- Added get_offered_services_async method to application interface to
read the currently offered services
- Added set_watchdog_handler method to application interface which can
be used to register a handler invoked in a given interval.
- Optimize processing time of incoming service discovery messages
- Events are now sent based on their configuration in the json file
- If a remote service is offered reliable and unreliable subscriptions
are now done always with both endpoint options.
- Incoming subscriptions are now not acknowledged if not all events of
the eventgroup can be served with the given endpoint options.
- Support negative filter in trace connector
- Change behaviour of register_subscription_status_handler method of
the application interface: Registered handlers will only be called
if the subscription was accepted by the remote side.
- Add 2nd register_subscription_status_handler method to application
interface with additional flag to enable calling of the registered
handler if the subscription is rejected by the remote side.
- Fix deadlock when stopping client endpoints to remote services
- Fix deadlock during construction of Subscribe Eventgroup entries
- Avoid deadlock when printing error message about too large messages
- Prevent processing of too short messages received via UDP
- Avoid catching SIGABRT in vsomeipd
- Prevent duplicate logging of remote messages
- Log message cleanup/enhancement
- Add possibility to register a subscription status handler via
application interface. The handler will be called if a subscription
is acknowledged / not acknowledged by the application hosting the
target service instance of the subscription
- The default subscription type of application::subscribe method was
initial event behaviour
- Add generic plug-in concept
- Fix bug which caused sending out subscription messages containing
endpoint options with port set to zero
- Make magic cookie detection TCP connection based
- Avoid sending unneeded SIGKILLs to current routing manager
- Forward service's instance IDs to DLT
- Fixed performance loss on "client ID" lookup needed for ingoing
remote subscriptions
- Add signal handling for starting stopping the service discovery to
- The message object can now be asked for CRC check state:
- Incoming remote responses where the CRC check fails will trigger:
- Fix bug in reboot detection of other nodes
- Improve restarting of TCP connections
- Improve reboot detection of other nodes
- Introduce 'max-payload-size-reliable' json file parameter which can be used to
globally limit the maximum allowed payload size for TCP communication
- Added CRC checksum calculation for bit optimized messages
- Service-Disovery performance improvements
- Made Routing Manager restartable
- Fixed file handle leak caused by remote ECU reboot
- Activate TCP-Keep-Alive for TCP endpoints
- Debouncing of request-service messages (routing info performance)
- Fixed false session-id handling of identification request
- Fixed clearing of subscribers on stop offer service
- Fixed races and crashes
- Fixed repetition phase timings for find service messages
- Reworked internal event/field distribution to reduce CPU load
- Reworked internal routing info distribution leading to fewer and smaller
messages and lower CPU load
- Extend public application interface with second unsubscribe method with
additional event parameter
- Fixed races and crashes
- The minor version of a service instance is considered again when reporting the
service instance's availability (this was removed with v2.4.2). If the minor
version should not be considered use ANY_MINOR or DEFAULT_MINOR when
registering availability handlers.
- Fixed initial events on unsubscription
- Improved dispatcher handling for blocking calls
- Crashed applications are now automatically unsubscribed
- Fixed deadlock and crashes
- Prevent race of initial attributes
- Allow incomplete application configurations
- Unit test timeouts increased to avoid failures on (slow) build servers
- Removed payload size limit. By default messages with an arbitrary length can
now be sent locally and via TCP. The payload-sizes configuration file array is
now used to limit the payload size for the specified endpoints instead of
increasing it. There are two new configuration file parameters:
- max-payload-size-local: limit maximum allowed payload size for node internal
- buffer-shrink-threshold: variable to control buffer memory deallocation
after big messages have been processed. For more information see the
- Fixed cleanup of endpoints for subscriptions using an exclusive proxy
(selective) which unnecessarily increased the number of open file descriptors.
- Fixed assignment of predefined application IDs via autoconfiguration.
- Decouple start of routing manager from network availability.
- Made number of internal threads per application configurable.
- Postpone notify_one events sent from subscription handler to ensure correct
message order on receiver side.
- Added notify-/notify_one-methods to enable flush control for notifications.
- Restructured configuration to be a separate module (preparation to enable
the usage of compiled configurations to speed-up startup)
- Added vSomeIP-Security: Socket authentication based on Linux-credentials
together with further security checks using configurable policies.
- Fixed pending subscriptions had not sent out if subscribing application
hosts the routing manager.
- Fixed crash in vsomeipd due to concurrent access when closing/shutdown socket.
- The service discovery now debounces newly offered service instances to avoid
sending out the offers of the same service instance with a too high frequency.
The default debounce time is set to 500ms. It can be changed via the new json
file parameter service-discovery/offer_debounce_time.
- Fix receiving of UDP frames containing multiple SOME/IP messages via UDP from
external service instances
- TCP connections for services no longer requested aren't reestablished anymore
- The minor version of a service instance is no longer considered when reporting
the service instance's availability
- Introduce new internal_services json file parameter to define the internal
service instances. This parameter can be used to control the sending behaviour
for find service entries
- Fixed event processing if service and client shared the same application
- Incoming find service entries with unicast flag set to 0 are now replied with
a unicast offer service message instead of a multicast offer service message.
- application::stop() now blocks until the shutdown has finished completely
- Extended number of endpoints that can be referenced from entries array in
service discovery messages
- Remove DLT contexts on application shutdown
- Avoid initialization of vsomeip-applications if the maximum number of
applications (client identifiers) has been reached
- Prevent sending of OfferService entry as a reply to FindService message for
internal services
- Fixed deregistration of vsomeip-applications that became unresponsive
- Fixed loop in endpoints causing high load during shutdown of vsomeip
- Fixed loop in endpoints causing temporary high load if other devices become
unavailable without deregistering
- Disabled tracing SOME/IP-SD messages by default. Set "tracing/sd_enable"
switch to "true" to enable it.
- Trace notification events once instead of per target.
- Fix TTL in Subscribe Eventgroup Entries
- Exhaust client id range before reuse
- Provide public interface to ask for available instances
- Added -q/--quiet switch to the daemon to allow it to be started without
DLT logging
- Fix event caching in routing manager
- Fix client deregistration during the client registration
- Fix handling of pending commands during registration
- Fix shutdown crashes (logger & application shutdown)
- Fix race condition in client identifier configuration
- Fix vsomeipd crash
- Fixed handling of notifications (compliance)
- Extend the API to force field notifications
- Implemented cyclic updated for events/fields
- Implemented epsilon updates (the used can provide a function to decide
whether or not a value update shall be considered as a change)
- Fixed lifecycle: Wait acknowledge of de/register application
- Periodically log version information
- Avoid (shadow) event registrations for services only offered locally
- Fixed determination of routing manager host in case auto-configuration
- Removed initial flag from internal message format
- Fixed calling of registered message handlers for cases where wildcards
were used during registration.
- Fixed availability reporting of reliable (TCP) remote services offered
on the same port
- Set default log level to DEBUG
- Improved segmentation of service discovery messages
- Fixed a race condition during subscriptions
- Ensure service discovery messages to not exceed maximum packet size
- Ensure multicast messages are sent by the network adapter that is configured
to be used for unicasts instead of relying on the configured routes
- Backward compatibility fixes
- Implemented Peer-to-Peer data exchange for notifications
- Fixed handling of minor version during service discovery
- Made initialization of application objects reentrant
- Routing manager proxies now reconnect to the routing manager if the
connection got lost
- Auto-configuration supports multiple (different) configuration files
- The opening of TCP connections is no longer done without an explicit request
- Request No Respose messages are no longer answered in case of errors
- Notifications over IP were fixed
- Ensure correct message order
- Ensure SD FindService-messages are sent after client re-registration