1 // SPDX-License-Identifier: MIT or GPL-2.0-only
2
3 #include <stdio.h>
4 #include <stdlib.h>
5 #include "ublksrv.h"
6
print_dev_owner_id(int number)7 static int print_dev_owner_id(int number)
8 {
9 struct ublksrv_dev_data data = {
10 .dev_id = number,
11 };
12 struct ublksrv_ctrl_dev *dev = ublksrv_ctrl_init(&data);
13 int ret = ublksrv_ctrl_get_info(dev);
14
15 if (ret >= 0) {
16 const struct ublksrv_ctrl_dev_info *dinfo =
17 ublksrv_ctrl_get_dev_info(dev);
18
19 if (dinfo->flags & UBLK_F_UNPRIVILEGED_DEV)
20 printf("%d:%d\n", dinfo->owner_uid, dinfo->owner_gid);
21 else
22 printf("%d:%d\n", -1, -1);
23 } else {
24 printf("%d:%d\n", -1, -1);
25 }
26
27 ublksrv_ctrl_deinit(dev);
28
29 return ret;
30 }
31
main(int argc,char * argv[])32 int main(int argc, char *argv[])
33 {
34 long number;
35 char *path;
36
37 if (argc != 2)
38 return -1;
39
40 path = argv[1];
41
42 /*
43 * ublkcN or ublkbN since it is called when
44 * udev add event is received
45 */
46 number = strtol(&path[5], NULL, 10);
47
48 if (number >= 0)
49 print_dev_owner_id(number);
50
51 return 0;
52 }
53