Add libmpathcmd library and use it internally
[multipath-tools/.git] / libmpathpersist / mpath_updatepr.c
1 #include<stdio.h>
2 #include<unistd.h>
3 #include <errno.h>
4
5 #include <stdlib.h>
6 #include <stdarg.h>
7 #include <fcntl.h>
8 #include <sys/ioctl.h>
9 #include <sys/types.h>
10 #include <sys/socket.h>
11 #include <sys/un.h>
12 #include <sys/poll.h>
13 #include <errno.h>
14 #include <debug.h>
15 #include <mpath_cmd.h>
16 #include <uxsock.h>
17 #include "memory.h"
18
19 unsigned long mem_allocated;    /* Total memory used in Bytes */
20
21 int update_prflag(char * arg1, char * arg2, int noisy)
22 {
23         int fd;
24         char str[64];
25         char *reply;
26         int ret = 0;
27
28         fd = mpath_connect();
29         if (fd == -1) {
30                 condlog (0, "ux socket connect error");
31                 return 1 ;
32         }
33
34         snprintf(str,sizeof(str),"map %s %s", arg1, arg2);
35         condlog (2, "%s: pr flag message=%s", arg1, str);
36         send_packet(fd, str);
37         ret = recv_packet(fd, &reply, DEFAULT_REPLY_TIMEOUT);
38         if (ret < 0) {
39                 condlog(2, "%s: message=%s error=%d", arg1, str, errno);
40                 ret = -2;
41         } else {
42                 condlog (2, "%s: message=%s reply=%s", arg1, str, reply);
43                 if (!reply || strncmp(reply,"ok", 2) == 0)
44                         ret = -1;
45                 else if (strncmp(reply, "fail", 4) == 0)
46                         ret = -2;
47                 else{
48                         ret = atoi(reply);
49                 }
50         }
51
52         free(reply);
53         mpath_disconnect(fd);
54         return ret;
55 }