summaryrefslogtreecommitdiff
path: root/lib/lanplus/lanplus.c
diff options
context:
space:
mode:
authorJörg Frings-Fürst <debian@jff.email>2020-09-14 12:27:22 +0200
committerJörg Frings-Fürst <debian@jff.email>2020-09-14 12:27:22 +0200
commit0e9b185152b56ff33fe8a2a89a4f84923a308300 (patch)
treea5921c0b328a249f4978fa27c641e13512f16d44 /lib/lanplus/lanplus.c
parentc71bf8390b9a06fa498d2cb4f8a4924309f4875e (diff)
New upstream version 3.1.7upstream/3.1.7
Diffstat (limited to 'lib/lanplus/lanplus.c')
-rw-r--r--lib/lanplus/lanplus.c72
1 files changed, 42 insertions, 30 deletions
diff --git a/lib/lanplus/lanplus.c b/lib/lanplus/lanplus.c
index c910b85..664eea6 100644
--- a/lib/lanplus/lanplus.c
+++ b/lib/lanplus/lanplus.c
@@ -32,18 +32,19 @@
/* ARCress, TODO: improve error handling and remove all assert() calls here. */
#ifdef WIN32
-#ifdef HAVE_IPV6
-#include <winsock2.h>
-//#include <ws2tcpip.h>
-#else
-#include <winsock.h>
-#endif
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <inttypes-win.h>
#include <io.h>
#include <signal.h>
+//#define HAVE_IPV6 1
+#ifdef HAVE_IPV6
+#include <winsock2.h>
+//#include <ws2tcpip.h>
+#else
+#include <winsock.h>
+#endif
#include <time.h>
#else
#include <stdlib.h>
@@ -102,11 +103,7 @@ static int my_ai_flags = AI_NUMERICSERV; /*0x0400 Dont use name resolution NEW*/
#undef HAVE_IPV6
#endif
#ifdef HAVE_IPV6
-#ifdef WIN32
-#define SOCKADDR_T SOCKADDR_STORAGE
-#else
#define SOCKADDR_T struct sockaddr_storage
-#endif
#else
#define SOCKADDR_T struct sockaddr_in
#endif
@@ -1096,6 +1093,16 @@ read_open_session_response(struct ipmi_rs * rsp, int offset)
}
+/* os_assert - wrapper to prevent calling assert in Windows */
+void os_assert(char *msg)
+{
+ printf("ASSERT ERROR: %s\n",msg);
+#ifdef WIN32
+ exit(1);
+#else
+ assert(0);
+#endif
+}
/*
* read_rakp2_message
@@ -1183,7 +1190,7 @@ read_rakp2_message(
default:
lprintf(LOG_ERR, "read_rakp2_message: no support for authentication algorithm 0x%x", auth_alg);
- assert(0); /*void routine*/
+ os_assert("read_rakp2_message"); /*void routine*/
break;
}
}
@@ -1263,7 +1270,7 @@ read_rakp4_message(
default:
lprintf(LOG_ERR, "read_rakp4_message: no support "
"for authentication algorithm 0x%x", auth_alg);
- assert(0); /*void routine*/
+ os_assert("read_rakp4_message"); /*void routine*/
break;
}
}
@@ -2919,7 +2926,8 @@ ipmi_lanplus_send_ipmi_cmd(
// v2_payload.payload_length = 7 + req->msg.data_len; /*initial ++++*/
v2_payload.payload.ipmi_request.request = req;
- // if (verbose > 2) lprintf(LOG_INFO,"ipmi cmd payload"); /*++++*/
+ // if (verbose > 2)
+ lprintf(LOG_NOTICE,"ipmi cmd before payload, len=%d\n",v2_payload.payload_length); /*++++*/
return ipmi_lanplus_send_payload(intf, &v2_payload);
}
@@ -3234,6 +3242,7 @@ ipmi_lanplus_open_session(struct ipmi_intf * intf)
}
}
+ lprintf(LOG_NOTICE,"ipmi_lanplus_open_session complete rc=%d\n", rc); //++++
return rc;
}
@@ -3657,6 +3666,7 @@ ipmi_lanplus_open(struct ipmi_intf * intf)
session = intf->session;
+ lprintf(LOG_NOTICE, "ipmi_lanplus_open started\n"); //++++
if (!session->port)
session->port = IPMI_LANPLUS_PORT;
if (!session->privlvl)
@@ -3706,7 +3716,7 @@ ipmi_lanplus_open(struct ipmi_intf * intf)
#endif
#ifdef HAVE_IPV6
- session->addrlen = 0;
+ session->addrlen = 0;
memset(&session->addr, 0, sizeof(session->addr));
memset(&addr, 0, sizeof(addr));
sprintf(service, "%d", session->port);
@@ -3717,10 +3727,10 @@ ipmi_lanplus_open(struct ipmi_intf * intf)
hints.ai_flags = my_ai_flags;
hints.ai_protocol = IPPROTO_UDP; /* */
- rc = getaddrinfo((char *)session->hostname, service, &hints, &result);
+ rc = getaddrinfo((char *)session->hostname, service, &hints, &result);
if (rc != 0) {
- lprintf(LOG_ERR, "Address lookup for %s failed with %d, %s",
- session->hostname,rc,gai_strerror(rc));
+ lprintf(LOG_ERR, "Address lookup for %s failed with %d",
+ session->hostname,rc);
return -1;
}
@@ -3728,24 +3738,24 @@ ipmi_lanplus_open(struct ipmi_intf * intf)
* Try each address until we successfully connect(2).
*/
for (rp = result; rp != NULL; rp = rp->ai_next) {
- intf->fd = socket(rp->ai_family, rp->ai_socktype, rp->ai_protocol);
- if (intf->fd == -1) continue;
+ intf->fd = socket(rp->ai_family, rp->ai_socktype, rp->ai_protocol);
+ if (intf->fd == -1) continue;
/* valid protocols are IPPROTO_UDP, IPPROTO_IPV6 */
if (rp->ai_protocol == IPPROTO_TCP) continue; /*IPMI != TCP*/
lprintf(LOG_DEBUG, "lanplus socket(%d,%d,%d), connect(%d)",
rp->ai_family, rp->ai_socktype, rp->ai_protocol,
intf->fd );
- if (connect(intf->fd, rp->ai_addr, rp->ai_addrlen) != -1) {
+ if (connect(intf->fd, rp->ai_addr, rp->ai_addrlen) != -1) {
lprintf(LOG_DEBUG, "lanplus connect ok, addrlen=%d size=%d",
rp->ai_addrlen,sizeof(addr));
- addrlen = rp->ai_addrlen;
- memcpy(&addr, rp->ai_addr, addrlen);
- // memcpy(&session->addr, rp->ai_addr, rp->ai_addrlen);
- session->addrlen = rp->ai_addrlen;
- break; /* Success */
- }
- close(intf->fd);
- intf->fd = -1;
+ addrlen = rp->ai_addrlen;
+ memcpy(&addr, rp->ai_addr, addrlen);
+ // memcpy(&session->addr, rp->ai_addr, rp->ai_addrlen);
+ session->addrlen = rp->ai_addrlen;
+ break; /* Success */
+ }
+ close(intf->fd);
+ intf->fd = -1;
}
freeaddrinfo(result); /* Done with addrinfo */
if (intf->fd < 0) {
@@ -3914,7 +3924,7 @@ void test_crypt1(void)
&bytes_encrypted))
{
lprintf(LOG_ERR, "Encrypt test failed");
- assert(0); /*assert for testing*/
+ os_assert("test_crypt1"); /*assert for testing*/
}
printbuf(encrypt_buffer, bytes_encrypted, "encrypted payload");
@@ -3927,7 +3937,7 @@ void test_crypt1(void)
&bytes_decrypted))
{
lprintf(LOG_ERR, "Decrypt test failed\n");
- assert(0); /*assert for testing*/
+ os_assert("test_crypt1"); /*assert for testing*/
}
printbuf(decrypt_buffer, bytes_decrypted, "decrypted payload");
@@ -4020,6 +4030,7 @@ ipmi_lanplus_keepalive(struct ipmi_intf * intf)
static int ipmi_lanplus_setup(struct ipmi_intf * intf)
{
+ lprintf(LOG_NOTICE, "ipmi_lanplus_setup started"); //++++
if (lanplus_seed_prng(16)) {
lprintf(LOG_ERR, "lanplus_seed_prng failure");
return -1;
@@ -4031,6 +4042,7 @@ static int ipmi_lanplus_setup(struct ipmi_intf * intf)
return -1;
}
memset(intf->session, 0, sizeof(struct ipmi_session));
+ lprintf(LOG_NOTICE, "ipmi_lanplus_setup complete"); //++++
return 0;
}