Skip to content

Commit

Permalink
Add option for disabling use of IP_PKTINFO
Browse files Browse the repository at this point in the history
There is a small performance penalty associated with the use of the IP_PKTINFO socket
option. This adds an option Internal/ExtendedPacketInfo to disable it because there may be
cases where preventing the performance loss is more important than preventing some
discovery mishaps.

Signed-off-by: Erik Boasson <eb@ilities.com>
  • Loading branch information
eboasson committed Mar 20, 2024
1 parent b336a27 commit 938de62
Show file tree
Hide file tree
Showing 8 changed files with 58 additions and 13 deletions.
18 changes: 15 additions & 3 deletions docs/manual/config/config_file_reference.rst
Expand Up @@ -818,7 +818,7 @@ The default value is: ``default``
//CycloneDDS/Domain/Internal
============================

Children: :ref:`AccelerateRexmitBlockSize<//CycloneDDS/Domain/Internal/AccelerateRexmitBlockSize>`, :ref:`AckDelay<//CycloneDDS/Domain/Internal/AckDelay>`, :ref:`AutoReschedNackDelay<//CycloneDDS/Domain/Internal/AutoReschedNackDelay>`, :ref:`BuiltinEndpointSet<//CycloneDDS/Domain/Internal/BuiltinEndpointSet>`, :ref:`BurstSize<//CycloneDDS/Domain/Internal/BurstSize>`, :ref:`ControlTopic<//CycloneDDS/Domain/Internal/ControlTopic>`, :ref:`DefragReliableMaxSamples<//CycloneDDS/Domain/Internal/DefragReliableMaxSamples>`, :ref:`DefragUnreliableMaxSamples<//CycloneDDS/Domain/Internal/DefragUnreliableMaxSamples>`, :ref:`DeliveryQueueMaxSamples<//CycloneDDS/Domain/Internal/DeliveryQueueMaxSamples>`, :ref:`EnableExpensiveChecks<//CycloneDDS/Domain/Internal/EnableExpensiveChecks>`, :ref:`GenerateKeyhash<//CycloneDDS/Domain/Internal/GenerateKeyhash>`, :ref:`HeartbeatInterval<//CycloneDDS/Domain/Internal/HeartbeatInterval>`, :ref:`LateAckMode<//CycloneDDS/Domain/Internal/LateAckMode>`, :ref:`LivelinessMonitoring<//CycloneDDS/Domain/Internal/LivelinessMonitoring>`, :ref:`MaxParticipants<//CycloneDDS/Domain/Internal/MaxParticipants>`, :ref:`MaxQueuedRexmitBytes<//CycloneDDS/Domain/Internal/MaxQueuedRexmitBytes>`, :ref:`MaxQueuedRexmitMessages<//CycloneDDS/Domain/Internal/MaxQueuedRexmitMessages>`, :ref:`MaxSampleSize<//CycloneDDS/Domain/Internal/MaxSampleSize>`, :ref:`MeasureHbToAckLatency<//CycloneDDS/Domain/Internal/MeasureHbToAckLatency>`, :ref:`MonitorPort<//CycloneDDS/Domain/Internal/MonitorPort>`, :ref:`MultipleReceiveThreads<//CycloneDDS/Domain/Internal/MultipleReceiveThreads>`, :ref:`NackDelay<//CycloneDDS/Domain/Internal/NackDelay>`, :ref:`PreEmptiveAckDelay<//CycloneDDS/Domain/Internal/PreEmptiveAckDelay>`, :ref:`PrimaryReorderMaxSamples<//CycloneDDS/Domain/Internal/PrimaryReorderMaxSamples>`, :ref:`PrioritizeRetransmit<//CycloneDDS/Domain/Internal/PrioritizeRetransmit>`, :ref:`RediscoveryBlacklistDuration<//CycloneDDS/Domain/Internal/RediscoveryBlacklistDuration>`, :ref:`RetransmitMerging<//CycloneDDS/Domain/Internal/RetransmitMerging>`, :ref:`RetransmitMergingPeriod<//CycloneDDS/Domain/Internal/RetransmitMergingPeriod>`, :ref:`RetryOnRejectBestEffort<//CycloneDDS/Domain/Internal/RetryOnRejectBestEffort>`, :ref:`SPDPResponseMaxDelay<//CycloneDDS/Domain/Internal/SPDPResponseMaxDelay>`, :ref:`SecondaryReorderMaxSamples<//CycloneDDS/Domain/Internal/SecondaryReorderMaxSamples>`, :ref:`SocketReceiveBufferSize<//CycloneDDS/Domain/Internal/SocketReceiveBufferSize>`, :ref:`SocketSendBufferSize<//CycloneDDS/Domain/Internal/SocketSendBufferSize>`, :ref:`SquashParticipants<//CycloneDDS/Domain/Internal/SquashParticipants>`, :ref:`SynchronousDeliveryLatencyBound<//CycloneDDS/Domain/Internal/SynchronousDeliveryLatencyBound>`, :ref:`SynchronousDeliveryPriorityThreshold<//CycloneDDS/Domain/Internal/SynchronousDeliveryPriorityThreshold>`, :ref:`Test<//CycloneDDS/Domain/Internal/Test>`, :ref:`UnicastResponseToSPDPMessages<//CycloneDDS/Domain/Internal/UnicastResponseToSPDPMessages>`, :ref:`UseMulticastIfMreqn<//CycloneDDS/Domain/Internal/UseMulticastIfMreqn>`, :ref:`Watermarks<//CycloneDDS/Domain/Internal/Watermarks>`, :ref:`WriterLingerDuration<//CycloneDDS/Domain/Internal/WriterLingerDuration>`
Children: :ref:`AccelerateRexmitBlockSize<//CycloneDDS/Domain/Internal/AccelerateRexmitBlockSize>`, :ref:`AckDelay<//CycloneDDS/Domain/Internal/AckDelay>`, :ref:`AutoReschedNackDelay<//CycloneDDS/Domain/Internal/AutoReschedNackDelay>`, :ref:`BuiltinEndpointSet<//CycloneDDS/Domain/Internal/BuiltinEndpointSet>`, :ref:`BurstSize<//CycloneDDS/Domain/Internal/BurstSize>`, :ref:`ControlTopic<//CycloneDDS/Domain/Internal/ControlTopic>`, :ref:`DefragReliableMaxSamples<//CycloneDDS/Domain/Internal/DefragReliableMaxSamples>`, :ref:`DefragUnreliableMaxSamples<//CycloneDDS/Domain/Internal/DefragUnreliableMaxSamples>`, :ref:`DeliveryQueueMaxSamples<//CycloneDDS/Domain/Internal/DeliveryQueueMaxSamples>`, :ref:`EnableExpensiveChecks<//CycloneDDS/Domain/Internal/EnableExpensiveChecks>`, :ref:`ExtendedPacketInfo<//CycloneDDS/Domain/Internal/ExtendedPacketInfo>`, :ref:`GenerateKeyhash<//CycloneDDS/Domain/Internal/GenerateKeyhash>`, :ref:`HeartbeatInterval<//CycloneDDS/Domain/Internal/HeartbeatInterval>`, :ref:`LateAckMode<//CycloneDDS/Domain/Internal/LateAckMode>`, :ref:`LivelinessMonitoring<//CycloneDDS/Domain/Internal/LivelinessMonitoring>`, :ref:`MaxParticipants<//CycloneDDS/Domain/Internal/MaxParticipants>`, :ref:`MaxQueuedRexmitBytes<//CycloneDDS/Domain/Internal/MaxQueuedRexmitBytes>`, :ref:`MaxQueuedRexmitMessages<//CycloneDDS/Domain/Internal/MaxQueuedRexmitMessages>`, :ref:`MaxSampleSize<//CycloneDDS/Domain/Internal/MaxSampleSize>`, :ref:`MeasureHbToAckLatency<//CycloneDDS/Domain/Internal/MeasureHbToAckLatency>`, :ref:`MonitorPort<//CycloneDDS/Domain/Internal/MonitorPort>`, :ref:`MultipleReceiveThreads<//CycloneDDS/Domain/Internal/MultipleReceiveThreads>`, :ref:`NackDelay<//CycloneDDS/Domain/Internal/NackDelay>`, :ref:`PreEmptiveAckDelay<//CycloneDDS/Domain/Internal/PreEmptiveAckDelay>`, :ref:`PrimaryReorderMaxSamples<//CycloneDDS/Domain/Internal/PrimaryReorderMaxSamples>`, :ref:`PrioritizeRetransmit<//CycloneDDS/Domain/Internal/PrioritizeRetransmit>`, :ref:`RediscoveryBlacklistDuration<//CycloneDDS/Domain/Internal/RediscoveryBlacklistDuration>`, :ref:`RetransmitMerging<//CycloneDDS/Domain/Internal/RetransmitMerging>`, :ref:`RetransmitMergingPeriod<//CycloneDDS/Domain/Internal/RetransmitMergingPeriod>`, :ref:`RetryOnRejectBestEffort<//CycloneDDS/Domain/Internal/RetryOnRejectBestEffort>`, :ref:`SPDPResponseMaxDelay<//CycloneDDS/Domain/Internal/SPDPResponseMaxDelay>`, :ref:`SecondaryReorderMaxSamples<//CycloneDDS/Domain/Internal/SecondaryReorderMaxSamples>`, :ref:`SocketReceiveBufferSize<//CycloneDDS/Domain/Internal/SocketReceiveBufferSize>`, :ref:`SocketSendBufferSize<//CycloneDDS/Domain/Internal/SocketSendBufferSize>`, :ref:`SquashParticipants<//CycloneDDS/Domain/Internal/SquashParticipants>`, :ref:`SynchronousDeliveryLatencyBound<//CycloneDDS/Domain/Internal/SynchronousDeliveryLatencyBound>`, :ref:`SynchronousDeliveryPriorityThreshold<//CycloneDDS/Domain/Internal/SynchronousDeliveryPriorityThreshold>`, :ref:`Test<//CycloneDDS/Domain/Internal/Test>`, :ref:`UnicastResponseToSPDPMessages<//CycloneDDS/Domain/Internal/UnicastResponseToSPDPMessages>`, :ref:`UseMulticastIfMreqn<//CycloneDDS/Domain/Internal/UseMulticastIfMreqn>`, :ref:`Watermarks<//CycloneDDS/Domain/Internal/Watermarks>`, :ref:`WriterLingerDuration<//CycloneDDS/Domain/Internal/WriterLingerDuration>`

