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