aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/igmp
AgeCommit message (Expand)AuthorFilesLines
2021-12-03api: refactor to use REPLY_MSG_ID_BASE #defineKlement Sekera2-8/+8
2021-10-21fib: respect mfib entry flags on create with pathsPaul Atkins2-11/+13
2021-05-13tests: move test source to vpp/testDave Wallace2-912/+0
2021-05-01vlib: refactor trajectory trace debug featureBenoît Ganne1-1/+0
2021-02-11tests: tag the tests that do not work with multi-worker configurationAndrew Yourtchenko1-0/+2
2020-12-14misc: move to new pool_foreach macrosDamjan Marion2-9/+9
2020-12-08fib: Source Address SelectionNeale Ranns1-2/+2
2020-05-06docs: clean up make docs jobPaul Vinciguerra5-13/+10
2020-04-16igmp: fix igmp proxy group mergeBenoît Ganne6-24/+25
2020-03-17fib: Always install all routers mcast addressesNeale Ranns1-3/+3
2020-02-18misc: fix coverity warningsDave Barach1-1/+1
2020-01-10docs: Edit FEATURE.yaml files so they can be publishedJohn DeNisco1-1/+1
2020-01-03igmp: Add feature.yamlNeale Ranns1-0/+9
2019-12-14tests: changes for scapy 2.4.3 migrationsnaramre1-1/+2
2019-12-06igmp: use explicit types in apiOle Troan1-10/+11
2019-11-08tests: python3 use byte strings in raw()Ole Troan1-1/+1
2019-11-05misc: Fix python scripts shebang lineRenato Botelho do Couto1-1/+1
2019-09-27igmp: remove api boilerplateOle Troan4-145/+6
2019-09-16api: autogenerate api trace print/endianOle Troan1-0/+4
2019-08-22tests: move plugin tests to src/plugins/*/testDave Wallace2-0/+909
2019-08-20vppapigen: remove support for legacy typedefsPaul Vinciguerra1-1/+1
2019-06-30igmp: accept packets that have more on the wire data than IGMP reports.Neale Ranns1-13/+19
2019-06-28igmp: Trace more data form input packetsNeale Ranns2-7/+16
2019-06-18fib: fib api updatesNeale Ranns2-22/+19
2019-05-16init / exit function orderingDave Barach3-22/+21
2019-05-03plugins: clean up plugin descriptionsDave Wallace1-1/+1
2019-04-23API: Python and Unix domain socket improvementOle Troan2-7/+3
2019-04-10API: Fix shared memory only action handlers.Ole Troan1-21/+21
2019-03-14IGMP: typo and doc fix (no behaviour change)Neale Ranns2-7/+7
2019-01-20buffers: don't init metadata, as it is already initializedDamjan Marion1-3/+0
2018-12-13make build failure.Paul Vinciguerra1-2/+2
2018-12-06API: Change ip4_address and ip6_address to use type alias.Ole Troan1-2/+2
2018-11-14Remove c-11 memcpy checks from perf-critical codeDave Barach2-8/+8
2018-11-13IGMP: improve CLI debug outputNeale Ranns9-42/+163
2018-11-06IGMP: Improved handling of (*,G) join and leaveNeale Ranns1-20/+74
2018-10-23c11 safe string handling supportDave Barach6-12/+12
2018-10-16IGMP: proxy deviceJakub Grajciar15-12/+749
2018-10-01IGMP: handle (*,G) report with no source addressesNeale Ranns1-8/+14
2018-09-24Trivial: Clean up some typos.Paul Vinciguerra12-17/+17
2018-08-27IGMP: enable command on cliNeale Ranns4-2/+84
2018-08-27cmake: Fix plugins .h includesMohsin Kazmi1-0/+4
2018-08-25cmake: improve add_vpp_plugin macroDamjan Marion1-2/+5
2018-08-17CMake as an alternative to autotools (experimental)Damjan Marion1-0/+29
2018-07-12IGMP: validate the packets length in the DPNeale Ranns3-25/+55
2018-07-10IGMP: coverity found defectsNeale Ranns3-4/+10
2018-07-09IGMP improvementsNeale Ranns27-1734/+3760
2018-06-29igmp: bugfix and minor improvementsJakub Grajciar5-76/+60
2018-06-10IGMP: use simple u32 bit hash keyNeale Ranns3-18/+15
2018-06-08Add reaper functions to want events APIs (VPP-1304)Neale Ranns2-32/+43
2018-05-23VPP-1283: IPv4 PMTU missing MTU value in ICMP4 message.Ole Troan1-1/+1
ate machine Default state of BFD session when created is Down, per RFC 5880. State changes to Init, Up or Down based on events like received state from peer and timeouts. The session state can be set AdminDown using a binary API, which prevents it from going to any other state, until this limitation is removed. This state is advertised to peers in slow periodic control frames. For each session, the following timeouts are maintained: 1. tx timeout - used for sending out control frames 2. rx timeout - used for detecting session timeout 3. echo tx timeout - used for sending out echo frames 3. echo rx timeout - used for detecting session timeout based on echo These timeouts are maintained in cpu clocks and recalculated when appropriate (e.g. rx timeout is bumped when a packet is received, keeping the session alive). Only the earliest timeout is inserted into the timer wheel at a time and timer wheel events are never deleted, rather spurious events are ignored. This allows efficient operation, like not inserting events into timing wheel for each packet received or ignoring left-over events in case a bfd session gets removed and a new one is recreated with the same session index. #### Authentication keys management Authentication keys are managed internally in a pool, with each key tracking it's use count. The removal/modification is only allowed if the key is not in use. ### UDP module UDP module is responsible for: 1. public APIs/CLIs to configure BFD over UDP. 2. support code called by main module to encapsulate/decapsulate BFD packets This module implements two graph nodes - for consuming ipv4 and ipv6 packets target at BFD ports 3874 and 3875. #### Packet receipt BFD packet receipt receipt starts in the bfd udp graph nodes. Since the code needs to verify IP/UDP header data, it relies on ip4-local (and ip6-local) nodes to store pointers to the appropriate headers. First, your discriminator is extracted from BFD packet and used to lookup the existing session. In case it's zero, the pair of IP addresses and sw_if_index is used to lookup session. Then, main module is called to verify the authentication, if present. Afterwards a check is made if the IP/UDP headers are correct. If yes, then an RPC call is made to the main thread to consume the packet and take action upon it. #### Packet transmission When process node decides that there is a need to transmit the packet, it creates a buffer, fills the BFD frame data in and calls the UDP module to add the transport layer. This is a simple operation for the control frames consisting of just adding UDP/IP headers based on session data. For echo frames, an additional step, looking at the echo-source interface and picking and address is performed and if this fails, then the packet cannot be transmitted and an error is returned to main thread.