The Internal elements deal with a variety of settings that are evolving and that are not necessarily fully supported. For the majority of the Internal settings the functionality is supported, but the right to change the way the options control the functionality is reserved. This includes renaming or moving options.

Expand Down Expand Up @@ -999,6 +999,18 @@ In addition, there is the keyword all that enables all checks.
The default value is: ``<empty>``


.. _`//CycloneDDS/Domain/Internal/ExtendedPacketInfo`:

//CycloneDDS/Domain/Internal/ExtendedPacketInfo
-----------------------------------------------

Boolean

Whether to enable the IP\_PKTINFO on UDP sockets to get hold of the packet destination address and interface on which it was received. This allows for better filtering on discovery packets, but comes at a small performance penalty.

The default value is: ``true``


.. _`//CycloneDDS/Domain/Internal/GenerateKeyhash`:

//CycloneDDS/Domain/Internal/GenerateKeyhash
Expand Down Expand Up @@ -2687,9 +2699,9 @@ The categorisation of tracing output is incomplete and hence most of the verbosi
The default value is: ``none``

..
generated from ddsi_config.h[a0a5954a97ea0cf110e0ee1b38507b762abecbab]
generated from ddsi_config.h[9f834d377bdea61bea6507feed2fc4a8924dc02e]
generated from ddsi__cfgunits.h[bd22f0c0ed210501d0ecd3b07c992eca549ef5aa]
generated from ddsi__cfgelems.h[114a2466af9993b70e96466a47fdbf8a125f1ff9]
generated from ddsi__cfgelems.h[f10059d775cf2e4961a2e9520bb1a4da6a124778]
generated from ddsi_config.c[0a59324bd889637ea7d04765da9b76bbe74997c1]
generated from _confgen.h[e32eabfc35e9f3a7dcb63b19ed148c0d17c6e5fc]
generated from _confgen.c[237308acd53897a34e8c643e16e05a61d73ffd65]
Expand Down
14 changes: 11 additions & 3 deletions docs/manual/options.md
Expand Up @@ -552,7 +552,7 @@ The default value is: `default`


