SAP RFC

The following subsections show a graphical representation of the main protocol packets and how to generate them.

First we need to perform some setup to import the packet classes:

[1]:
from pysap.SAPRFC import *
from IPython.display import display

SAP RFC External packets

[2]:
for version in [2, 3]:
    for req_type in rfc_req_type_values:
        p = SAPRFC(version=version, req_type=req_type)
        print("Packet type: {} Version: {}".format(rfc_req_type_values[req_type], version))
        display(p.canvas_dump())
Packet type: GW_UNDEF_TYPE Version: 2
../_images/protocols_SAPRFC_4_1.svg
Packet type: CHECK_GATEWAY Version: 2
../_images/protocols_SAPRFC_4_3.svg
Packet type: GW_CONNECT_GWWP Version: 2
../_images/protocols_SAPRFC_4_5.svg
Packet type: GW_NORMAL_CLIENT Version: 2
../_images/protocols_SAPRFC_4_7.svg
Packet type: GW_REMOTE_GATEWAY Version: 2
../_images/protocols_SAPRFC_4_9.svg
Packet type: STOP_GATEWAY Version: 2
../_images/protocols_SAPRFC_4_11.svg
Packet type: GW_LOCAL_R3 Version: 2
../_images/protocols_SAPRFC_4_13.svg
Packet type: GW_SEND_INTERNAL_ERROR Version: 2
../_images/protocols_SAPRFC_4_15.svg
Packet type: GW_SEND_INFO Version: 2
../_images/protocols_SAPRFC_4_17.svg
Packet type: GW_SEND_CMD Version: 2
../_images/protocols_SAPRFC_4_19.svg
Packet type: GW_WORKPROCESS_DIED Version: 2
../_images/protocols_SAPRFC_4_21.svg
Packet type: GW_REGISTER_TP Version: 2
../_images/protocols_SAPRFC_4_23.svg
Packet type: GW_UNREGISTER_TP Version: 2
../_images/protocols_SAPRFC_4_25.svg
Packet type: GW_CONNECT_DISP Version: 2
../_images/protocols_SAPRFC_4_27.svg
Packet type: GW_GET_NO_REGISTER_TP Version: 2
../_images/protocols_SAPRFC_4_29.svg
Packet type: GW_SAP_WP_CLIENT Version: 2
../_images/protocols_SAPRFC_4_31.svg
Packet type: GW_CANCEL_REGISTER_TP Version: 2
../_images/protocols_SAPRFC_4_33.svg
Packet type: GW_FROM_REMOTE_GATEWAY Version: 2
../_images/protocols_SAPRFC_4_35.svg
Packet type: GW_CONTAINER_RECEIVED Version: 2
../_images/protocols_SAPRFC_4_37.svg
Packet type: GW_UNDEF_TYPE Version: 3
../_images/protocols_SAPRFC_4_39.svg
Packet type: CHECK_GATEWAY Version: 3
../_images/protocols_SAPRFC_4_41.svg
Packet type: GW_CONNECT_GWWP Version: 3
../_images/protocols_SAPRFC_4_43.svg
Packet type: GW_NORMAL_CLIENT Version: 3
../_images/protocols_SAPRFC_4_45.svg
Packet type: GW_REMOTE_GATEWAY Version: 3
../_images/protocols_SAPRFC_4_47.svg
Packet type: STOP_GATEWAY Version: 3
../_images/protocols_SAPRFC_4_49.svg
Packet type: GW_LOCAL_R3 Version: 3
../_images/protocols_SAPRFC_4_51.svg
Packet type: GW_SEND_INTERNAL_ERROR Version: 3
../_images/protocols_SAPRFC_4_53.svg
Packet type: GW_SEND_INFO Version: 3
../_images/protocols_SAPRFC_4_55.svg
Packet type: GW_SEND_CMD Version: 3
../_images/protocols_SAPRFC_4_57.svg
Packet type: GW_WORKPROCESS_DIED Version: 3
../_images/protocols_SAPRFC_4_59.svg
Packet type: GW_REGISTER_TP Version: 3
../_images/protocols_SAPRFC_4_61.svg
Packet type: GW_UNREGISTER_TP Version: 3
../_images/protocols_SAPRFC_4_63.svg
Packet type: GW_CONNECT_DISP Version: 3
../_images/protocols_SAPRFC_4_65.svg
Packet type: GW_GET_NO_REGISTER_TP Version: 3
../_images/protocols_SAPRFC_4_67.svg
Packet type: GW_SAP_WP_CLIENT Version: 3
../_images/protocols_SAPRFC_4_69.svg
Packet type: GW_CANCEL_REGISTER_TP Version: 3
../_images/protocols_SAPRFC_4_71.svg
Packet type: GW_FROM_REMOTE_GATEWAY Version: 3
../_images/protocols_SAPRFC_4_73.svg
Packet type: GW_CONTAINER_RECEIVED Version: 3
../_images/protocols_SAPRFC_4_75.svg

SAP RFC Gateway Monitor packets

[3]:
for command in rfc_monitor_cmd_values:
    p = SAPRFC(req_type=9, cmd=command)
    print(rfc_monitor_cmd_values[command])
    display(p.canvas_dump())
