master
go 63 lines 1.05 KB
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 package l2topology
4
5 import (
6 "math"
7 "strconv"
8 "strings"
9 )
10
11 func normalizeTopologyVLANID(value string) string {
12 value = strings.TrimSpace(value)
13 if value == "" {
14 return ""
15 }
16 return strings.ToLower(value)
17 }
18
19 func safeTopologyInt64Add(base, add int64) int64 {
20 if add <= 0 {
21 return base
22 }
23 if base > math.MaxInt64-add {
24 return math.MaxInt64
25 }
26 return base + add
27 }
28
29 func parseTopologyLabelInt64(value string) int64 {
30 value = strings.TrimSpace(value)
31 if value == "" {
32 return 0
33 }
34 parsed, err := strconv.ParseInt(value, 10, 64)
35 if err != nil || parsed <= 0 {
36 return 0
37 }
38 return parsed
39 }
40
41 func normalizeTopologyDuplex(value string) string {
42 value = strings.ToLower(strings.TrimSpace(value))
43 switch value {
44 case "full", "3":
45 return "full"
46 case "half", "2":
47 return "half"
48 case "unknown", "1":
49 return "unknown"
50 default:
51 return ""
52 }
53 }
54
55 func firstNonEmpty(values ...string) string {
56 for _, value := range values {
57 value = strings.TrimSpace(value)
58 if value != "" {
59 return value
60 }
61 }
62 return ""
63 }