summaryrefslogtreecommitdiff
path: root/lib/ipmi_tsol.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/ipmi_tsol.c')
-rw-r--r--lib/ipmi_tsol.c41
1 files changed, 22 insertions, 19 deletions
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 <sys/types.h>
#include <sys/stat.h>
@@ -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);