CHANGES 24 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584
Changes
=======

v2.10.21
- Improve memory usage of routing manager.
- Improve handling of incoming SD messages with uncommon entry
  combinations.
- 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

v2.10.20
- Add security config (i.e. vsomeip_security.json) to mandatory config files
- Enable local_routing_test_starter.sh to use externally defined configuration
  files
- 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

v2.10.19
- Catch exceptions on shutdown (especially from boost::log)
- Fixed handling of malformed packets in TCP client endpoint in conjunction 
  with magic cookies

v2.10.18
- 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
  resubscriptions.

v2.10.17
- 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

v2.10.16
- Only map shared memory for client IDs once per process

v2.10.15
- Fix remote event caching

v2.10.14
- Bugfix for pending subscriptions when same port is used
  for TCP and UDP endpoint option.

v2.10.13

v2.10.12
- Fix exception handling for boost logger

v2.10.11
- Fix client ID handling for remote selective subscriptions
- Add handling for EDESTADDRREQ in endpoints

v2.10.10
- Fix concurrency issue leading to a crash

v2.10.9
- 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
  Linux.
- 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.

v2.10.8
- 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
  ignored.
- Added wildcard support ("any") for the uid and gid json parameters
  in the security configuration.
- Fix possible deadlock on application shutdown

v2.10.7
- Fix potential deadlock when expiring remote subscriptions
- Rework restarting of tcp client endpoints to prevent heap corruption
  under high load situations

v2.10.6
- 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.

v2.10.5
- 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
  subscriptions:
  - 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
  parameter:
  - endpoint-queue-limits (array): to limit on IP:Port (endpoint)
    level
  - endpoint-queue-limit-external: to generally limit all external
    endpoints.
  - endpoint-queue-limit-local: to limit queue sizes for local
    communication
  For more information see the vsomeipUserGuide.


v2.10.4
- 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.

v2.10.3
- Interpret all incoming TTLs five times longer in service discovery
  to prevent inadvertent expiration of remote offers during high load
  situations.

v2.10.2
- 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

v2.10.1
- Fix possible memory corruption in routing manager on TCP connection
  reset

v2.10.0
- 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

v2.9.5
- 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

v2.9.4
- Fixed deadlock on suspend to RAM / resume, triggered
  by signal handler.

v2.9.3
- 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

v2.9.2
- fix handling of received response messages for unknown
  clients.
- 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.

v2.9.1
- 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.

v2.9.0
- 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.

v2.8.1
- Support negative filter in trace connector

v2.8.0
- 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.

v.2.7.3
- Fix deadlock when stopping client endpoints to remote services
- Fix deadlock during construction of Subscribe Eventgroup entries

v.2.7.2
- Avoid deadlock when printing error message about too large messages

v2.7.1
- Prevent processing of too short messages received via UDP
- Avoid catching SIGABRT in vsomeipd
- Prevent duplicate logging of remote messages
- Log message cleanup/enhancement

v2.7.0
- 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
  changed from RELIABLE_AND_UNRELIABLE to PREFER_RELIABLE to harmonize
  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
  vsomeipd
- The message object can now be asked for CRC check state:
  is_valid_crc()
- Incoming remote responses where the CRC check fails will trigger:
  set_is_valid_crc(false)

v2.6.4
- Fix bug in reboot detection of other nodes
- Improve restarting of TCP connections

v2.6.3
- 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

v2.6.2
- 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

v2.6.1
- Fixed clearing of subscribers on stop offer service

v2.6.0
- 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

v2.5.3
- 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

v2.5.2
- Fixed deadlock and crashes
- Prevent race of initial attributes
- Allow incomplete application configurations
- Unit test timeouts increased to avoid failures on (slow) build servers

v2.5.1
- 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
    communication.
  - buffer-shrink-threshold: variable to control buffer memory deallocation
    after big messages have been processed. For more information see the
    vsomeipUserGuide.
- 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.

v2.5.0
- 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.

v2.4.3
- Fix receiving of UDP frames containing multiple SOME/IP messages via UDP from
  external service instances

v2.4.2
- 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

v2.4.1
- 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
  applications
- Fixed loop in endpoints causing temporary high load if other devices become
  unavailable without deregistering

v2.4.0
- 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.

v2.3.5
- Fix TTL in Subscribe Eventgroup Entries

v2.3.4
- Exhaust client id range before reuse
- Provide public interface to ask for available instances

v2.3.3
- Added -q/--quiet switch to the daemon to allow it to be started without
  DLT logging
- Fix event caching in routing manager

v2.3.2
- Fix client deregistration during the client registration
- Fix handling of pending commands during registration

v2.3.1
- Fix shutdown crashes (logger & application shutdown)
- Fix race condition in client identifier configuration
- Fix vsomeipd crash
- Fixed handling of notifications (compliance)

v2.3.0
- 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
  fails
- 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

v2.2.4
- Set default log level to DEBUG
- Improved segmentation of service discovery messages
- Fixed a race condition during subscriptions