NOOP
../_images/protocols_SAPRFC_6_1.svg
DELETE_CONN
../_images/protocols_SAPRFC_6_3.svg
CANCEL_CONN
../_images/protocols_SAPRFC_6_5.svg
RST_SINGLE_ERR_CNT
../_images/protocols_SAPRFC_6_7.svg
RST_ALL_ERR_CNT
../_images/protocols_SAPRFC_6_9.svg
INCREASE_TRACE
../_images/protocols_SAPRFC_6_11.svg
DECREASE_TRACE
../_images/protocols_SAPRFC_6_13.svg
READ_SEC_INFO
../_images/protocols_SAPRFC_6_15.svg
REFRESH_SEC_INFO
../_images/protocols_SAPRFC_6_17.svg
READ_GWSYS_TBL
../_images/protocols_SAPRFC_6_19.svg
READ_CONN_TBL
../_images/protocols_SAPRFC_6_21.svg
READ_PROC_TBL
../_images/protocols_SAPRFC_6_23.svg
READ_CONN_ATTR
../_images/protocols_SAPRFC_6_25.svg
READ_MEMORY
../_images/protocols_SAPRFC_6_27.svg
READ_REQ_BLK
../_images/protocols_SAPRFC_6_29.svg
ACT_STATISTIC
../_images/protocols_SAPRFC_6_31.svg
DEACT_STATISTIC
../_images/protocols_SAPRFC_6_33.svg
READ_STATISTIC
../_images/protocols_SAPRFC_6_35.svg
RESET_STATISTIC
../_images/protocols_SAPRFC_6_37.svg
READ_PARAMETER
../_images/protocols_SAPRFC_6_39.svg
DUMP_NIBUFFER
../_images/protocols_SAPRFC_6_41.svg
RESET_NIBUFFER
../_images/protocols_SAPRFC_6_43.svg
ACT_EXTPGM_TRACE
../_images/protocols_SAPRFC_6_45.svg
DEACT_EXTPGM_TRACE
../_images/protocols_SAPRFC_6_47.svg
ACT_CONN_TRACE
../_images/protocols_SAPRFC_6_49.svg
DEACT_CONN_TRACE
../_images/protocols_SAPRFC_6_51.svg
RESET_TRACE
../_images/protocols_SAPRFC_6_53.svg
SUICIDE
../_images/protocols_SAPRFC_6_55.svg
READ_SEC_INFO2
../_images/protocols_SAPRFC_6_57.svg
CANCEL_REG_TP
../_images/protocols_SAPRFC_6_59.svg
DUMP
../_images/protocols_SAPRFC_6_61.svg
READ_GWSYS_TBL2
../_images/protocols_SAPRFC_6_63.svg
CHANGE_PARAMETER
../_images/protocols_SAPRFC_6_65.svg
GET_CONN_PARTNER
../_images/protocols_SAPRFC_6_67.svg
DELETE_CLIENT
../_images/protocols_SAPRFC_6_69.svg
DELETE_REMGW
../_images/protocols_SAPRFC_6_71.svg
DISCONNECT
../_images/protocols_SAPRFC_6_73.svg
ENABLE_RESTART
../_images/protocols_SAPRFC_6_75.svg
DISABLE_RESTART
../_images/protocols_SAPRFC_6_77.svg
NI_TRACE
../_images/protocols_SAPRFC_6_79.svg
CLI_INFO
../_images/protocols_SAPRFC_6_81.svg
GW_INFO
../_images/protocols_SAPRFC_6_83.svg
CONVID_INFO
../_images/protocols_SAPRFC_6_85.svg
GET_NO_REG_TP
../_images/protocols_SAPRFC_6_87.svg
CV_INFO
../_images/protocols_SAPRFC_6_89.svg
SO_KEEPALIVE
../_images/protocols_SAPRFC_6_91.svg
READ_CONN_TBL2
../_images/protocols_SAPRFC_6_93.svg
READ_GWSYS_TBL3
../_images/protocols_SAPRFC_6_95.svg
RELOAD_ACL
../_images/protocols_SAPRFC_6_97.svg

RFC Extend Info packet

[4]:
p = SAPRFCEXTEND()
display(p.canvas_dump())
../_images/protocols_SAPRFC_8_0.svg

RFC DT structure

[5]:
p = SAPRFCDTStruct()
display(p.canvas_dump())
../_images/protocols_SAPRFC_10_0.svg

CPIC Suffix structure

[6]:
p = SAPCPICSUFFIX()
display(p.canvas_dump())
../_images/protocols_SAPRFC_12_0.svg
[7]:
p.suff_unk9 = "\x00\x01"
display(p.canvas_dump())
../_images/protocols_SAPRFC_13_0.svg

CPIC PARAM structures

[8]:
for cls in [SAPCPICPARAM, SAPCPICPARAM2]:
    p = cls()
    p.ip = p.mask = "0.0.0.0"
    display(p.canvas_dump())
../_images/protocols_SAPRFC_15_0.svg
../_images/protocols_SAPRFC_15_1.svg

SAP RFC TH structure

[9]:
p = SAPRFCTHStruct()
display(p.canvas_dump())
../_images/protocols_SAPRFC_17_0.svg

SAP RFC XPG structure

[10]:
p = SAPRFXPG()
display(p.canvas_dump())
../_images/protocols_SAPRFC_19_0.svg

SAP Started RFCPING packets

[11]:
p = SAPRFCPING()
display(p.canvas_dump())
../_images/protocols_SAPRFC_21_0.svg

SAP CPIC Packet

[12]:
for cls in [SAPCPIC, SAPCPIC2]:
    p = cls()
    display(p.canvas_dump())
../_images/protocols_SAPRFC_23_0.svg
../_images/protocols_SAPRFC_23_1.svg

SAP RFC XPG End structure

[13]:
p = SAPRFXPG_END()
display(p.canvas_dump())
../_images/protocols_SAPRFC_25_0.svg

SAP CPIC CUT Packet

[14]:
p = SAPCPIC_CUT()
display(p.canvas_dump())
../_images/protocols_SAPRFC_27_0.svg