Skip to content

Commit 2738b79

Browse files
CA-151464: Don't assume interface is bonded if master sysfs key exists
In 3.12+ kernels, this key also exists for OVS ports. Signed-off-by: Si Beaumont <[email protected]>
1 parent bc0140f commit 2738b79

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

lib/network_utils.ml

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -456,8 +456,13 @@ module Linux_bonding = struct
456456

457457
let get_bond_master_of slave =
458458
try
459-
let path = Unix.readlink (Sysfs.getpath slave "master") in
460-
Some (List.hd (List.rev (String.split '/' path)))
459+
let master_symlink = Sysfs.getpath slave "master" in
460+
let master_path = Unix.readlink master_symlink in
461+
let slaves_path = Filename.concat master_symlink "bonding/slaves" in
462+
let slaves = Sysfs.read_one_line slaves_path |> String.split ' ' in
463+
if List.mem slave slaves
464+
then Some (List.hd (List.rev (String.split '/' master_path)))
465+
else None
461466
with _ -> None
462467
end
463468

0 commit comments

Comments
 (0)