# SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) name: mptcp_pm protocol: genetlink-legacy doc: Multipath TCP. c-family-name: mptcp-pm-name c-version-name: mptcp-pm-ver max-by-define: true kernel-policy: per-op cmd-cnt-name: --mptcp-pm-cmd-after-last definitions: - type: enum name: event-type enum-name: mptcp-event-type name-prefix: mptcp-event- entries: - name: unspec doc: unused event - name: created doc: token, family, saddr4 | saddr6, daddr4 | daddr6, sport, dport A new MPTCP connection has been created. It is the good time to allocate memory and send ADD_ADDR if needed. Depending on the traffic-patterns it can take a long time until the MPTCP_EVENT_ESTABLISHED is sent. - name: established doc: token, family, saddr4 | saddr6, daddr4 | daddr6, sport, dport A MPTCP connection is established (can start new subflows). - name: closed doc: token A MPTCP connection has stopped. - name: announced value: 6 doc: token, rem_id, family, daddr4 | daddr6 [, dport] A new address has been announced by the peer. - name: removed doc: token, rem_id An address has been lost by the peer. - name: sub-established value: 10 doc: token, family, loc_id, rem_id, saddr4 | saddr6, daddr4 | daddr6, sport, dport, backup, if_idx [, error] A new subflow has been established. 'error' should not be set. - name: sub-closed doc: token, family, loc_id, rem_id, saddr4 | saddr6, daddr4 | daddr6, sport, dport, backup, if_idx [, error] A subflow has been closed. An error (copy of sk_err) could be set if an error has been detected for this subflow. - name: sub-priority value: 13 doc: token, family, loc_id, rem_id, saddr4 | saddr6, daddr4 | daddr6, sport, dport, backup, if_idx [, error] The priority of a subflow has changed. 'error' should not be set. - name: listener-created value: 15 doc: family, sport, saddr4 | saddr6 A new PM listener is created. - name: listener-closed doc: family, sport, saddr4 | saddr6 A PM listener is closed. attribute-sets: - name: address name-prefix: mptcp-pm-addr-attr- attributes: - name: unspec type: unused value: 0 - name: family type: u16 - name: id type: u8 - name: addr4 type: u32 byte-order: big-endian - name: addr6 type: binary checks: exact-len: 16 - name: port type: u16 - name: flags type: u32 - name: if-idx type: s32 - name: subflow-attribute name-prefix: mptcp-subflow-attr- attributes: - name: unspec type: unused value: 0 - name: token-rem type: u32 - name: token-loc type: u32 - name: relwrite-seq type: u32 - name: map-seq type: u64 - name: map-sfseq type: u32 - name: ssn-offset type: u32 - name: map-datalen type: u16 - name: flags type: u32 - name: id-rem type: u8 - name: id-loc type: u8 - name: pad type: pad - name: endpoint name-prefix: mptcp-pm-endpoint- attributes: - name: addr type: nest nested-attributes: address - name: attr name-prefix: mptcp-pm-attr- attr-cnt-name: --mptcp-attr-after-last attributes: - name: unspec type: unused value: 0 - name: addr type: nest nested-attributes: address - name: rcv-add-addrs type: u32 - name: subflows type: u32 - name: token type: u32 - name: loc-id type: u8 - name: addr-remote type: nest nested-attributes: address - name: event-attr enum-name: mptcp-event-attr name-prefix: mptcp-attr- attributes: - name: unspec type: unused value: 0 - name: token type: u32 - name: family type: u16 - name: loc-id type: u8 - name: rem-id type: u8 - name: saddr4 type: u32 byte-order: big-endian - name: saddr6 type: binary checks: min-len: 16 - name: daddr4 type: u32 byte-order: big-endian - name: daddr6 type: binary checks: min-len: 16 - name: sport type: u16 byte-order: big-endian - name: dport type: u16 byte-order: big-endian - name: backup type: u8 - name: error type: u8 - name: flags type: u16 - name: timeout type: u32 - name: if_idx type: u32 - name: reset-reason type: u32 - name: reset-flags type: u32 - name: server-side type: u8 operations: list: - name: unspec doc: unused value: 0 - name: add-addr doc: Add endpoint attribute-set: endpoint dont-validate: [ strict ] flags: [ uns-admin-perm ] do: &add-addr-attrs request: attributes: - addr - name: del-addr doc: Delete endpoint attribute-set: endpoint dont-validate: [ strict ] flags: [ uns-admin-perm ] do: *add-addr-attrs - name: get-addr doc: Get endpoint information attribute-set: attr dont-validate: [ strict ] flags: [ uns-admin-perm ] do: &get-addr-attrs request: attributes: - addr - token reply: attributes: - addr dump: reply: attributes: - addr - name: flush-addrs doc: flush addresses attribute-set: endpoint dont-validate: [ strict ] flags: [ uns-admin-perm ] do: *add-addr-attrs - name: set-limits doc: Set protocol limits attribute-set: attr dont-validate: [ strict ] flags: [ uns-admin-perm ] do: &mptcp-limits request: attributes: - rcv-add-addrs - subflows - name: get-limits doc: Get protocol limits attribute-set: attr dont-validate: [ strict ] do: &mptcp-get-limits request: attributes: - rcv-add-addrs - subflows reply: attributes: - rcv-add-addrs - subflows - name: set-flags doc: Change endpoint flags attribute-set: attr dont-validate: [ strict ] flags: [ uns-admin-perm ] do: &mptcp-set-flags request: attributes: - addr - token - addr-remote - name: announce doc: announce new sf attribute-set: attr dont-validate: [ strict ] flags: [ uns-admin-perm ] do: &announce-add request: attributes: - addr - token - name: remove doc: announce removal attribute-set: attr dont-validate: [ strict ] flags: [ uns-admin-perm ] do: request: attributes: - token - loc-id - name: subflow-create doc: todo attribute-set: attr dont-validate: [ strict ] flags: [ uns-admin-perm ] do: &sf-create request: attributes: - addr - token - addr-remote - name: subflow-destroy doc: todo attribute-set: attr dont-validate: [ strict ] flags: [ uns-admin-perm ] do: *sf-create