lib/ipmi_tsol.c - make code formatting saner

This commit is contained in:
Zdenek Styblik 2014-05-24 10:05:05 +02:00
parent 6d25903a0b
commit aefd287222

View File

@ -76,7 +76,8 @@ static int _altterm = 0;
extern int verbose;
static int
ipmi_tsol_command(struct ipmi_intf * intf, char *recvip, int port, unsigned char cmd)
ipmi_tsol_command(struct ipmi_intf *intf, char *recvip, int port,
unsigned char cmd)
{
struct ipmi_rs *rsp;
struct ipmi_rq req;
@ -85,9 +86,8 @@ ipmi_tsol_command(struct ipmi_intf * intf, char *recvip, int port, unsigned char
if (sscanf(recvip, "%d.%d.%d.%d", &ip1, &ip2, &ip3, &ip4) != 4) {
lprintf(LOG_ERR, "Invalid IP address: %s", recvip);
return -1;
return (-1);
}
memset(&req, 0, sizeof(struct ipmi_rq));
req.msg.netfn = IPMI_NETFN_TSOL;
req.msg.cmd = cmd;
@ -105,14 +105,13 @@ ipmi_tsol_command(struct ipmi_intf * intf, char *recvip, int port, unsigned char
rsp = intf->sendrecv(intf, &req);
if (rsp == NULL) {
lprintf(LOG_ERR, "Unable to perform TSOL command");
return -1;
return (-1);
}
if (rsp->ccode > 0) {
lprintf(LOG_ERR, "Unable to perform TSOL command: %s",
val2str(rsp->ccode, completion_code_vals));
return -1;
return (-1);
}
return 0;
}
@ -159,7 +158,6 @@ ipmi_tsol_send_keystroke(struct ipmi_intf * intf, char *buff, int length)
return -1;
}
}
return length;
}
@ -167,16 +165,12 @@ static int
tsol_keepalive(struct ipmi_intf *intf)
{
struct timeval end;
gettimeofday(&end, 0);
if (end.tv_sec - _start_keepalive.tv_sec <= 30)
if (end.tv_sec - _start_keepalive.tv_sec <= 30) {
return 0;
}
intf->keepalive(intf);
gettimeofday(&_start_keepalive, 0);
return 0;
}
@ -201,15 +195,15 @@ print_escape_seq(struct ipmi_intf *intf)
static int
leave_raw_mode(void)
{
if (!_in_raw_mode)
if (!_in_raw_mode) {
return -1;
else if (tcsetattr(fileno(stdin), TCSADRAIN, &_saved_tio) == -1)
} else if (tcsetattr(fileno(stdin), TCSADRAIN, &_saved_tio) == -1) {
lperror(LOG_ERR, "tcsetattr(stdin)");
else if (tcsetattr(fileno(stdout), TCSADRAIN, &_saved_tio) == -1)
} else if (tcsetattr(fileno(stdout), TCSADRAIN, &_saved_tio) == -1) {
lperror(LOG_ERR, "tcsetattr(stdout)");
else
} else {
_in_raw_mode = 0;
}
return 0;
}
@ -217,14 +211,12 @@ static int
enter_raw_mode(void)
{
struct termios tio;
if (tcgetattr(fileno(stdout), &_saved_tio) < 0) {
lperror(LOG_ERR, "tcgetattr failed");
return -1;
}
tio = _saved_tio;
if (_altterm) {
tio.c_iflag &= (ISTRIP | IGNBRK);
tio.c_cflag &= ~(CSIZE | PARENB | IXON | IXOFF | IXANY);
@ -241,13 +233,13 @@ enter_raw_mode(void)
tio.c_cc[VTIME] = 0;
}
if (tcsetattr(fileno(stdin), TCSADRAIN, &tio) < 0)
if (tcsetattr(fileno(stdin), TCSADRAIN, &tio) < 0) {
lperror(LOG_ERR, "tcsetattr(stdin)");
else if (tcsetattr(fileno(stdout), TCSADRAIN, &tio) < 0)
} else if (tcsetattr(fileno(stdout), TCSADRAIN, &tio) < 0) {
lperror(LOG_ERR, "tcsetattr(stdout)");
else
} else {
_in_raw_mode = 1;
}
return 0;
}
@ -255,12 +247,11 @@ static void
suspend_self(int restore_tty)
{
leave_raw_mode();
kill(getpid(), SIGTSTP);
if (restore_tty)
if (restore_tty) {
enter_raw_mode();
}
}
static int
do_inbuf_actions(struct ipmi_intf *intf, char *in_buff, int len)
@ -291,19 +282,18 @@ do_inbuf_actions(struct ipmi_intf *intf, char *in_buff, int len)
printf("%c. [terminated ipmitool]\n",
intf->session->sol_escape_char);
return -1;
case 'Z' - 64:
printf("%c^Z [suspend ipmitool]\n",
intf->session->sol_escape_char);
suspend_self(1); /* Restore tty back to raw */
/* Restore tty back to raw */
suspend_self(1);
break;
case 'X' - 64:
printf("%c^X [suspend ipmitool]\n",
intf->session->sol_escape_char);
suspend_self(0); /* Don't restore to raw mode */
/* Don't restore to raw mode */
suspend_self(0);
break;
case '?':
printf("%c? [ipmitool help]\n",
intf->session->sol_escape_char);
@ -311,18 +301,14 @@ do_inbuf_actions(struct ipmi_intf *intf, char *in_buff, int len)
break;
}
memmove(in_buff, in_buff + 1, len - i - 1);
memmove(in_buff, (in_buff + 1), (len - i - 1));
len--;
in_esc = 0;
continue;
}
last_was_cr = (in_buff[i] == '\r' || in_buff[i] == '\n');
i++;
}
return len;
}
@ -330,27 +316,25 @@ do_inbuf_actions(struct ipmi_intf *intf, char *in_buff, int len)
static void
do_terminal_cleanup(void)
{
if (_saved_winsize.ws_row > 0 && _saved_winsize.ws_col > 0)
if (_saved_winsize.ws_row > 0 && _saved_winsize.ws_col > 0) {
ioctl(fileno(stdout), TIOCSWINSZ, &_saved_winsize);
}
leave_raw_mode();
if (errno)
if (errno) {
lprintf(LOG_ERR, "Exiting due to error %d -> %s",
errno, strerror(errno));
}
}
static void
set_terminal_size(int rows, int cols)
{
struct winsize winsize;
if (rows <= 0 || cols <= 0)
if (rows <= 0 || cols <= 0) {
return;
}
/* save initial winsize */
ioctl(fileno(stdout), TIOCGWINSZ, &_saved_winsize);
/* set new winsize */
winsize.ws_row = rows;
winsize.ws_col = cols;
@ -361,20 +345,24 @@ static void
print_tsol_usage(void)
{
struct winsize winsize;
lprintf(LOG_NOTICE, "Usage: tsol [recvip] [port=NUM] [ro|rw] [rows=NUM] [cols=NUM] [altterm]");
lprintf(LOG_NOTICE, " recvip Receiver IP Address [default=local]");
lprintf(LOG_NOTICE, " port=NUM Receiver UDP Port [default=%d]",
lprintf(LOG_NOTICE,
"Usage: tsol [recvip] [port=NUM] [ro|rw] [rows=NUM] [cols=NUM] [altterm]");
lprintf(LOG_NOTICE,
" recvip Receiver IP Address [default=local]");
lprintf(LOG_NOTICE,
" port=NUM Receiver UDP Port [default=%d]",
IPMI_TSOL_DEF_PORT);
lprintf(LOG_NOTICE, " ro|rw Set Read-Only or Read-Write [default=rw]");
lprintf(LOG_NOTICE,
" ro|rw Set Read-Only or Read-Write [default=rw]");
ioctl(fileno(stdout), TIOCGWINSZ, &winsize);
lprintf(LOG_NOTICE, " rows=NUM Set terminal rows [default=%d]",
lprintf(LOG_NOTICE,
" rows=NUM Set terminal rows [default=%d]",
winsize.ws_row);
lprintf(LOG_NOTICE, " cols=NUM Set terminal columns [default=%d]",
lprintf(LOG_NOTICE,
" cols=NUM Set terminal columns [default=%d]",
winsize.ws_col);
lprintf(LOG_NOTICE, " altterm Alternate terminal setup [default=off]");
lprintf(LOG_NOTICE,
" altterm Alternate terminal setup [default=off]");
}
int
@ -394,7 +382,7 @@ ipmi_tsol_main(struct ipmi_intf * intf, int argc, char ** argv)
if (strlen(intf->name) < 3 || strncmp(intf->name, "lan", 3) != 0) {
lprintf(LOG_ERR, "Error: Tyan SOL is only available over lan interface");
return -1;
return (-1);
}
for (i = 0; i<argc; i++) {
@ -402,24 +390,26 @@ ipmi_tsol_main(struct ipmi_intf * intf, int argc, char ** argv)
/* not free'd ...*/
/* recvip = strdup(argv[i]); */
recvip = argv[i];
}
else if (sscanf(argv[i], "port=%d", &ip1) == 1)
} else if (sscanf(argv[i], "port=%d", &ip1) == 1) {
port = ip1;
else if (sscanf(argv[i], "rows=%d", &ip1) == 1)
} else if (sscanf(argv[i], "rows=%d", &ip1) == 1) {
rows = ip1;
else if (sscanf(argv[i], "cols=%d", &ip1) == 1)
} else if (sscanf(argv[i], "cols=%d", &ip1) == 1) {
cols = ip1;
else if (strlen(argv[i]) == 2 && strncmp(argv[i], "ro", 2) == 0)
} else if (strlen(argv[i]) == 2
&& strncmp(argv[i], "ro", 2) == 0) {
read_only = 1;
else if (strlen(argv[i]) == 2 && strncmp(argv[i], "rw", 2) == 0)
} else if (strlen(argv[i]) == 2
&& strncmp(argv[i], "rw", 2) == 0) {
read_only = 0;
else if (strlen(argv[i]) == 7 && strncmp(argv[i], "altterm", 7) == 0)
} else if (strlen(argv[i]) == 7
&& strncmp(argv[i], "altterm", 7) == 0) {
_altterm = 1;
else if (strlen(argv[i]) == 4 && strncmp(argv[i], "help", 4) == 0) {
} else if (strlen(argv[i]) == 4
&& strncmp(argv[i], "help", 4) == 0) {
print_tsol_usage();
return 0;
}
else {
} else {
print_tsol_usage();
return 0;
}
@ -457,7 +447,7 @@ ipmi_tsol_main(struct ipmi_intf * intf, int argc, char ** argv)
lprintf(LOG_ERR, "Can't open port %d", port);
return -1;
}
if (-1 == bind(fd_socket, (struct sockaddr *)&sin, sizeof(sin))) {
if (bind(fd_socket, (struct sockaddr *)&sin, sizeof(sin)) == (-1)) {
lprintf(LOG_ERR, "Failed to bind socket.");
close(fd_socket);
return -1;
@ -467,7 +457,8 @@ ipmi_tsol_main(struct ipmi_intf * intf, int argc, char ** argv)
* retrieve local IP address if not supplied on command line
*/
if (recvip == NULL) {
result = intf->open(intf); /* must connect first */
/* must connect first */
result = intf->open(intf);
if (result < 0) {
close(fd_socket);
return -1;
@ -502,7 +493,7 @@ ipmi_tsol_main(struct ipmi_intf * intf, int argc, char ** argv)
if (result < 0) {
lprintf(LOG_ERR, "Error starting SOL");
close(fd_socket);
return -1;
return (-1);
}
printf("[SOL Session operational. Use %c? for help]\n",
@ -536,18 +527,22 @@ ipmi_tsol_main(struct ipmi_intf * intf, int argc, char ** argv)
for (;;) {
result = poll(fds, 3, 15 * 1000);
if (result < 0)
if (result < 0) {
break;
}
/* send keepalive packet */
tsol_keepalive(intf);
if ((fds[0].revents & POLLIN) && (sizeof(out_buff) > out_buff_fill)) {
socklen_t sin_len = sizeof(sin);
result = recvfrom(fd_socket, buff, sizeof(out_buff) - out_buff_fill + 4, 0,
/* Note - buffer over-flow here */
result = recvfrom(fd_socket, buff,
sizeof(out_buff) - out_buff_fill + 4, 0,
(struct sockaddr *)&sin, &sin_len);
/* read the data from udp socket, skip some bytes in the head */
/* read the data from udp socket,
* skip some bytes in the head
*/
if ((result - 4) > 0) {
int length = result - 4;
#if 1
@ -562,23 +557,27 @@ ipmi_tsol_main(struct ipmi_intf * intf, int argc, char ** argv)
}
}
if ((fds[1].revents & POLLIN) && (sizeof(in_buff) > in_buff_fill)) {
/* Read from keyboard */
result = read(fileno(stdin), in_buff + in_buff_fill,
sizeof(in_buff) - in_buff_fill); // read from keyboard
sizeof(in_buff) - in_buff_fill);
if (result > 0) {
int bytes;
bytes = do_inbuf_actions(intf, in_buff + in_buff_fill, result);
bytes = do_inbuf_actions(intf,
in_buff + in_buff_fill, result);
if (bytes < 0) {
result = ipmi_tsol_stop(intf, recvip, port);
do_terminal_cleanup();
return result;
}
if (read_only)
if (read_only) {
bytes = 0;
}
in_buff_fill += bytes;
}
}
if ((fds[2].revents & POLLOUT) && out_buff_fill) {
result = write(fileno(stdout), out_buff, out_buff_fill); // to screen
/* To screen */
result = write(fileno(stdout), out_buff, out_buff_fill);
if (result > 0) {
out_buff_fill -= result;
if (out_buff_fill) {
@ -591,7 +590,8 @@ ipmi_tsol_main(struct ipmi_intf * intf, int argc, char ** argv)
* translate key and send that to SMDC using IPMI
* ipmitool -I lan -H 192.168.168.227 -U Administrator raw 0x30 0x03 0x04 0x1B 0x5B 0x43
*/
result = ipmi_tsol_send_keystroke(intf, in_buff, __min(in_buff_fill,14));
result = ipmi_tsol_send_keystroke(intf,
in_buff, __min(in_buff_fill, 14));
if (result > 0) {
gettimeofday(&_start_keepalive, 0);
in_buff_fill -= result;
@ -603,6 +603,5 @@ ipmi_tsol_main(struct ipmi_intf * intf, int argc, char ** argv)
fds = (in_buff_fill || out_buff_fill )?
fds_data_wait : fds_wait;
}
return 0;
}