Write used port data to /var/run/ibacm.port. This will allow
librdmacm and other libraries and applications to find the
ibacm service when it has been moved from its default port.
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
static void acm_init_server(void)
{
+ FILE *f;
int i;
for (i = 0; i < FD_SETSIZE - 1; i++) {
client[i].sock = INVALID_SOCKET;
atomic_init(&client[i].refcnt);
}
+
+ if (!(f = fopen("/var/run/ibacm.port", "w"))) {
+ acm_log(0, "notice - cannot publish ibacm port number\n");
+ return;
+ }
+ fprintf(f, "%hu\n", server_port);
+ fclose(f);
}
static int acm_listen(void)
static SOCKET sock = INVALID_SOCKET;
static short server_port = 6125;
+static void acm_set_server_port(void)
+{
+ FILE *f;
+
+ if ((f = fopen("/var/run/ibacm.port", "r"))) {
+ fscanf(f, "%hu", (unsigned short *) &server_port);
+ fclose(f);
+ }
+}
+
int libacm_init(void)
{
struct sockaddr_in addr;
if (ret)
return ret;
+ acm_set_server_port();
sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (sock == INVALID_SOCKET) {
ret = socket_errno();