From bdf90c59bc4c712cc3d7a384f835bcf1cc6b0e56 Mon Sep 17 00:00:00 2001 From: Duncan Laurie Date: Fri, 3 Sep 2004 18:58:59 +0000 Subject: [PATCH] add keepalive function for lan interface --- ipmitool/include/ipmitool/ipmi_intf.h | 1 + ipmitool/src/plugins/lan/lan.c | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/ipmitool/include/ipmitool/ipmi_intf.h b/ipmitool/include/ipmitool/ipmi_intf.h index 4fa21b7..37d79b7 100644 --- a/ipmitool/include/ipmitool/ipmi_intf.h +++ b/ipmitool/include/ipmitool/ipmi_intf.h @@ -156,6 +156,7 @@ struct ipmi_intf { int (*sendrsp)(struct ipmi_intf * intf, struct ipmi_rs * rsp); struct ipmi_rs *(*recv_sol)(struct ipmi_intf * intf); struct ipmi_rs *(*send_sol)(struct ipmi_intf * intf, struct ipmi_v2_payload * payload); + int (*keepalive)(struct ipmi_intf * intf); }; struct ipmi_intf * ipmi_intf_load(char * name); diff --git a/ipmitool/src/plugins/lan/lan.c b/ipmitool/src/plugins/lan/lan.c index 3d7c8f1..bb5d641 100644 --- a/ipmitool/src/plugins/lan/lan.c +++ b/ipmitool/src/plugins/lan/lan.c @@ -79,6 +79,7 @@ static int ipmi_lan_send_packet(struct ipmi_intf * intf, unsigned char * data, i static struct ipmi_rs * ipmi_lan_recv_packet(struct ipmi_intf * intf); static struct ipmi_rs * ipmi_lan_poll_recv(struct ipmi_intf * intf); static int ipmi_lan_setup(struct ipmi_intf * intf); +static int ipmi_lan_keepalive(struct ipmi_intf * intf); struct ipmi_intf ipmi_lan_intf = { name: "lan", @@ -88,6 +89,7 @@ struct ipmi_intf ipmi_lan_intf = { close: ipmi_lan_close, sendrecv: ipmi_lan_send_cmd, sendrsp: ipmi_lan_send_rsp, + keepalive: ipmi_lan_keepalive, target_addr: IPMI_BMC_SLAVE_ADDR, }; @@ -844,6 +846,23 @@ int ipmi_lan_send_rsp(struct ipmi_intf * intf, struct ipmi_rs * rsp) return 0; } +/* send a get device id command to keep session active */ +static int +ipmi_lan_keepalive(struct ipmi_intf * intf) +{ + struct ipmi_rs * rsp; + struct ipmi_rq req = { msg: { + netfn: IPMI_NETFN_APP, + cmd: 1, + }}; + + if (!intf->opened) + return 0; + + rsp = intf->sendrecv(intf, &req); + return (!rsp || rsp->ccode) ? -1 : 0; +} + /* * IPMI Get Channel Authentication Capabilities Command */