a10_fw_gtp
Synopsis
Configure GTP
Parameters
Parameters |
Choices/Defaults |
Comment |
|
---|---|---|---|
state str/required |
[‘noop’, ‘present’, ‘absent’] |
State of the object to be created. |
|
ansible_host str/required |
Host for AXAPI authentication |
||
ansible_username str/required |
Username for AXAPI authentication |
||
ansible_password str/required |
Password for AXAPI authentication |
||
ansible_port int/required |
Port for AXAPI authentication |
||
a10_device_context_id int |
[‘1-8’] |
Device ID for aVCS configuration |
|
a10_partition str |
Destination/target partition for object/command |
||
gtp_value str |
‘enable’= Enable GTP Inspection; |
||
network_element_list_v4 str |
Class List (Class List Name) |
||
ne_v4_log_periodicity int |
Periodic Logging Frequency(In Minutes) |
||
network_element_list_v6 str |
Class List (Class List Name) |
||
ne_v6_log_periodicity int |
Periodic Logging Frequency(In Minutes) |
||
apn_prefix_list str |
Class List (Class List Name) |
||
apn_log_periodicity int |
Periodic Logging Frequency(In Minutes) |
||
echo_timeout int |
echo message timeout (minutes) (echo-timeout (default 120)) |
||
path_mgmt_logging str |
‘enable-log’= Enable Log for Path Management; |
||
insertion_mode str |
‘monitor’= Enable inline view-only mode; ‘skip-state-checks’= Enable skip stateful checks mode; |
||
uuid str |
uuid of the object |
||
sampling_enable list |
Field sampling_enable |
||
counters1 str |
‘all’= all; ‘out-of-session-memory’= Out of Tunnel Memory; ‘no-fwd-route’= No Forward Route; ‘no-rev-route’= No Reverse Route; ‘gtp-smp-created’= GTP SMP Created; ‘gtp-smp-marked-deleted’= GTP SMP Marked Deleted; ‘gtp-smp-deleted’= GTP SMP Deleted; ‘smp-creation-failed’= GTP-U SMP Helper Session Creation Failed; ‘gtp-smp-path-created’= GTP SMP PATH Created; ‘gtp-smp-path-freed’= GTP SMP PATH MEM freed; ‘gtp-smp-path-allocated’= GTP SMP PATH MEM allocated; ‘gtp- smp-path-creation-failed’= GTP SMP PATH creation Failed; ‘gtp-smp-path-check- failed’= GTP SMP PATH check Failed; ‘gtp-smp-check-failed’= GTP SMP check Failed; ‘gtp-smp-session-count-check-failed’= GTP-U session count is not in range of 0-11 in GTP-C SMP; ‘gtp-c-ref-count-smp-exceeded’= GTP-C session count on C-smp exceeded 2; ‘gtp-u-smp-in-rml-with-sess’= GTP-U smp is marked RML with U-session; ‘gtp-u-pkt-fwd-conn-create’= GTP-U pkt fwded while creating conn with gtp toggling; ‘gtp-c-pkt-fwd-conn-create’= GTP-C pkt fwded while creating conn with gtp toggling; ‘gtp-echo-pkt-fwd-conn-create’= GTP-ECHO pkt fwded while creating conn with gtp toggling; ‘gtp-tunnel-rate-limit-entry-create- success’= GTP Tunnel Level Rate Limit Entry Create Success; ‘gtp-tunnel-rate- limit-entry-create-failure’= GTP Tunnel Level Rate Limit Entry Create Failure; ‘gtp-tunnel-rate-limit-entry-deleted’= GTP Tunnel Level Rate Limit Entry Deleted; ‘gtp-rate-limit-smp-created’= GTP Rate Limit SMP Created; ‘gtp-rate- limit-smp-freed’= GTP Rate Limit SMP Freed; ‘gtp-rate-limit-smp-create- failure’= GTP Rate Limit SMP Create Failure; ‘gtp-rate-limit-t3-ctr-create- failure’= GTP Rate Limit Dynamic Counters Create Failure; ‘gtp-rate-limit- entry-create-failure’= GTP Rate Limit Entry Create Failure; ‘gtp-echo-conn- created’= GTP Echo Request Conn Created; ‘gtp-echo-conn-deleted’= GTP Echo Request conn Deleted; ‘gtp-node-restart-echo’= GTP Node Restoration due to Recovery IE in Echo; ‘gtp-c-echo-path-failure’= GTP-C Path Failure due to Echo; ‘drop-vld-gtp-echo-out-of-state-’= GTP Echo Out of State Drop; ‘drop-vld-gtp- echo-ie-len-exceed-msg-len’= GTP Echo IE Length Exceeds Message Length; ‘gtp- create-session-request-retransmit’= GTP-C Retransmitted Create Session Request; ‘gtp-add-bearer-request-retransmit’= GTP-C Retransmitted Add Bearer Request; ‘gtp-delete-session-request-retransmit’= GTP-C Retransmitted Delete Session Request; ‘gtp-handover-request-retransmit’= GTP Handover Request Retransmit; ‘gtp-del-bearer-request-retransmit’= GTP-C Retransmitted Delete Bearer Request; ‘gtp-add-bearer-response-retransmit’= GTP-C Retransmitted Add Bearer Response; ‘gtp-create-session-request-retx-drop’= GTP-C Retransmitted Create Session Request dropped; ‘gtp-u-out-of-state-drop’= GTP-U Out of state Drop; ‘gtp-c- handover-request-out-of-state-drop’= GTP-C Handover Request Out of state Drop; ‘gtp-v1-c-nsapi-not-found-in-delete-req’= GTPv1-C NSAPI Not Found in GTP Request; ‘gtp-v2-c-bearer-not-found-in-delete-req’= GTPv2-C Bearer Not Found in GTP Request; ‘gtp-v2-c-bearer-not-found-in-delete-resp’= GTPv2-C Bearer Not Found in GTP Response; ‘gtp-multiple-handover-request’= GTP Multiple Handover Request; ‘gtp-rr-message-drop’= GTP Message Dropped in RR Mode; ‘gtp-rr-echo- message-dcmsg’= GTP Echo Message Sent to home CPU in RR Mode; ‘gtp-rr-c- message-dcmsg’= GTP-C Message Sent to home CPU in RR Mode; ‘drop-gtp-frag-or- jumbo-pkt’= GTP Fragmented or JUMBO packet Drop; ‘response-with-reject-cause- forwarded’= GTP-C Response with Reject Cause Forwarded; ‘gtp-c-message- forwarded-without-conn’= GTP-C Message Forwarded without Conn; ‘gtp-v0-c-ver- not-supp’= GTPv0-C Version not supported indication; ‘gtp-v1-c-ver-not-supp’= GTPv1-C Version not supported indication; ‘gtp-v2-c-ver-not-supp’= GTPv2-C Version not supported indication; ‘gtp-v1-extn-hdt-notif’= GTPV1 Supported Extension header notification; ‘gtp-u-error-ind’= GTP-U Error Indication; ‘gtp- c-handover-in-progress-with-conn’= GTP-C mesg matching conn with HO In Progress; ‘gtp-ho-in-progress-handover-request’= GTP-C ho mesg matching conn with HO In Progress; ‘gtp-correct-conn-ho-in-progress-handover-request’= GTP-C ho mesg matching correct conn(reuse teid) with HO In Progress; ‘gtp-wrong-conn- ho-in-progress-handover-request’= GTP-C ho mesg matching wrong conn(new teid) with HO In Progress; ‘gtp-ho-in-progress-handover-response’= GTP-C ho response matching a conn with HO In Progress; ‘gtp-ho-in-progress-c-mesg’= GTP-C other than ho mesg matching conn with HO In Progress; ‘gtp-unset-ho-flag-reuse-teid’= GTP-C SGW reuse teid with ho and unset ho flag; ‘gtp-refresh-c-conn-reuse- teid’= GTP-C SGW reuse teid with ho and refresh old conn; ‘gtp-rematch-smp- matching-conn’= GTP-C rematch smp with packet matching conn; ‘gtp-wrong-conn- handover-request’= GTP-C ho mesg matching wrong conn(new teid) with no HO flag; ‘gtp-refresh-conn-set-ho-flag-latest’= GTP-C SGW refresh old conn and set ho flag on latest smp; ‘gtp-c-process-pkt-drop’= GTP-C process pkt drop; ‘gtp-c- fwd-pkt-drop’= GTP-C fwd pkt drop; ‘gtp-c-rev-pkt-drop’= GTP-C rev pkt drop; ‘gtp-c-fwd-v1-other’= GTP-C fwd v1 other messages; ‘gtp-c-fwd-v2-other’= GTP-C fwd v2 other messages; ‘gtp-c-rev-v1-other’= GTP-C rev v1 other messages; ‘gtp- c-rev-v2-other’= GTP-C rev v2 other messages; ‘gtp-c-going-thru-fw-lookup’= GTP-C mesg going thru fw lookup can be resp or l5 mesg not matching smp; ‘gtp- c-conn-create-pkt-drop’= GTP-C conn creation drop; ‘gtp-c-pkt-fwd-conn-create- no-fteid’= GTP-C pkt fwded while creating conn when no FTEID; ‘gtp-v0-c-uplink- ingress-packets’= GTPv0-C Uplink Ingress Packets; ‘gtp-v0-c-uplink-egress- packets’= GTPv0-C Uplink Egress Packets; ‘gtp-v0-c-downlink-ingress-packets’= GTPv0-C Downlink Ingress Packets; ‘gtp-v0-c-downlink-egress-packets’= GTPv0-C Downlink Egress Packets; ‘gtp-v0-c-uplink-ingress-bytes’= GTPv0-C Uplink Ingress Bytes; ‘gtp-v0-c-uplink-egress-bytes’= GTPv0-C Uplink Egress Bytes; ‘gtp-v0-c-downlink-ingress-bytes’= GTPv0-C Downlink Ingress Bytes; ‘gtp-v0-c-downlink-egress-bytes’= GTPv0-C Downlink Egress Bytes; ‘gtp-v1-c-uplink-ingress-packets’= GTPv1-C Uplink Ingress Packets; ‘gtp-v1-c-uplink-egress-packets’= GTPv1-C Uplink Egress Packets; ‘gtp-v1-c-downlink-ingress-packets’= GTPv1-C Downlink Ingress Packets; ‘gtp-v1-c-downlink-egress-packets’= GTPv1-C Downlink Egress Packets; ‘gtp-v1-c-uplink-ingress-bytes’= GTPv1-C Uplink Ingress Bytes; ‘gtp-v1-c-uplink-egress-bytes’= GTPv1-C Uplink Egress Bytes; ‘gtp-v1-c-downlink-ingress-bytes’= GTPv1-C Downlink Ingress Bytes; ‘gtp-v1-c-downlink-egress-bytes’= GTPv1-C Downlink Egress Bytes; ‘gtp-v2-c-uplink-ingress-packets’= GTPv2-C Uplink Ingress Packets; ‘gtp-v2-c-uplink-egress-packets’= GTPv2-C Uplink Egress Packets; ‘gtp-v2-c-downlink-ingress-packets’= GTPv2-C Downlink Ingress Packets; ‘gtp-v2-c-downlink-egress-packets’= GTPv2-C Downlink Egress Packets; ‘gtp-v2-c-uplink-ingress-bytes’= GTPv2-C Uplink Ingress Bytes; ‘gtp-v2-c-uplink-egress-bytes’= GTPv2-C Uplink Egress Bytes; ‘gtp-v2-c-downlink-ingress-bytes’= GTPv2-C Downlink Ingress Bytes; ‘gtp-v2-c-downlink-egress-bytes’= GTPv2-C Downlink Egress Bytes; ‘gtp-u-uplink- ingress-packets’= GTP-U Uplink Ingress Packets; ‘gtp-u-uplink-egress-packets’= GTP-U Uplink Egress Packets; ‘gtp-u-downlink-ingress-packets’= GTP-U Downlink Ingress Packets; ‘gtp-u-downlink-egress-packets’= GTP-U Downlink Egress Packets; ‘gtp-u-uplink-ingress-bytes’= GTP-U Uplink Ingress Bytes; ‘gtp-u- uplink-egress-bytes’= GTP-U Uplink Egress Bytes; ‘gtp-u-downlink-ingress- bytes’= GTP-U Downlink Ingress Bytes; ‘gtp-u-downlink-egress-bytes’= GTP-U Downlink Egress Bytes; ‘gtp-v0-c-create-synced’= GTPv0-C Tunnel Create Synced; |
||
counters2 str |
‘gtp-v1-c-create-synced’= GTPv1-C Tunnel Create Synced; ‘gtp-v2-c-create- synced’= GTPv2-C Tunnel Create Synced; ‘gtp-v0-c-delete-synced’= GTPv0-C Tunnel Delete Synced; ‘gtp-v1-c-delete-synced’= GTPv1-C Tunnel Delete Synced; ‘gtp-v2-c-delete-synced’= GTPv2-C Tunnel Delete Synced; ‘gtp-v0-c-create-sync- rx’= GTPv0-C Tunnel Create Sync Received on Standby; ‘gtp-v1-c-create-sync-rx’= GTPv1-C Tunnel Create Sync Received on Standby; ‘gtp-v2-c-create-sync-rx’= GTPv2-C Tunnel Create Sync Received on Standby; ‘gtp-v0-c-delete-sync-rx’= GTPv0-C Tunnel Delete Sync Received on Standby; ‘gtp-v1-c-delete-sync-rx’= GTPv1-C Tunnel Delete Sync Received on Standby; ‘gtp-v2-c-delete-sync-rx’= GTPv2-C Tunnel Delete Sync Received on Standby; ‘gtp-handover-synced’= GTP Handover Synced; ‘gtp-handover-sync-rx’= GTP Handover Sync Received on Standby; ‘gtp-smp-add-bearer-synced’= GTP SMP Add Bearer Synced; ‘gtp-smp-del-bearer- synced’= GTP SMP Del Bearer Synced; ‘gtp-smp-additional-bearer-synced’= GTP SMP Additional Bearer Synced; ‘gtp-smp-add-bearer-sync-rx’= GTP SMP Add Bearer Sync Received on Standby; ‘gtp-smp-del-bearer-sync-rx’= GTP SMP Del Bearer Sync Received on Standby; ‘gtp-smp-additional-bearer-sync-rx’= GTP SMP Additional Bearer Sync Received on Standby; ‘gtp-add-bearer-sync-not-rx-on-standby’= GTP Add Bearer Sync Not Received on Standby; ‘gtp-add-bearer-sync-with-periodic- update-on-standby’= GTP Bearer Added on Standby with Periodic Sync; ‘gtp- delete-bearer-sync-with-periodic-update-on-standby’= GTP Bearer Deleted on Standy with Periodic Sync; ‘gtp-v0-c-echo-create-synced’= GTPv0-C Echo Create Synced; ‘gtp-v1-c-echo-create-synced’= GTPv1-C Echo Create Synced; ‘gtp-v2-c-echo-create-synced’= GTPv2-C Echo Create Synced; ‘gtp-v0-c-echo- create-sync-rx’= GTPv0-C-Echo Create Sync Received on Standby; ‘gtp-v1-c-echo- create-sync-rx’= GTPv1-C-Echo Create Sync Received on Standby; ‘gtp-v2-c-echo- create-sync-rx’= GTPv2-C-Echo Create Sync Received on Standby; ‘gtp-v0-c-echo- del-synced’= GTPv0-C Echo Delete Synced; ‘gtp-v1-c-echo-del-synced’= GTPv1-C Echo Delete Synced; ‘gtp-v2-c-echo-del-synced’= GTPv2-C Echo Delete Synced; ‘gtp-v0-c-echo-del-sync-rx’= GTPv0-C-Echo Delete Sync Received on Standby; ‘gtp-v1-c-echo-del-sync-rx’= GTPv1-C-Echo Delete Sync Received on Standby; ‘gtp-v2-c-echo-del-sync-rx’= GTPv2-C-Echo Delete Sync Received on Standby; ‘drop-gtp-conn-creation-standby’= GTP Conn creation on Standby Drop; ‘gtp-u- synced-before-control’= GTP-U Tunnel synced before corresponding GTP-C; ‘gtp- c-l5-synced-before-l3’= GTP-C L5 conn synced before corresponding L3 GTP-C conn; ‘gtp-smp-path-del-synced’= GTP SMP path delete Synced; ‘gtp-smp-path-del- sync-rx’= GTP SMP path delete Sync Received on Standby; ‘gtp-not-enabled-on- standby’= GTP Not Enabled on Standby; ‘gtp-ip-version-v4-v6’= GTP IP versions of V4&V6 in FTEID; ‘drop-gtp-ip-version-mismatch-fteid’= GTP IP version mismatch for req & response FTEIDs; ‘drop-gtp-ip-version-mismatch-ho-fteid’= GTP IP version mismatch in Handover SGW FTEID; ‘gtp-u-message-length-mismatch’= GTP-U Message Length Mismatch Across Layers; ‘gtp-path-message-length- mismatch’= GTP-Path Message Length Mismatch Across Layers; ‘drop-gtp-missing- cond-ie-bearer-ctx’= Missing conditional IE in bearer context Drop; ‘drop-gtp- bearer-not-found-in-resp’= GTP Bearer not found in response; ‘gtp-stateless- forward’= GTP Stateless Forward; ‘gtp-l3-conn-deleted’= GTP L3 conn deleted; ‘gtp-l5-conn-created’= GTP L5 conn created; ‘gtp-monitor-forward’= GTP messages forwarded via monitor mode; ‘gtp-u_inner-ip-not-present’= GTP-U inner IP not present; ‘gtp-ext_hdr-incorrect-length’= GTP Extension header incorrect length; |
||
apn_prefix dict |
Field apn_prefix |
||
uuid str |
uuid of the object |
||
network_element dict |
Field network_element |
||
uuid str |
uuid of the object |
||
stats dict |
Field stats |
||
out_of_session_memory str |
Out of Tunnel Memory |
||
no_fwd_route str |
No Forward Route |
||
no_rev_route str |
No Reverse Route |
||
gtp_smp_path_check_failed str |
GTP SMP PATH check Failed |
||
gtp_smp_check_failed str |
GTP SMP check Failed |
||
gtp_smp_session_count_check_failed str |
GTP-U session count is not in range of 0-11 in GTP-C SMP |
||
gtp_c_ref_count_smp_exceeded str |
GTP-C session count on C-smp exceeded 2 |
||
gtp_u_smp_in_rml_with_sess str |
GTP-U smp is marked RML with U-session |
||
gtp_tunnel_rate_limit_entry_create_failure str |
GTP Tunnel Level Rate Limit Entry Create Failure |
||
gtp_rate_limit_smp_create_failure str |
GTP Rate Limit SMP Create Failure |
||
gtp_rate_limit_t3_ctr_create_failure str |
GTP Rate Limit Dynamic Counters Create Failure |
||
gtp_rate_limit_entry_create_failure str |
GTP Rate Limit Entry Create Failure |
||
gtp_node_restart_echo str |
GTP Node Restoration due to Recovery IE in Echo |
||
gtp_c_echo_path_failure str |
GTP-C Path Failure due to Echo |
||
drop_vld_gtp_echo_out_of_state_ str |
GTP Echo Out of State Drop |
||
drop_vld_gtp_echo_ie_len_exceed_msg_len str |
GTP Echo IE Length Exceeds Message Length |
||
gtp_del_bearer_request_retransmit str |
GTP-C Retransmitted Delete Bearer Request |
||
gtp_add_bearer_response_retransmit str |
GTP-C Retransmitted Add Bearer Response |
||
gtp_u_out_of_state_drop str |
GTP-U Out of state Drop |
||
gtp_c_handover_request_out_of_state_drop str |
GTP-C Handover Request Out of state Drop |
||
gtp_v1_c_nsapi_not_found_in_delete_req str |
GTPv1-C NSAPI Not Found in GTP Request |
||
gtp_v2_c_bearer_not_found_in_delete_req str |
GTPv2-C Bearer Not Found in GTP Request |
||
gtp_v2_c_bearer_not_found_in_delete_resp str |
GTPv2-C Bearer Not Found in GTP Response |
||
gtp_rr_message_drop str |
GTP Message Dropped in RR Mode |
||
drop_gtp_frag_or_jumbo_pkt str |
GTP Fragmented or JUMBO packet Drop |
||
gtp_c_handover_in_progress_with_conn str |
GTP-C mesg matching conn with HO In Progress |
||
gtp_v0_c_uplink_ingress_packets str |
GTPv0-C Uplink Ingress Packets |
||
gtp_v0_c_uplink_egress_packets str |
GTPv0-C Uplink Egress Packets |
||
gtp_v0_c_downlink_ingress_packets str |
GTPv0-C Downlink Ingress Packets |
||
gtp_v0_c_downlink_egress_packets str |
GTPv0-C Downlink Egress Packets |
||
gtp_v0_c_uplink_ingress_bytes str |
GTPv0-C Uplink Ingress Bytes |
||
gtp_v0_c_uplink_egress_bytes str |
GTPv0-C Uplink Egress Bytes |
||
gtp_v0_c_downlink_ingress_bytes str |
GTPv0-C Downlink Ingress Bytes |
||
gtp_v0_c_downlink_egress_bytes str |
GTPv0-C Downlink Egress Bytes |
||
gtp_v1_c_uplink_ingress_packets str |
GTPv1-C Uplink Ingress Packets |
||
gtp_v1_c_uplink_egress_packets str |
GTPv1-C Uplink Egress Packets |
||
gtp_v1_c_downlink_ingress_packets str |
GTPv1-C Downlink Ingress Packets |
||
gtp_v1_c_downlink_egress_packets str |
GTPv1-C Downlink Egress Packets |
||
gtp_v1_c_uplink_ingress_bytes str |
GTPv1-C Uplink Ingress Bytes |
||
gtp_v1_c_uplink_egress_bytes str |
GTPv1-C Uplink Egress Bytes |
||
gtp_v1_c_downlink_ingress_bytes str |
GTPv1-C Downlink Ingress Bytes |
||
gtp_v1_c_downlink_egress_bytes str |
GTPv1-C Downlink Egress Bytes |
||
gtp_v2_c_uplink_ingress_packets str |
GTPv2-C Uplink Ingress Packets |
||
gtp_v2_c_uplink_egress_packets str |
GTPv2-C Uplink Egress Packets |
||
gtp_v2_c_downlink_ingress_packets str |
GTPv2-C Downlink Ingress Packets |
||
gtp_v2_c_downlink_egress_packets str |
GTPv2-C Downlink Egress Packets |
||
gtp_v2_c_uplink_ingress_bytes str |
GTPv2-C Uplink Ingress Bytes |
||
gtp_v2_c_uplink_egress_bytes str |
GTPv2-C Uplink Egress Bytes |
||
gtp_v2_c_downlink_ingress_bytes str |
GTPv2-C Downlink Ingress Bytes |
||
gtp_v2_c_downlink_egress_bytes str |
GTPv2-C Downlink Egress Bytes |
||
gtp_u_uplink_ingress_packets str |
GTP-U Uplink Ingress Packets |
||
gtp_u_uplink_egress_packets str |
GTP-U Uplink Egress Packets |
||
gtp_u_downlink_ingress_packets str |
GTP-U Downlink Ingress Packets |
||
gtp_u_downlink_egress_packets str |
GTP-U Downlink Egress Packets |
||
gtp_u_uplink_ingress_bytes str |
GTP-U Uplink Ingress Bytes |
||
gtp_u_uplink_egress_bytes str |
GTP-U Uplink Egress Bytes |
||
gtp_u_downlink_ingress_bytes str |
GTP-U Downlink Ingress Bytes |
||
gtp_u_downlink_egress_bytes str |
GTP-U Downlink Egress Bytes |
||
gtp_u_message_length_mismatch str |
GTP-U Message Length Mismatch Across Layers |
||
gtp_path_message_length_mismatch str |
GTP-Path Message Length Mismatch Across Layers |
||
drop_gtp_missing_cond_ie_bearer_ctx str |
Missing conditional IE in bearer context Drop |
||
drop_gtp_bearer_not_found_in_resp str |
GTP Bearer not found in response |
||
gtp_stateless_forward str |
GTP Stateless Forward |
||
gtp_monitor_forward str |
GTP messages forwarded via monitor mode |
||
apn_prefix dict |
Field apn_prefix |
||
network_element dict |
Field network_element |
Examples
Return Values
- modified_values (changed, dict, )
Values modified (or potential changes if using check_mode) as a result of task operation
- axapi_calls (always, list, )
Sequential list of AXAPI calls made by the task
- endpoint (, str, [‘/axapi/v3/slb/virtual_server’, ‘/axapi/v3/file/ssl-cert’])
The AXAPI endpoint being accessed.
- http_method (, str, [‘POST’, ‘GET’])
HTTP method being used by the primary task to interact with the AXAPI endpoint.
- request_body (, complex, )
Params used to query the AXAPI
- response_body (, complex, )
Response from the AXAPI
Status
This module is not guaranteed to have a backwards compatible interface. [preview]
This module is maintained by community.