From 97d6a2e491c6ed08473beb2c4bac47c5cbc1201a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Frings-F=C3=BCrst?= Date: Sat, 20 Feb 2016 02:12:40 +0100 Subject: Imported Upstream version 1.8.16 --- lib/ipmi_tsol.c | 41 ++++++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 19 deletions(-) (limited to 'lib/ipmi_tsol.c') diff --git a/lib/ipmi_tsol.c b/lib/ipmi_tsol.c index b4e3cc1..70d7357 100644 --- a/lib/ipmi_tsol.c +++ b/lib/ipmi_tsol.c @@ -29,6 +29,7 @@ * LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, * EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. */ +#define _DEFAULT_SOURCE #include #include @@ -184,12 +185,12 @@ print_escape_seq(struct ipmi_intf *intf) " %c? - this message\n" " %c%c - send the escape character by typing it twice\n" " (Note that escapes are only recognized immediately after newline.)", - intf->session->sol_escape_char, - intf->session->sol_escape_char, - intf->session->sol_escape_char, - intf->session->sol_escape_char, - intf->session->sol_escape_char, - intf->session->sol_escape_char); + intf->ssn_params.sol_escape_char, + intf->ssn_params.sol_escape_char, + intf->ssn_params.sol_escape_char, + intf->ssn_params.sol_escape_char, + intf->ssn_params.sol_escape_char, + intf->ssn_params.sol_escape_char); } static int @@ -263,7 +264,7 @@ do_inbuf_actions(struct ipmi_intf *intf, char *in_buff, int len) for(i = 0; i < len ;) { if (!in_esc) { if (last_was_cr && - (in_buff[i] == intf->session->sol_escape_char)) { + (in_buff[i] == intf->ssn_params.sol_escape_char)) { in_esc = 1; memmove(in_buff, in_buff + 1, len - i - 1); len--; @@ -271,7 +272,7 @@ do_inbuf_actions(struct ipmi_intf *intf, char *in_buff, int len) } } if (in_esc) { - if (in_buff[i] == intf->session->sol_escape_char) { + if (in_buff[i] == intf->ssn_params.sol_escape_char) { in_esc = 0; i++; continue; @@ -280,23 +281,23 @@ do_inbuf_actions(struct ipmi_intf *intf, char *in_buff, int len) switch (in_buff[i]) { case '.': printf("%c. [terminated ipmitool]\n", - intf->session->sol_escape_char); + intf->ssn_params.sol_escape_char); return -1; case 'Z' - 64: printf("%c^Z [suspend ipmitool]\n", - intf->session->sol_escape_char); + intf->ssn_params.sol_escape_char); /* Restore tty back to raw */ suspend_self(1); break; case 'X' - 64: printf("%c^X [suspend ipmitool]\n", - intf->session->sol_escape_char); + intf->ssn_params.sol_escape_char); /* Don't restore to raw mode */ suspend_self(0); break; case '?': printf("%c? [ipmitool help]\n", - intf->session->sol_escape_char); + intf->ssn_params.sol_escape_char); print_escape_seq(intf); break; } @@ -411,8 +412,10 @@ ipmi_tsol_main(struct ipmi_intf *intf, int argc, char **argv) print_tsol_usage(); return 0; } else { + lprintf(LOG_ERR, "Invalid tsol command: '%s'\n", + argv[i]); print_tsol_usage(); - return 0; + return (-1); } } @@ -422,25 +425,25 @@ ipmi_tsol_main(struct ipmi_intf *intf, int argc, char **argv) sin.sin_port = htons(port); sa_in = (struct sockaddr_in *)&intf->session->addr; - result = inet_pton(AF_INET, (const char *)intf->session->hostname, + result = inet_pton(AF_INET, (const char *)intf->ssn_params.hostname, &sa_in->sin_addr); if (result <= 0) { - struct hostent *host = gethostbyname((const char *)intf->session->hostname); + struct hostent *host = gethostbyname((const char *)intf->ssn_params.hostname); if (host == NULL ) { lprintf(LOG_ERR, "Address lookup for %s failed", - intf->session->hostname); + intf->ssn_params.hostname); return -1; } if (host->h_addrtype != AF_INET) { lprintf(LOG_ERR, "Address lookup for %s failed. Got %s, expected IPv4 address.", - intf->session->hostname, + intf->ssn_params.hostname, (host->h_addrtype == AF_INET6) ? "IPv6" : "Unknown"); return (-1); } sa_in->sin_family = host->h_addrtype; - memcpy(&sa_in->sin_addr, host->h_addr, host->h_length); + memcpy(&sa_in->sin_addr, host->h_addr_list[0], host->h_length); } fd_socket = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP); @@ -498,7 +501,7 @@ ipmi_tsol_main(struct ipmi_intf *intf, int argc, char **argv) } printf("[SOL Session operational. Use %c? for help]\n", - intf->session->sol_escape_char); + intf->ssn_params.sol_escape_char); gettimeofday(&_start_keepalive, 0); -- cgit v1.2.3