v2.2.3
- Ensure service discovery messages to not exceed maximum packet size

v2.2.2
- Ensure multicast messages are sent by the network adapter that is configured
  to be used for unicasts instead of relying on the configured routes

v2.2.1
- Backward compatibility fixes 
  
v2.2.0
- 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

v2.1.2
- Ensure correct message order

v2.1.1
- Ensure SD FindService-messages are sent after client re-registration
- Corrected configuration of MagicCookies
- Make client ports configurable
- Implemented FindService message optimization
- Extended configuration consistency checks

v2.1.0
- Avoid duplicate notifications if a selective event is in more than one
  eventgroup
- Ensure SD messages are sent from the SD port
- Ignore SD messages with wrong message identifier
- Accept unreliable subscription for eventgroups without configured multicast
  address
- Reject subscriptions that contain invalid IP address or port
- Reject subscriptions for TCP if the connection is not established
- Exclude vsomeip_ctrl from default installation
- Only accept SD messages from SD port
- Acknowledge multiple subscriptions sent within the same message with a single
  message
- Allow to specify an application specific DLT application
- Ensure correct ordering of availability notifications
- Automatically expire subscription based on the given TTL
- Do not include internal services in SD offer messages
- Consider all fields of SD subscribe messages
- Made the watchdog configurable
- Support destination address resolution on Windows (for reboot detection)
- Support auto-configuration (client identifiers, routing manager) on Windows

v2.0.6
- Diagnosis address can be configured at runtime

v2.0.5
- Fixed reboot detection behavior

v2.0.4
- Service Discovery now used configured Client ID prefixes (=DIAGNOSIS_ADDRESS)
- Reworked reboot detection (now based on the destination address)
- Aligned default TTL setting (was 5 in vsomeip and 0xFFFFFF in vsomeip-sd, now
  its constently 0xFFFFFF)

v2.0.3
- Fixed shutdown and application re-registering

v2.0.2
- Fixed endpoint flushing
- Improved handling of Selective Broadcasts (CommonAPI)
- Trace connector was added
- Added reboot detection
- Reworked handling of TCP connections
- Support multiple multicast eventgroups per service
- Improved handling of multicasts
- Extended Service Discovery to send FindMessage messages for unknown services
- Support multiple SOME/IP messages in a single UDP datagram

v2.0.1
- Ensure Unicast flag is set in all Service Discovery messages
- Allow "local" as alias for unicast address in Magic Cookie configuration
- Correctly set layer 4 protocol in multicast options
- Increased robustness of deserialization of configuration options
- Fixed handling of unknown Service Discovery options

v2.0.0
- Buffer sizes were adapted to the transport protocols
- Added support for IPv6 multicast
- Improved handling of endpoints
- Report service state changes instead of service state to the application
- Set and process TTL field in Service Discovery to support detection of "lost"
  services
- Support automatic configuration of local communication
- Added compile time variable DIAGNOSIS_ADDRESS (which maps to the high byte of
  the SOME/IP client identifier)
- Configuration of events was moved from configuration file to API.
- Fixed routing of notication events.
- Increased robustness of configuration loader
- Changed default watchdog cycle from 1s to 5s
- Removed TTL arguments from public interface
- Allow Service Discovery to report non-SOME/IP services by setting the
  configuration variable "protocol"
- Fixed serialization of major version in Eventgroup entries
- Magic Cookies are no longer forwarded to the routing manager but handled in
  the receiving endpoint
- vsomeip daemon was added

v1.3.0
- Fixed SD library loading on Windows
- Changed cmake directory name (CMake --> cmake)
- Corrected check for multicast address in Service Discovery
- Added default setting for Service Discovery timings
- Ensure only local services are reported by the Service Discovery
- Fixed a crash in case of a wrong unicast address definition
- Protected forwarding of availability information
- Improved handling of notification events
- Added initial support for selective broadcasts (CommonAPI)
- Avoid deadlock when offering services
- Correct handling of events
- Added initial support for managed interfaces (CommonAPI)

v1.2.0
- Added (optional) thread pool for distribution of messages to the application
- Made configuration of service groups optional (as it is unneeded in pure 
  client applications)
- Support specification of transportation mode (reliable (TCP) / unreliable
  (UDP)) when creating messages
- Fixed internal distribution of notication events
- Block messages that are received on the wrong port
- Fixed deregistration of local clients
- Fixed startup of applications that were started earlier than the routing
  manager
- Resetting all events of a service if it becomes unavailable (to ensure initial
  events are sent when it becomes available again)
- Ensure consistency of version information
- Fixed Service Discovery state machine

v1.1.0
- Local communication in multiprocessor environments was fixed
- Runtime access was changed from raw to shared pointer
- vsomeip logger is used whereever possible (replacing std::cerr calls)
- Ensure the logger is not deleted before issueing tha last log message when
  shutting down
- Fixed shutdown crash by checking the existence of endpoint host before
  accessing it
- Routing info processing in case of multiple instances of the same service
  was fixed
- Support for local communication on Windows was added