biosdevname is a tool used to find out the "real" device name of a network interface, according to the BIOS. This name is not affected by manual device renaming or changes in the Linux kernel.
Signed-off-by: Rob Hoes <rob.hoes@citrix.com>
diff -r
96761a1835c1 netdev/netdev.ml--- a/netdev/netdev.ml
+++ b/netdev/netdev.ml
@@ -397,6 +397,13 @@
not(List.mem "xen-backend" (String.split '/' link))
with _ -> false
+let get_bios_name name =
+ try
+ let output, _ = Forkhelpers.execute_command_get_output "/sbin/biosdevname" ["-i"; name] in
+ let output = String.strip String.isspace output in
+ output
+ with _ -> name
+
(* Dispatch network backend operations. *)
let network_config_file = "/etc/xensource/network.conf"
(** Returns PCI vendor and device ID for network device. *)
val get_ids : string -> string * string
-(** Indicates whether the given interface is a physical interface *)
+(** Indicates whether the given interface is a physical interface. *)
val is_physical : string -> bool
-(** Dispatch operation to correct backend device *)
+(** Returns the device name of the given interface according to [biosdevname]. This is a name
+ * that is based on the BIOS name and should not be affected by changes in the Linux kernel or
+ * manual device renaming. *)
+val get_bios_name : string -> string
+
+(** Dispatch operation to correct backend device. *)
val network : network_ops