### //CycloneDDS/Domain/Internal
Children: [AccelerateRexmitBlockSize](#cycloneddsdomaininternalacceleraterexmitblocksize), [AckDelay](#cycloneddsdomaininternalackdelay), [AutoReschedNackDelay](#cycloneddsdomaininternalautoreschednackdelay), [BuiltinEndpointSet](#cycloneddsdomaininternalbuiltinendpointset), [BurstSize](#cycloneddsdomaininternalburstsize), [ControlTopic](#cycloneddsdomaininternalcontroltopic), [DefragReliableMaxSamples](#cycloneddsdomaininternaldefragreliablemaxsamples), [DefragUnreliableMaxSamples](#cycloneddsdomaininternaldefragunreliablemaxsamples), [DeliveryQueueMaxSamples](#cycloneddsdomaininternaldeliveryqueuemaxsamples), [EnableExpensiveChecks](#cycloneddsdomaininternalenableexpensivechecks), [GenerateKeyhash](#cycloneddsdomaininternalgeneratekeyhash), [HeartbeatInterval](#cycloneddsdomaininternalheartbeatinterval), [LateAckMode](#cycloneddsdomaininternallateackmode), [LivelinessMonitoring](#cycloneddsdomaininternallivelinessmonitoring), [MaxParticipants](#cycloneddsdomaininternalmaxparticipants), [MaxQueuedRexmitBytes](#cycloneddsdomaininternalmaxqueuedrexmitbytes), [MaxQueuedRexmitMessages](#cycloneddsdomaininternalmaxqueuedrexmitmessages), [MaxSampleSize](#cycloneddsdomaininternalmaxsamplesize), [MeasureHbToAckLatency](#cycloneddsdomaininternalmeasurehbtoacklatency), [MonitorPort](#cycloneddsdomaininternalmonitorport), [MultipleReceiveThreads](#cycloneddsdomaininternalmultiplereceivethreads), [NackDelay](#cycloneddsdomaininternalnackdelay), [PreEmptiveAckDelay](#cycloneddsdomaininternalpreemptiveackdelay), [PrimaryReorderMaxSamples](#cycloneddsdomaininternalprimaryreordermaxsamples), [PrioritizeRetransmit](#cycloneddsdomaininternalprioritizeretransmit), [RediscoveryBlacklistDuration](#cycloneddsdomaininternalrediscoveryblacklistduration), [RetransmitMerging](#cycloneddsdomaininternalretransmitmerging), [RetransmitMergingPeriod](#cycloneddsdomaininternalretransmitmergingperiod), [RetryOnRejectBestEffort](#cycloneddsdomaininternalretryonrejectbesteffort), [SPDPResponseMaxDelay](#cycloneddsdomaininternalspdpresponsemaxdelay), [SecondaryReorderMaxSamples](#cycloneddsdomaininternalsecondaryreordermaxsamples), [SocketReceiveBufferSize](#cycloneddsdomaininternalsocketreceivebuffersize), [SocketSendBufferSize](#cycloneddsdomaininternalsocketsendbuffersize), [SquashParticipants](#cycloneddsdomaininternalsquashparticipants), [SynchronousDeliveryLatencyBound](#cycloneddsdomaininternalsynchronousdeliverylatencybound), [SynchronousDeliveryPriorityThreshold](#cycloneddsdomaininternalsynchronousdeliveryprioritythreshold), [Test](#cycloneddsdomaininternaltest), [UnicastResponseToSPDPMessages](#cycloneddsdomaininternalunicastresponsetospdpmessages), [UseMulticastIfMreqn](#cycloneddsdomaininternalusemulticastifmreqn), [Watermarks](#cycloneddsdomaininternalwatermarks), [WriterLingerDuration](#cycloneddsdomaininternalwriterlingerduration)
Children: [AccelerateRexmitBlockSize](#cycloneddsdomaininternalacceleraterexmitblocksize), [AckDelay](#cycloneddsdomaininternalackdelay), [AutoReschedNackDelay](#cycloneddsdomaininternalautoreschednackdelay), [BuiltinEndpointSet](#cycloneddsdomaininternalbuiltinendpointset), [BurstSize](#cycloneddsdomaininternalburstsize), [ControlTopic](#cycloneddsdomaininternalcontroltopic), [DefragReliableMaxSamples](#cycloneddsdomaininternaldefragreliablemaxsamples), [DefragUnreliableMaxSamples](#cycloneddsdomaininternaldefragunreliablemaxsamples), [DeliveryQueueMaxSamples](#cycloneddsdomaininternaldeliveryqueuemaxsamples), [EnableExpensiveChecks](#cycloneddsdomaininternalenableexpensivechecks), [ExtendedPacketInfo](#cycloneddsdomaininternalextendedpacketinfo), [GenerateKeyhash](#cycloneddsdomaininternalgeneratekeyhash), [HeartbeatInterval](#cycloneddsdomaininternalheartbeatinterval), [LateAckMode](#cycloneddsdomaininternallateackmode), [LivelinessMonitoring](#cycloneddsdomaininternallivelinessmonitoring), [MaxParticipants](#cycloneddsdomaininternalmaxparticipants), [MaxQueuedRexmitBytes](#cycloneddsdomaininternalmaxqueuedrexmitbytes), [MaxQueuedRexmitMessages](#cycloneddsdomaininternalmaxqueuedrexmitmessages), [MaxSampleSize](#cycloneddsdomaininternalmaxsamplesize), [MeasureHbToAckLatency](#cycloneddsdomaininternalmeasurehbtoacklatency), [MonitorPort](#cycloneddsdomaininternalmonitorport), [MultipleReceiveThreads](#cycloneddsdomaininternalmultiplereceivethreads), [NackDelay](#cycloneddsdomaininternalnackdelay), [PreEmptiveAckDelay](#cycloneddsdomaininternalpreemptiveackdelay), [PrimaryReorderMaxSamples](#cycloneddsdomaininternalprimaryreordermaxsamples), [PrioritizeRetransmit](#cycloneddsdomaininternalprioritizeretransmit), [RediscoveryBlacklistDuration](#cycloneddsdomaininternalrediscoveryblacklistduration), [RetransmitMerging](#cycloneddsdomaininternalretransmitmerging), [RetransmitMergingPeriod](#cycloneddsdomaininternalretransmitmergingperiod), [RetryOnRejectBestEffort](#cycloneddsdomaininternalretryonrejectbesteffort), [SPDPResponseMaxDelay](#cycloneddsdomaininternalspdpresponsemaxdelay), [SecondaryReorderMaxSamples](#cycloneddsdomaininternalsecondaryreordermaxsamples), [SocketReceiveBufferSize](#cycloneddsdomaininternalsocketreceivebuffersize), [SocketSendBufferSize](#cycloneddsdomaininternalsocketsendbuffersize), [SquashParticipants](#cycloneddsdomaininternalsquashparticipants), [SynchronousDeliveryLatencyBound](#cycloneddsdomaininternalsynchronousdeliverylatencybound), [SynchronousDeliveryPriorityThreshold](#cycloneddsdomaininternalsynchronousdeliveryprioritythreshold), [Test](#cycloneddsdomaininternaltest), [UnicastResponseToSPDPMessages](#cycloneddsdomaininternalunicastresponsetospdpmessages), [UseMulticastIfMreqn](#cycloneddsdomaininternalusemulticastifmreqn), [Watermarks](#cycloneddsdomaininternalwatermarks), [WriterLingerDuration](#cycloneddsdomaininternalwriterlingerduration)

The Internal elements deal with a variety of settings that are evolving and that are not necessarily fully supported. For the majority of the Internal settings the functionality is supported, but the right to change the way the options control the functionality is reserved. This includes renaming or moving options.

Expand Down Expand Up @@ -680,6 +680,14 @@ In addition, there is the keyword all that enables all checks.
The default value is: `<empty>`


#### //CycloneDDS/Domain/Internal/ExtendedPacketInfo
Boolean

Whether to enable the IP\_PKTINFO on UDP sockets to get hold of the packet destination address and interface on which it was received. This allows for better filtering on discovery packets, but comes at a small performance penalty.

The default value is: `true`


#### //CycloneDDS/Domain/Internal/GenerateKeyhash
Boolean

Expand Down Expand Up @@ -1881,9 +1889,9 @@ While none prevents any message from being written to a DDSI2 log file.
The categorisation of tracing output is incomplete and hence most of the verbosity levels and categories are not of much use in the current release. This is an ongoing process and here we describe the target situation rather than the current situation. Currently, the most useful verbosity levels are config, fine and finest.

The default value is: `none`
<!--- generated from ddsi_config.h[a0a5954a97ea0cf110e0ee1b38507b762abecbab] -->
<!--- generated from ddsi_config.h[9f834d377bdea61bea6507feed2fc4a8924dc02e] -->
<!--- generated from ddsi__cfgunits.h[bd22f0c0ed210501d0ecd3b07c992eca549ef5aa] -->
<!--- generated from ddsi__cfgelems.h[114a2466af9993b70e96466a47fdbf8a125f1ff9] -->
<!--- generated from ddsi__cfgelems.h[f10059d775cf2e4961a2e9520bb1a4da6a124778] -->
<!--- generated from ddsi_config.c[0a59324bd889637ea7d04765da9b76bbe74997c1] -->
<!--- generated from _confgen.h[e32eabfc35e9f3a7dcb63b19ed148c0d17c6e5fc] -->
<!--- generated from _confgen.c[237308acd53897a34e8c643e16e05a61d73ffd65] -->
Expand Down
10 changes: 8 additions & 2 deletions etc/cyclonedds.rnc
Expand Up @@ -483,6 +483,12 @@ CycloneDDS configuration""" ] ]
xsd:token { pattern = "((whc|rhc|xevent|all)(,(whc|rhc|xevent|all))*)|" }
}?
& [ a:documentation [ xml:lang="en" """
<p>Whether to enable the IP_PKTINFO on UDP sockets to get hold of the packet destination address and interface on which it was received. This allows for better filtering on discovery packets, but comes at a small performance penalty.</p>
<p>The default value is: <code>true</code></p>""" ] ]
element ExtendedPacketInfo {
xsd:boolean
}?
& [ a:documentation [ xml:lang="en" """
<p>When true, include keyhashes in outgoing data for topics with keys.</p>
<p>The default value is: <code>false</code></p>""" ] ]
element GenerateKeyhash {
Expand Down Expand Up @@ -1304,9 +1310,9 @@ MIIEpAIBAAKCAQEA3HIh...AOBaaqSV37XBUJg==<br>
duration_inf = xsd:token { pattern = "inf|0|(\d+(\.\d*)?([Ee][\-+]?\d+)?|\.\d+([Ee][\-+]?\d+)?) *([num]?s|min|hr|day)" }
memsize = xsd:token { pattern = "0|(\d+(\.\d*)?([Ee][\-+]?\d+)?|\.\d+([Ee][\-+]?\d+)?) *([kMG]i?)?B" }
}
# generated from ddsi_config.h[a0a5954a97ea0cf110e0ee1b38507b762abecbab]
# generated from ddsi_config.h[9f834d377bdea61bea6507feed2fc4a8924dc02e]
# generated from ddsi__cfgunits.h[bd22f0c0ed210501d0ecd3b07c992eca549ef5aa]
# generated from ddsi__cfgelems.h[114a2466af9993b70e96466a47fdbf8a125f1ff9]
# generated from ddsi__cfgelems.h[f10059d775cf2e4961a2e9520bb1a4da6a124778]
# generated from ddsi_config.c[0a59324bd889637ea7d04765da9b76bbe74997c1]
# generated from _confgen.h[e32eabfc35e9f3a7dcb63b19ed148c0d17c6e5fc]
# generated from _confgen.c[237308acd53897a34e8c643e16e05a61d73ffd65]
Expand Down
12 changes: 10 additions & 2 deletions etc/cyclonedds.xsd
Expand Up @@ -623,6 +623,7 @@ CycloneDDS configuration</xs:documentation>
<xs:element minOccurs="0" ref="config:DefragUnreliableMaxSamples"/>
<xs:element minOccurs="0" ref="config:DeliveryQueueMaxSamples"/>
<xs:element minOccurs="0" ref="config:EnableExpensiveChecks"/>
<xs:element minOccurs="0" ref="config:ExtendedPacketInfo"/>
<xs:element minOccurs="0" ref="config:GenerateKeyhash"/>
<xs:element minOccurs="0" ref="config:HeartbeatInterval"/>
<xs:element minOccurs="0" ref="config:LateAckMode"/>
Expand Down Expand Up @@ -779,6 +780,13 @@ CycloneDDS configuration</xs:documentation>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="ExtendedPacketInfo" type="xs:boolean">
<xs:annotation>
<xs:documentation>
&lt;p&gt;Whether to enable the IP_PKTINFO on UDP sockets to get hold of the packet destination address and interface on which it was received. This allows for better filtering on discovery packets, but comes at a small performance penalty.&lt;/p&gt;
&lt;p&gt;The default value is: &lt;code&gt;true&lt;/code&gt;&lt;/p&gt;</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="GenerateKeyhash" type="xs:boolean">
<xs:annotation>
<xs:documentation>
Expand Down Expand Up @@ -1962,9 +1970,9 @@ MIIEpAIBAAKCAQEA3HIh...AOBaaqSV37XBUJg==&lt;br&gt;
</xs:restriction>
</xs:simpleType>
</xs:schema>
<!--- generated from ddsi_config.h[a0a5954a97ea0cf110e0ee1b38507b762abecbab] -->
<!--- generated from ddsi_config.h[9f834d377bdea61bea6507feed2fc4a8924dc02e] -->
<!--- generated from ddsi__cfgunits.h[bd22f0c0ed210501d0ecd3b07c992eca549ef5aa] -->
<!--- generated from ddsi__cfgelems.h[114a2466af9993b70e96466a47fdbf8a125f1ff9] -->
<!--- generated from ddsi__cfgelems.h[f10059d775cf2e4961a2e9520bb1a4da6a124778] -->
<!--- generated from ddsi_config.c[0a59324bd889637ea7d04765da9b76bbe74997c1] -->
<!--- generated from _confgen.h[e32eabfc35e9f3a7dcb63b19ed148c0d17c6e5fc] -->
<!--- generated from _confgen.c[237308acd53897a34e8c643e16e05a61d73ffd65] -->
Expand Down

0 comments on commit 938de62

Please sign in to comment.