libxl: Provide libxl__backendpath_parse_domid

Multiple places in libxl need to figure out the backend domid of a
device.  This can be discovered easily by looking at the backend path,
which always starts /local/domain/$backend_domid/.

There are no call sites yet.

This is part of XSA-175.

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
Reviewed-by: Wei Liu <wei.liu2@citrix.com>
This commit is contained in:
Ian Jackson authored and Ian Jackson committed 2016-06-06 15:54:26 +01:00
1 parent e9c81e9316
commit cbbb4d17bd
2 files changed
+17

No files matched your search

+15
View File
@@ -270,6 +270,21 @@ static int disk_try_backend(disk_try_backend_args *a,
return 0;
}
int libxl__backendpath_parse_domid(libxl__gc *gc, const char *be_path,
libxl_domid *domid_out) {
int r;
unsigned int domid_sc;
char delim_sc;
r = sscanf(be_path, "/local/domain/%u%c", &domid_sc, &delim_sc);
if (!(r==2 && delim_sc=='/')) {
LOG(ERROR, "internal error: backend path %s unparseable!", be_path);
return ERROR_FAIL;
}
*domid_out = domid_sc;
return 0;
}
int libxl__device_disk_set_backend(libxl__gc *gc, libxl_device_disk *disk) {
libxl_disk_backend ok;
disk_try_backend_args a;
+2
View File
@@ -574,6 +574,8 @@ _hidden bool libxl__xs_mkdir(libxl__gc *gc, xs_transaction_t t,
_hidden char *libxl__xs_libxl_path(libxl__gc *gc, uint32_t domid);
_hidden int libxl__backendpath_parse_domid(libxl__gc *gc, const char *be_path,
libxl_domid *domid_out);
/*----- "checked" xenstore access functions -----*/
/* Each of these functions will check that it succeeded; if it
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.