From c77e641c521c03b6098613833fe22e09b11ad23f Mon Sep 17 00:00:00 2001
From: Christian Breunig <christian@breunig.cc>
Date: Sun, 25 Jun 2023 20:09:31 +0200
Subject: bcast-relay: T5313: verify() relay interfaces have IPv4 address
 configured

(cherry picked from commit ca7c063666c038d104082542f04ead6062e79246)
---
 src/conf_mode/bcast_relay.py | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

(limited to 'src/conf_mode')

diff --git a/src/conf_mode/bcast_relay.py b/src/conf_mode/bcast_relay.py
index d93a2a8f4..265ececbd 100755
--- a/src/conf_mode/bcast_relay.py
+++ b/src/conf_mode/bcast_relay.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python3
 #
-# Copyright (C) 2017-2020 VyOS maintainers and contributors
+# Copyright (C) 2017-2023 VyOS maintainers and contributors
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License version 2 or later as
@@ -17,12 +17,14 @@
 import os
 
 from glob import glob
-from netifaces import interfaces
+from netifaces import AF_INET
 from sys import exit
 
 from vyos.config import Config
-from vyos.util import call
+from vyos.configverify import verify_interface_exists
 from vyos.template import render
+from vyos.util import call
+from vyos.validate import is_afi_configured
 from vyos import ConfigError
 from vyos import airbag
 airbag.enable()
@@ -52,16 +54,14 @@ def verify(relay):
         if 'port' not in config:
             raise ConfigError(f'Port number mandatory for udp broadcast relay "{instance}"')
 
-        # if only oone interface is given it's a string -> move to list
-        if isinstance(config.get('interface', []), str):
-            config['interface'] = [ config['interface'] ]
         # Relaying data without two interface is kinda senseless ...
         if len(config.get('interface', [])) < 2:
             raise ConfigError('At least two interfaces are required for udp broadcast relay "{instance}"')
 
         for interface in config.get('interface', []):
-            if interface not in interfaces():
-                raise ConfigError('Interface "{interface}" does not exist!')
+            verify_interface_exists(interface)
+            if not is_afi_configured(interface, AF_INET):
+                raise ConfigError(f'Interface "{interface}" has no IPv4 address configured!')
 
     return None
 
-- 
cgit v1.2.3


From 77bce8f54bad791ea7ab6e6100ee11c97ec3dfb4 Mon Sep 17 00:00:00 2001
From: Christian Breunig <christian@breunig.cc>
Date: Fri, 30 Jun 2023 21:49:02 +0200
Subject: bcast-relay: T5313: capitalize UDP protocol name

(cherry picked from commit a409b255acc3dc0a67058593e31b3614e20714f0)
---
 src/conf_mode/bcast_relay.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

(limited to 'src/conf_mode')

diff --git a/src/conf_mode/bcast_relay.py b/src/conf_mode/bcast_relay.py
index 265ececbd..1ace01758 100755
--- a/src/conf_mode/bcast_relay.py
+++ b/src/conf_mode/bcast_relay.py
@@ -52,11 +52,11 @@ def verify(relay):
 
         # we certainly require a UDP port to listen to
         if 'port' not in config:
-            raise ConfigError(f'Port number mandatory for udp broadcast relay "{instance}"')
+            raise ConfigError(f'Port number is mandatory for UDP broadcast relay "{instance}"')
 
         # Relaying data without two interface is kinda senseless ...
         if len(config.get('interface', [])) < 2:
-            raise ConfigError('At least two interfaces are required for udp broadcast relay "{instance}"')
+            raise ConfigError('At least two interfaces are required for UDP broadcast relay "{instance}"')
 
         for interface in config.get('interface', []):
             verify_interface_exists(interface)
-- 
cgit v1.2.3