Documentation
¶
Index ¶
- func Execute(result *TraverseResult, deviceList []*config.DeviceConfig, taskId uint)
- func ExecuteItem(result *TraverseResult, deviceList []*config.DeviceConfig, item_id uint, ...) (resultList []executeResult, deviceStatusList []deviceColor)
- func ExecuteItem2(result *TraverseResult, deviceList []*config.DeviceConfig, item_id uint, ...) (resultList []executeResult, deviceStatusList []deviceColor)
- func JsonToMap(jsonStr string) (map[string]string, error)
- func NewAdapter(dc *config.DeviceConfig) api.Adapter
- func NewNodeFromAdapter(ad api.Adapter, nodemapName string, force bool) api.Node
- func NodeMapInit()
- func ReadLogData()
- func RouteTraceExample()
- type ActionMatcher
- type AddressMatcher
- type BaseLocatorStrategy
- type CliMatcher
- type CompositeMatcher
- type ConnectorAdapter
- func (ca *ConnectorAdapter) HitByIp(ip, vrf string) bool
- func (ca *ConnectorAdapter) HitByNetwork(net network.AbbrNet, vrf string) bool
- func (ca *ConnectorAdapter) ID() string
- func (ca *ConnectorAdapter) SelectNodeByIP(ip, vrf string) (model.Node, model.Port, error)
- func (ca *ConnectorAdapter) SelectPortsByNetwork(net network.AbbrNet, vrf string) []model.Port
- type ConnectorManager
- func (cx *ConnectorManager) GetConnectorByID(id string) api.Connector
- func (cx *ConnectorManager) GetConnectorByIp(ip, vrf string) api.Connector
- func (cx *ConnectorManager) GetConnectorByNetwork(net network.AbbrNet, vrf string) api.Connector
- func (cx *ConnectorManager) GetOrCreateConnectorByPort(port api.Port, connections []*config.ConnectionInfo) api.Connector
- func (cm *ConnectorManager) MarshalJSON() ([]byte, error)
- func (cx *ConnectorManager) NewConnector(mode api.Mode) api.Connector
- func (cm *ConnectorManager) UnmarshalJSON(data []byte) error
- type ExitInfo
- type ExitReason
- type IntentMap
- type LocateRequest
- func (req *LocateRequest) GetPortList() ([]api.Port, map[api.Port]bool)
- func (req *LocateRequest) GetSecurityZoneInfo() *config.SecurityZoneInfo
- func (req *LocateRequest) SetPortList(portList []api.Port, portListMap map[api.Port]bool)
- func (req *LocateRequest) SetSecurityZoneInfo(info *config.SecurityZoneInfo)
- type LocatorStrategy
- type MatchDetail
- type MatchResult
- type MatchStrategy
- type MatchType
- type NameMatcher
- type NetworkLocator
- type NodeAdapter
- func (na *NodeAdapter) GetPort(portID string) (model.Port, error)
- func (na *NodeAdapter) GetPortByName(name string) (model.Port, error)
- func (na *NodeAdapter) GetRouteTable(vrf string, ipFamily network.IPFamily) (*model.RouteTable, error)
- func (na *NodeAdapter) ID() string
- func (na *NodeAdapter) ListPorts() []model.Port
- func (na *NodeAdapter) Name() string
- func (na *NodeAdapter) QueryRoute(dst network.NetworkList, inPort, vrf string, ipFamily network.IPFamily) (*model.RouteResult, error)
- func (na *NodeAdapter) SetRouteTable(vrf string, ipFamily network.IPFamily, table *model.RouteTable) error
- func (na *NodeAdapter) Type() model.NodeType
- type NodeLocator
- type NodeMap
- func (nm *NodeMap) AddNode(n api.Node, connections []*config.ConnectionInfo)
- func (nm *NodeMap) AttachToConnector(p api.Port, connector api.Connector)
- func (nm *NodeMap) FlattenName() string
- func (nm *NodeMap) FlattenPath() []string
- func (nm *NodeMap) GetAllPorts() []api.Port
- func (nm *NodeMap) GetNode(name string) api.Node
- func (nm *NodeMap) GetNodeById(id string) api.Node
- func (nm *NodeMap) GetPort(ref string) api.Port
- func (nm *NodeMap) GetPortsByArea(area string, ipFamily network.IPFamily) []api.Port
- func (nm *NodeMap) IsOutsidePort(nodeName, portName string, af network.IPFamily) (bool, string)
- func (nm *NodeMap) IsStubPort(node api.Node, port api.Port, ipType network.IPFamily) bool
- func (nm *NodeMap) LocateNode(srcnetList *network.NetworkList, dstnetList *network.NetworkList, ...) (bool, api.Node, string)
- func (nm *NodeMap) LocateStubNode(netList *network.NetworkList, vrf string, ipType network.IPFamily) (bool, api.Node, api.Port)
- func (nm *NodeMap) Locator() *NodeLocator
- func (nm *NodeMap) MakeTemplates(intent *policy.Intent, ctx context.Context) *TraverseProcess
- func (nm *NodeMap) MarshalJSON() ([]byte, error)
- func (nm *NodeMap) MatchSecurityZone(srcnetList *network.NetworkList, vrf string, ipFamily network.IPFamily) (*config.SecurityZoneInfo, bool)
- func (nm *NodeMap) Policies(actionID string, matchers ...PolicyMatcher) map[string][]PolicyMatchResult
- func (nm *NodeMap) SelectPortListByNetwork(net network.AbbrNet, vrf string) []api.Port
- func (nm *NodeMap) SetOutside(nodeName, portName, areaName string, ipv4, force bool)
- func (nm *NodeMap) SetStubInterface(nodeName, portName string, ipType network.IPFamily)
- func (NodeMap) TableName() string
- func (nm *NodeMap) ToDot() string
- func (nm *NodeMap) ToMermaid() string
- func (nm *NodeMap) UnmarshalJSON(data []byte) error
- func (nm *NodeMap) WhichNodeHasOutside(vrf string, af network.IPFamily) []api.Node
- func (nm *NodeMap) WithLogger(logger *zap.Logger)
- func (nm *NodeMap) WithRedisClient(client RedisClient)
- type NodeMapTopologyAdapter
- func (nmta *NodeMapTopologyAdapter) AddNode(node model.Node) error
- func (nmta *NodeMapTopologyAdapter) GetConnector(connectorID string) (model.Connector, error)
- func (nmta *NodeMapTopologyAdapter) GetConnectorByIP(ip, vrf string) (model.Connector, error)
- func (nmta *NodeMapTopologyAdapter) GetConnectorByNetwork(net network.AbbrNet, vrf string) (model.Connector, error)
- func (nmta *NodeMapTopologyAdapter) GetNode(nodeID string) (model.Node, error)
- func (nmta *NodeMapTopologyAdapter) GetPort(portID string) (model.Port, error)
- func (nmta *NodeMapTopologyAdapter) GetPortsByArea(area string, ipFamily network.IPFamily) []model.Port
- func (nmta *NodeMapTopologyAdapter) IsOutsidePort(nodeID, portID string, ipFamily network.IPFamily) (bool, string)
- func (nmta *NodeMapTopologyAdapter) IsStubPort(nodeID, portID string, ipFamily network.IPFamily) bool
- func (nmta *NodeMapTopologyAdapter) ListNodes() []model.Node
- func (nmta *NodeMapTopologyAdapter) ListPorts() []model.Port
- func (nmta *NodeMapTopologyAdapter) LocateSourceNode(src network.NetworkList, options *graph.LocateOptions) (model.Node, model.Port, error)
- type NodeNameLocator
- type OrMatcher
- type OutsideNodeLocator
- type PolicyMatchResult
- type PolicyMatcher
- type PortAdapter
- type PortListIsSameNodeValidator
- type RedisClient
- type RouteDecision
- type RouteDecisionType
- type RouteHop
- type RouteTraceEntry
- type RouteTraceEvent
- type RouteTracer
- func (rt *RouteTracer) AddRouteHop(inPort, node, outPort string)
- func (rt *RouteTracer) AddRouteHopWithoutOutPort(inPort, node string)
- func (rt *RouteTracer) GetExitInfo() *ExitInfo
- func (rt *RouteTracer) GetExitInfoJSON() ([]byte, error)
- func (rt *RouteTracer) GetRouteDecisions() []RouteDecision
- func (rt *RouteTracer) GetRouteDecisionsJSON() ([]byte, error)
- func (rt *RouteTracer) GetRouteHops() []RouteHop
- func (rt *RouteTracer) GetRouteHopsJSON() ([]byte, error)
- func (rt *RouteTracer) GetRoutePathString() string
- func (rt *RouteTracer) GetTraceEntries() []RouteTraceEntry
- func (rt *RouteTracer) GetTraceJSON() ([]byte, error)
- func (rt *RouteTracer) GetTraceSummary() map[string]interface{}
- func (rt *RouteTracer) LogAreaClassification(node, port, vrf, area string, criteria map[string]interface{}, ...)
- func (rt *RouteTracer) LogDestinationNode(inPort, node string)
- func (rt *RouteTracer) LogError(event RouteTraceEvent, nodeName, errorMsg string, ...)
- func (rt *RouteTracer) LogEvent(event RouteTraceEvent, details map[string]interface{})
- func (rt *RouteTracer) LogExit(reason ExitReason, node, port, vrf string, success bool, errorMsg string, ...)
- func (rt *RouteTracer) LogFailure(node, port, vrf string, failureType string, reason string, ...)
- func (rt *RouteTracer) LogFunctionNodeCheck(node, port, vrf string, isFunctionNode bool, nodeType string, ...)
- func (rt *RouteTracer) LogNextHop(currentNode, nextNode, nextPort, nextHopIP, outPort string)
- func (rt *RouteTracer) LogNextHopSelection(node, port, vrf string, nextHop, nextNode, nextPort string, ...)
- func (rt *RouteTracer) LogOutputPortMatch(node, inPort, outPort, vrf, area string, criteria map[string]interface{}, ...)
- func (rt *RouteTracer) LogPathUpdate(path string)
- func (rt *RouteTracer) LogRouteDecisionNew(decisionType RouteDecisionType, node, port, vrf, area, result, reason string, ...)
- func (rt *RouteTracer) LogRouteDecisionOld(nodeName, portName, vrf, decision, reason string, ...)
- func (rt *RouteTracer) LogRouteHop(inPort, node, outPort string)
- func (rt *RouteTracer) LogRouteQuery(node, port, vrf string, dstNetwork string, criteria map[string]interface{}, ...)
- func (rt *RouteTracer) LogRouteQueryWithOutput(node, port, vrf string, dstNetwork, outPort string, ...)
- func (rt *RouteTracer) LogSourceNode(inPort, node string)
- func (rt *RouteTracer) LogSourceNodeLocation(node, port, vrf string, criteria map[string]interface{}, result, reason string)
- func (rt *RouteTracer) LogSourceNodeLocationFailure(errorMsg string, criteria map[string]interface{})
- func (rt *RouteTracer) ToRouteTraceInfo() *model.RouteTraceInfo
- type SecurityZoneLocator
- type ServiceMatcher
- type StubInfo
- type StubNodeLocator
- type TraverseNode
- func (tn *TraverseNode) AddVertex(other graph.Vertex)
- func (tn *TraverseNode) Flatten() []string
- func (tn *TraverseNode) IsLoop() bool
- func (tn *TraverseNode) Iterator() *graph.VertexIterator
- func (tn *TraverseNode) Key() interface{}
- func (tn *TraverseNode) MarkFunctionNode(traverseOnly bool, ctx context.Context) (processErr model.ProcessErr)
- func (tn *TraverseNode) MarshalJSON() ([]byte, error)
- func (tn *TraverseNode) PrintCurrentPath()
- func (tn *TraverseNode) Run(traverseOnly bool, ctx context.Context) (processErr model.ProcessErr)
- func (tn *TraverseNode) RunL3Route(traverseOnly bool, ctx context.Context) (processErr model.ProcessErr)
- func (tn *TraverseNode) Vertices(key interface{}) graph.Vertex
- func (tn *TraverseNode) WithLogger(logger *zap.Logger)
- type TraverseProcess
- func (tp *TraverseProcess) AddF5Result(node api.Node, stepProcess *processor.NodeProcessor, result lb.LBProcessResult)
- func (tp *TraverseProcess) AddResult(node api.Node, stepProcess *processor.NodeProcessor, cmdListList []interface{}, ...)
- func (tp *TraverseProcess) AddWarning(warning model.WarningInfo)
- func (tp *TraverseProcess) GetFunctionNode(name string) api.Node
- func (tp *TraverseProcess) GetRouteDecisions() []RouteDecision
- func (tp *TraverseProcess) GetRouteDecisionsJSON() ([]byte, error)
- func (tp *TraverseProcess) GetRouteHops() []RouteHop
- func (tp *TraverseProcess) GetRouteHopsJSON() ([]byte, error)
- func (tp *TraverseProcess) GetRoutePathString() string
- func (tp *TraverseProcess) GetRouteTraceJSON() ([]byte, error)
- func (tp *TraverseProcess) GetRouteTraceSummary() map[string]interface{}
- func (tp *TraverseProcess) LogPathUpdate(path string)
- func (tp *TraverseProcess) LogRouteDecision(nodeName, portName, vrf, decision, reason string, ...)
- func (tp *TraverseProcess) MarshalJSON() ([]byte, error)
- func (tp *TraverseProcess) PrintRouteTrace()
- func (tp *TraverseProcess) PushFunctionNode(n api.Node)
- func (tp *TraverseProcess) Traverse(ctx context.Context)
- func (tp *TraverseProcess) WithIntent(intent *policy.Intent) *TraverseProcess
- func (tp *TraverseProcess) WithLogger(logger *zap.Logger)
- type TraverseResult
- type TraverseResultItem
- func (ti *TraverseResultItem) Execute(deviceList []*config.DeviceConfig, task_id uint, screen chan string) (global.CmdExecuteStatusColor, string, string, error)
- func (ti *TraverseResultItem) GenerateCli() []string
- func (ti *TraverseResultItem) MarshalJSON() ([]byte, error)
- func (ti *TraverseResultItem) MatchedCli() []string
- func (ti *TraverseResultItem) UnmarshalJSON(b []byte) error
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Execute ¶
func Execute(result *TraverseResult, deviceList []*config.DeviceConfig, taskId uint)
func ExecuteItem ¶
func ExecuteItem(result *TraverseResult, deviceList []*config.DeviceConfig, item_id uint, nodemap_task_id uint) (resultList []executeResult, deviceStatusList []deviceColor)
func ExecuteItem2 ¶
func ExecuteItem2(result *TraverseResult, deviceList []*config.DeviceConfig, item_id uint, nodemap_task_id uint) (resultList []executeResult, deviceStatusList []deviceColor)
func NewAdapter ¶
func NewAdapter(dc *config.DeviceConfig) api.Adapter
func NewDeviceBaseInfo(host, user, pass, devType, community string, port int) *DeviceBaseInfo { func NewAdapter(dc *config.DeviceConfig, task_id uint, dumpDb bool) api.Adapter {
func NewNodeFromAdapter ¶
func NodeMapInit ¶
func NodeMapInit()
func ReadLogData ¶
func ReadLogData()
Types ¶
type ActionMatcher ¶
func (ActionMatcher) Match ¶
func (m ActionMatcher) Match(policy firewall.FirewallPolicy) MatchResult
type AddressMatcher ¶
type AddressMatcher struct {
Address *network.NetworkGroup
Strategy MatchStrategy
Threshold float64
IsSource bool
}
func NewAddressMatcher ¶
func NewAddressMatcher(addr string, strategy MatchStrategy, isSource bool, threshold float64) *AddressMatcher
NewAddressMatcher 新增辅助函数
func (AddressMatcher) Match ¶
func (m AddressMatcher) Match(policy firewall.FirewallPolicy) MatchResult
type BaseLocatorStrategy ¶
BaseLocatorStrategy 基础定位策略,提供公共功能
func NewBaseLocatorStrategy ¶
func NewBaseLocatorStrategy(nodeMap *NodeMap, logger *zap.Logger) *BaseLocatorStrategy
NewBaseLocatorStrategy 创建基础定位策略
func (*BaseLocatorStrategy) GetAreaInfoList ¶
func (b *BaseLocatorStrategy) GetAreaInfoList(ipFamily network.IPFamily) []*config.AreaInfo
GetAreaInfoList 根据 IP 地址族获取对应的 Area 信息列表
func (*BaseLocatorStrategy) GetRouteTable ¶
func (b *BaseLocatorStrategy) GetRouteTable(node api.Node, vrf string, ipFamily network.IPFamily) *network.AddressTable
GetRouteTable 根据节点和 VRF 获取路由表
type CliMatcher ¶
type CliMatcher struct {
CliPattern string
}
func (CliMatcher) Match ¶
func (m CliMatcher) Match(policy firewall.FirewallPolicy) MatchResult
type CompositeMatcher ¶
type CompositeMatcher struct {
Matchers []PolicyMatcher
}
func (CompositeMatcher) Match ¶
func (m CompositeMatcher) Match(policy firewall.FirewallPolicy) MatchResult
type ConnectorAdapter ¶
type ConnectorAdapter struct {
// contains filtered or unexported fields
}
ConnectorAdapter 将nodemap.Connector适配为routing.Connector
func NewConnectorAdapter ¶
func NewConnectorAdapter(connector api.Connector) *ConnectorAdapter
NewConnectorAdapter 创建连接器适配器
func (*ConnectorAdapter) HitByIp ¶
func (ca *ConnectorAdapter) HitByIp(ip, vrf string) bool
HitByIp 检查是否匹配IP
func (*ConnectorAdapter) HitByNetwork ¶
func (ca *ConnectorAdapter) HitByNetwork(net network.AbbrNet, vrf string) bool
HitByNetwork 检查是否匹配网络
func (*ConnectorAdapter) SelectNodeByIP ¶
SelectNodeByIP 通过IP选择节点
func (*ConnectorAdapter) SelectPortsByNetwork ¶
SelectPortsByNetwork 通过网络选择端口
type ConnectorManager ¶
func (*ConnectorManager) GetConnectorByID ¶
func (cx *ConnectorManager) GetConnectorByID(id string) api.Connector
func (*ConnectorManager) GetConnectorByIp ¶
func (cx *ConnectorManager) GetConnectorByIp(ip, vrf string) api.Connector
func (*ConnectorManager) GetConnectorByNetwork ¶
func (*ConnectorManager) GetOrCreateConnectorByPort ¶
func (cx *ConnectorManager) GetOrCreateConnectorByPort(port api.Port, connections []*config.ConnectionInfo) api.Connector
func (*ConnectorManager) MarshalJSON ¶
func (cm *ConnectorManager) MarshalJSON() ([]byte, error)
MarshalJSON 实现 JSON 序列化
func (*ConnectorManager) NewConnector ¶
func (cx *ConnectorManager) NewConnector(mode api.Mode) api.Connector
func (*ConnectorManager) UnmarshalJSON ¶
func (cm *ConnectorManager) UnmarshalJSON(data []byte) error
UnmarshalJSON 实现 JSON 反序列化
type ExitInfo ¶
type ExitInfo struct {
Timestamp time.Time `json:"timestamp"`
Reason ExitReason `json:"reason"`
Node string `json:"node"`
Port string `json:"port"`
VRF string `json:"vrf"`
Details map[string]string `json:"details"`
Success bool `json:"success"`
ErrorMsg string `json:"error_msg,omitempty"`
}
ExitInfo 退出信息
type ExitReason ¶
type ExitReason string
ExitReason 退出原因类型
const ( ExitReasonConnectedRoute ExitReason = "ConnectedRoute" // 直连路由 ExitReasonOutsidePort ExitReason = "OutsidePort" // Outside端口 ExitReasonStubPort ExitReason = "StubPort" // Stub端口 ExitReasonNextHopFound ExitReason = "NextHopFound" // 找到下一跳 ExitReasonRouteQueryFailed ExitReason = "RouteQueryFailed" // 路由查询失败 ExitReasonNextHopNotFound ExitReason = "NextHopNotFound" // 下一跳未找到 ExitReasonMultiRoute ExitReason = "MultiRoute" // 多路由不支持 ExitReasonProcessError ExitReason = "ProcessError" // 处理错误 ExitReasonLoopDetected ExitReason = "LoopDetected" // 检测到环路 ExitReasonRouteLoop ExitReason = "RouteLoop" // 路由环路 ExitReasonSourceNodeFailed ExitReason = "SourceNodeFailed" // 源节点定位失败 )
type IntentMap ¶
type IntentMap struct {
Src string `json:"src"`
Dst string `json:"dst"`
Protocol string `json:"protocol"`
Dport string `json:"dport"`
Vrf string `json:"vrf"`
RealIp string `json:"realIp"`
RealPort string `json:"realPort"`
Area string `json:"area"`
Snat string `json:snat`
Gw6 string `json:"gw_6"`
TicketNumber string `json:"ticketNumber"`
SubTicket string `json:"subTicket"`
TraverseOnly bool `json:"traverseOnly"`
ItemId uint `json:"item_id"`
}
type LocateRequest ¶
type LocateRequest struct {
SrcNetList *network.NetworkList
DstNetList *network.NetworkList
NodeName string
Vrf string
Gw string
Area string
IPFamily network.IPFamily
NodeMap *NodeMap
Logger *zap.Logger
// contains filtered or unexported fields
}
LocateRequest 定位请求
func (*LocateRequest) GetPortList ¶
GetPortList 获取端口列表
func (*LocateRequest) GetSecurityZoneInfo ¶
func (req *LocateRequest) GetSecurityZoneInfo() *config.SecurityZoneInfo
GetSecurityZoneInfo 获取安全区域信息
func (*LocateRequest) SetPortList ¶
SetPortList 设置端口列表
func (*LocateRequest) SetSecurityZoneInfo ¶
func (req *LocateRequest) SetSecurityZoneInfo(info *config.SecurityZoneInfo)
SetSecurityZoneInfo 设置安全区域信息
type LocatorStrategy ¶
type LocatorStrategy interface {
// CanHandle 判断是否可以处理该定位请求
CanHandle(req *LocateRequest) bool
// Locate 执行定位逻辑
Locate(req *LocateRequest) (bool, api.Node, string)
}
LocatorStrategy 定位策略接口
type MatchDetail ¶
type MatchResult ¶
type MatchStrategy ¶
type MatchStrategy int
const ( // StrategyOverlap 定义重叠匹配策略 // 当策略地址范围与匹配器地址范围有任何交集时,视为匹配 StrategyOverlap MatchStrategy = iota // StrategyContains 定义包含匹配策略 // 策略地址范围必须完全包含匹配器地址范围,即匹配器地址范围是策略地址范围的子集 StrategyContains // StrategyContainedBy 定义被包含匹配策略 // 策略地址范围必须被匹配器地址范围完全包含,即策略地址范围是匹配器地址范围的子集 StrategyContainedBy // StrategyExactMatch 定义精确匹配策略 // 策略地址范围必须与匹配器地址范围完全相同 StrategyExactMatch // StrategyThreshold 定义阈值匹配策略 // 重叠部分占策略地址范围的比例必须大于或等于设定的阈值才视为匹配 StrategyThreshold // StrategyOverlapIgnoreAny 定义忽略"Any"地址的重叠匹配策略 // 检查地址重叠,但忽略策略中源或目的地址为"Any"的情况 // 用于避免匹配过于宽泛的策略,提高匹配精确度 StrategyOverlapIgnoreAny // StrategyIsolatedInQuery 定义孤立地址在查询范围内匹配策略 // 遍历策略地址中的每个孤立地址(通过 iterator 遍历时,每个独立的 entry 都是孤立地址) // 只要策略中的任意一个孤立地址在查询范围内,就视为匹配 // 例如:策略包含 [10.1.0.0/25, 10.1.0.222, 10.2.0.0/24, 192.168.1.0/24] // 查询 10.1.0.0/24 → 匹配(10.1.0.0/25 和 10.1.0.222 在查询范围内) // 查询 10.0.0.0/8 → 匹配(10.1.0.0/25、10.1.0.222 和 10.2.0.0/24 在查询范围内) // 查询 192.168.0.0/16 → 匹配(192.168.1.0/24 在查询范围内) // 查询 172.16.0.0/16 → 不匹配(所有孤立地址都不在查询范围内) StrategyIsolatedInQuery )
func (MatchStrategy) String ¶
func (ms MatchStrategy) String() string
type NameMatcher ¶
type NameMatcher struct {
Name string
}
func (NameMatcher) Match ¶
func (m NameMatcher) Match(policy firewall.FirewallPolicy) MatchResult
type NetworkLocator ¶
type NetworkLocator struct {
*BaseLocatorStrategy
}
NetworkLocator 网络地址定位策略
func NewNetworkLocator ¶
func NewNetworkLocator(nodeMap *NodeMap, logger *zap.Logger) *NetworkLocator
NewNetworkLocator 创建网络地址定位器
func (*NetworkLocator) CanHandle ¶
func (l *NetworkLocator) CanHandle(req *LocateRequest) bool
CanHandle 判断是否可以处理该定位请求
func (*NetworkLocator) Locate ¶
func (l *NetworkLocator) Locate(req *LocateRequest) (bool, api.Node, string)
Locate 执行定位逻辑
type NodeAdapter ¶
type NodeAdapter struct {
// contains filtered or unexported fields
}
NodeAdapter 将nodemap.Node适配为routing.Node
func (*NodeAdapter) GetPort ¶
func (na *NodeAdapter) GetPort(portID string) (model.Port, error)
GetPort 获取端口
func (*NodeAdapter) GetPortByName ¶
func (na *NodeAdapter) GetPortByName(name string) (model.Port, error)
GetPortByName 通过名称获取端口
func (*NodeAdapter) GetRouteTable ¶
func (na *NodeAdapter) GetRouteTable(vrf string, ipFamily network.IPFamily) (*model.RouteTable, error)
GetRouteTable 获取路由表
func (*NodeAdapter) QueryRoute ¶
func (na *NodeAdapter) QueryRoute( dst network.NetworkList, inPort, vrf string, ipFamily network.IPFamily) (*model.RouteResult, error)
QueryRoute 查询路由
func (*NodeAdapter) SetRouteTable ¶
func (na *NodeAdapter) SetRouteTable(vrf string, ipFamily network.IPFamily, table *model.RouteTable) error
SetRouteTable 设置路由表
type NodeLocator ¶
type NodeLocator struct {
// contains filtered or unexported fields
}
NodeLocator 节点定位器,封装节点定位逻辑
func (*NodeLocator) Locate ¶
func (nl *NodeLocator) Locate(srcnetList *network.NetworkList, dstnetList *network.NetworkList, nodeName, vrf, gw, area string) (bool, api.Node, string)
Locate 定位节点(NodeLocator 的新实现,使用策略模式)
func (*NodeLocator) LocateLegacy ¶
func (nl *NodeLocator) LocateLegacy(srcnetList *network.NetworkList, dstnetList *network.NetworkList, nodeName, vrf, gw, area string) (bool, api.Node, string)
LocateLegacy 定位节点(旧实现,保留用于向后兼容和测试)
type NodeMap ¶
type NodeMap struct {
Name string
Ports []api.Port
Nodes []api.Node
Ipv4Areas []*config.AreaInfo
Ipv6Areas []*config.AreaInfo
Ipv4SecurityZones []*config.SecurityZoneInfo
Ipv6SecurityZones []*config.SecurityZoneInfo
Ipv4Stubs []*StubInfo
Ipv6Stubs []*StubInfo
CxMananger *ConnectorManager
TNodeMapID *uint
// contains filtered or unexported fields
}
func NewNodeMapFromNetwork ¶
func NewNodeMapFromNetwork(name string, deviceList []config.DeviceConfig, force bool, task_id uint, nodeMapId *uint, templatePath ...string) (*NodeMap, context.Context)
NewNodeMapFromNetwork 创建新的 NodeMap templatePath: 防火墙模板路径,如果为空则使用默认路径
func (*NodeMap) AddNode ¶
func (nm *NodeMap) AddNode(n api.Node, connections []*config.ConnectionInfo)
func (*NodeMap) AttachToConnector ¶
func (*NodeMap) FlattenName ¶
func (*NodeMap) FlattenPath ¶
func (*NodeMap) GetPortsByArea ¶
func (*NodeMap) IsOutsidePort ¶
func (*NodeMap) IsStubPort ¶
func (*NodeMap) LocateNode ¶
func (nm *NodeMap) LocateNode(srcnetList *network.NetworkList, dstnetList *network.NetworkList, nodeName, vrf, gw, area string) (bool, api.Node, string)
LocateNode 定位节点(备份方法,保留用于向后兼容) 新的实现请使用 NodeLocator.Locate 方法
func (*NodeMap) LocateStubNode ¶
func (*NodeMap) MakeTemplates ¶
func (*NodeMap) MarshalJSON ¶
MarshalJSON 实现 JSON 序列化
func (*NodeMap) MatchSecurityZone ¶
func (nm *NodeMap) MatchSecurityZone(srcnetList *network.NetworkList, vrf string, ipFamily network.IPFamily) (*config.SecurityZoneInfo, bool)
MatchSecurityZone 检查源网络是否匹配安全区域(公开方法) 返回匹配的安全区域信息和是否匹配
func (*NodeMap) Policies ¶
func (nm *NodeMap) Policies(actionID string, matchers ...PolicyMatcher) map[string][]PolicyMatchResult
func (*NodeMap) SelectPortListByNetwork ¶
func (*NodeMap) SetOutside ¶
func (*NodeMap) SetStubInterface ¶
func (*NodeMap) UnmarshalJSON ¶
UnmarshalJSON 实现 JSON 反序列化
func (*NodeMap) WhichNodeHasOutside ¶
func (*NodeMap) WithLogger ¶
func (*NodeMap) WithRedisClient ¶
func (nm *NodeMap) WithRedisClient(client RedisClient)
WithRedisClient 设置 Redis 客户端
type NodeMapTopologyAdapter ¶
type NodeMapTopologyAdapter struct {
// contains filtered or unexported fields
}
NodeMapTopologyAdapter 将NodeMap适配为routing.Topology
func NewNodeMapTopologyAdapter ¶
func NewNodeMapTopologyAdapter(nodeMap *NodeMap) *NodeMapTopologyAdapter
NewNodeMapTopologyAdapter 创建NodeMap拓扑适配器
func (*NodeMapTopologyAdapter) AddNode ¶
func (nmta *NodeMapTopologyAdapter) AddNode(node model.Node) error
AddNode 添加节点
func (*NodeMapTopologyAdapter) GetConnector ¶
func (nmta *NodeMapTopologyAdapter) GetConnector(connectorID string) (model.Connector, error)
GetConnector 获取连接器
func (*NodeMapTopologyAdapter) GetConnectorByIP ¶
func (nmta *NodeMapTopologyAdapter) GetConnectorByIP(ip, vrf string) (model.Connector, error)
GetConnectorByIP 通过IP获取连接器
func (*NodeMapTopologyAdapter) GetConnectorByNetwork ¶
func (nmta *NodeMapTopologyAdapter) GetConnectorByNetwork(net network.AbbrNet, vrf string) (model.Connector, error)
GetConnectorByNetwork 通过网络获取连接器
func (*NodeMapTopologyAdapter) GetNode ¶
func (nmta *NodeMapTopologyAdapter) GetNode(nodeID string) (model.Node, error)
GetNode 获取节点
func (*NodeMapTopologyAdapter) GetPort ¶
func (nmta *NodeMapTopologyAdapter) GetPort(portID string) (model.Port, error)
GetPort 获取端口
func (*NodeMapTopologyAdapter) GetPortsByArea ¶
func (nmta *NodeMapTopologyAdapter) GetPortsByArea(area string, ipFamily network.IPFamily) []model.Port
GetPortsByArea 获取区域端口
func (*NodeMapTopologyAdapter) IsOutsidePort ¶
func (nmta *NodeMapTopologyAdapter) IsOutsidePort(nodeID, portID string, ipFamily network.IPFamily) (bool, string)
IsOutsidePort 判断是否为Outside端口
func (*NodeMapTopologyAdapter) IsStubPort ¶
func (nmta *NodeMapTopologyAdapter) IsStubPort(nodeID, portID string, ipFamily network.IPFamily) bool
IsStubPort 判断是否为Stub端口
func (*NodeMapTopologyAdapter) ListNodes ¶
func (nmta *NodeMapTopologyAdapter) ListNodes() []model.Node
ListNodes 列出所有节点
func (*NodeMapTopologyAdapter) ListPorts ¶
func (nmta *NodeMapTopologyAdapter) ListPorts() []model.Port
ListPorts 列出所有端口
func (*NodeMapTopologyAdapter) LocateSourceNode ¶
func (nmta *NodeMapTopologyAdapter) LocateSourceNode( src network.NetworkList, options *graph.LocateOptions) (model.Node, model.Port, error)
LocateSourceNode 定位源节点
type NodeNameLocator ¶
type NodeNameLocator struct {
*BaseLocatorStrategy
}
NodeNameLocator 节点名称定位策略
func NewNodeNameLocator ¶
func NewNodeNameLocator(nodeMap *NodeMap, logger *zap.Logger) *NodeNameLocator
NewNodeNameLocator 创建节点名称定位器
func (*NodeNameLocator) CanHandle ¶
func (l *NodeNameLocator) CanHandle(req *LocateRequest) bool
CanHandle 判断是否可以处理该定位请求
func (*NodeNameLocator) Locate ¶
func (l *NodeNameLocator) Locate(req *LocateRequest) (bool, api.Node, string)
Locate 执行定位逻辑
type OrMatcher ¶
type OrMatcher struct {
Matchers []PolicyMatcher
}
保留现有的 Matcher 实现
func (OrMatcher) Match ¶
func (m OrMatcher) Match(policy firewall.FirewallPolicy) MatchResult
type OutsideNodeLocator ¶
type OutsideNodeLocator struct {
*BaseLocatorStrategy
}
OutsideNodeLocator Outside 节点定位策略
func NewOutsideNodeLocator ¶
func NewOutsideNodeLocator(nodeMap *NodeMap, logger *zap.Logger) *OutsideNodeLocator
NewOutsideNodeLocator 创建 Outside 节点定位器
func (*OutsideNodeLocator) CanHandle ¶
func (l *OutsideNodeLocator) CanHandle(req *LocateRequest) bool
CanHandle 判断是否可以处理该定位请求
func (*OutsideNodeLocator) Locate ¶
func (l *OutsideNodeLocator) Locate(req *LocateRequest) (bool, api.Node, string)
Locate 执行定位逻辑
type PolicyMatchResult ¶
type PolicyMatchResult struct {
Policy firewall.FirewallPolicy
MatchDetails map[string]MatchDetail
MatchType MatchType
MatchedAddress *network.NetworkGroup
OverallMatch bool
}
type PolicyMatcher ¶
type PolicyMatcher interface {
Match(policy firewall.FirewallPolicy) MatchResult
}
PolicyMatcher 定义了防火墙策略匹配器的接口
type PortAdapter ¶
type PortAdapter struct {
// contains filtered or unexported fields
}
PortAdapter 将nodemap.Port适配为routing.Port
func (*PortAdapter) IPAddresses ¶
func (pa *PortAdapter) IPAddresses(ipFamily network.IPFamily) []string
IPAddresses 获取IP地址列表
type PortListIsSameNodeValidator ¶
type PortListIsSameNodeValidator struct{}
type RedisClient ¶
type RedisClient interface {
Set(ctx context.Context, key string, value interface{}, expiration time.Duration) error
}
RedisClient 定义 Redis 客户端接口,用于统一不同版本的 Redis 客户端
func NewRedisV8Adapter ¶
func NewRedisV8Adapter(client *redis.Client) RedisClient
NewRedisV8Adapter 创建一个新的 redisV8Adapter
type RouteDecision ¶
type RouteDecision struct {
Timestamp time.Time `json:"timestamp"`
DecisionType string `json:"decision_type"` // 决策类型
Node string `json:"node"` // 节点名称
Port string `json:"port"` // 端口名称
VRF string `json:"vrf"` // VRF
Area string `json:"area"` // 区域
Criteria map[string]string `json:"criteria"` // 决策依据
Result string `json:"result"` // 决策结果
Reason string `json:"reason"` // 决策原因
Details map[string]string `json:"details"` // 详细信息
}
RouteDecision 路由决策信息
type RouteDecisionType ¶
type RouteDecisionType string
RouteDecisionType 路由决策类型
const ( DecisionSourceNodeLocation RouteDecisionType = "SourceNodeLocation" // 源节点定位 DecisionFunctionNodeCheck RouteDecisionType = "FunctionNodeCheck" // 功能节点检查 DecisionOutputPortMatch RouteDecisionType = "OutputPortMatch" // 输出端口匹配 DecisionAreaClassification RouteDecisionType = "AreaClassification" // 区域分类 DecisionRouteQuery RouteDecisionType = "RouteQuery" // 路由查询 DecisionNextHopSelection RouteDecisionType = "NextHopSelection" // 下一跳选择 DecisionFailure RouteDecisionType = "Failure" // 失败决策 )
type RouteHop ¶
type RouteHop struct {
InPort string `json:"in_port"` // 入接口
Node string `json:"node"` // 节点
OutPort string `json:"out_port"` // 出接口(可选)
}
RouteHop 路由跳信息
type RouteTraceEntry ¶
type RouteTraceEntry struct {
Timestamp time.Time `json:"timestamp"`
Event RouteTraceEvent `json:"event"`
IntentID string `json:"intent_id,omitempty"`
NodeName string `json:"node_name,omitempty"`
PortName string `json:"port_name,omitempty"`
VRF string `json:"vrf,omitempty"`
Path string `json:"path,omitempty"`
NextHop string `json:"next_hop,omitempty"`
OutPort string `json:"out_port,omitempty"`
Area string `json:"area,omitempty"`
Decision string `json:"decision,omitempty"`
Reason string `json:"reason,omitempty"`
Error string `json:"error,omitempty"`
Details map[string]interface{} `json:"details,omitempty"`
Duration time.Duration `json:"duration,omitempty"`
}
RouteTraceEntry 路由跟踪条目
type RouteTraceEvent ¶
type RouteTraceEvent string
RouteTraceEvent 路由跟踪事件类型
const ( EventMakeTemplatesStart RouteTraceEvent = "MakeTemplatesStart" EventMakeTemplatesEnd RouteTraceEvent = "MakeTemplatesEnd" EventTraverseStart RouteTraceEvent = "TraverseStart" EventTraverseEnd RouteTraceEvent = "TraverseEnd" EventLocateNodeStart RouteTraceEvent = "LocateNodeStart" EventLocateNodeEnd RouteTraceEvent = "LocateNodeEnd" EventRouteQueryStart RouteTraceEvent = "RouteQueryStart" EventRouteQueryEnd RouteTraceEvent = "RouteQueryEnd" EventNextHopFound RouteTraceEvent = "NextHopFound" EventOutsidePortFound RouteTraceEvent = "OutsidePortFound" EventStubPortFound RouteTraceEvent = "StubPortFound" EventLoopDetected RouteTraceEvent = "LoopDetected" EventRouteDecision RouteTraceEvent = "RouteDecision" EventNodeProcessing RouteTraceEvent = "NodeProcessing" EventPathUpdate RouteTraceEvent = "PathUpdate" )
type RouteTracer ¶
type RouteTracer struct {
// contains filtered or unexported fields
}
RouteTracer 路由跟踪器
func NewRouteTracer ¶
func NewRouteTracer(logger *zap.Logger, intent *policy.Intent) *RouteTracer
NewRouteTracer 创建新的路由跟踪器
func (*RouteTracer) AddRouteHop ¶
func (rt *RouteTracer) AddRouteHop(inPort, node, outPort string)
AddRouteHop 添加路由跳信息
func (*RouteTracer) AddRouteHopWithoutOutPort ¶
func (rt *RouteTracer) AddRouteHopWithoutOutPort(inPort, node string)
AddRouteHopWithoutOutPort 添加没有出接口的路由跳信息
func (*RouteTracer) GetExitInfoJSON ¶
func (rt *RouteTracer) GetExitInfoJSON() ([]byte, error)
GetExitInfoJSON 获取退出信息的JSON格式
func (*RouteTracer) GetRouteDecisions ¶
func (rt *RouteTracer) GetRouteDecisions() []RouteDecision
GetRouteDecisions 获取所有路由决策
func (*RouteTracer) GetRouteDecisionsJSON ¶
func (rt *RouteTracer) GetRouteDecisionsJSON() ([]byte, error)
GetRouteDecisionsJSON 获取路由决策的JSON格式
func (*RouteTracer) GetRouteHops ¶
func (rt *RouteTracer) GetRouteHops() []RouteHop
GetRouteHops 获取所有路由跳信息
func (*RouteTracer) GetRouteHopsJSON ¶
func (rt *RouteTracer) GetRouteHopsJSON() ([]byte, error)
GetRouteHopsJSON 获取路由跳信息的JSON格式
func (*RouteTracer) GetRoutePathString ¶
func (rt *RouteTracer) GetRoutePathString() string
GetRoutePathString 获取路由路径的字符串表示
func (*RouteTracer) GetTraceEntries ¶
func (rt *RouteTracer) GetTraceEntries() []RouteTraceEntry
GetTraceEntries 获取所有跟踪条目
func (*RouteTracer) GetTraceJSON ¶
func (rt *RouteTracer) GetTraceJSON() ([]byte, error)
GetTraceJSON 获取跟踪条目的JSON格式
func (*RouteTracer) GetTraceSummary ¶
func (rt *RouteTracer) GetTraceSummary() map[string]interface{}
GetTraceSummary 获取跟踪摘要
func (*RouteTracer) LogAreaClassification ¶
func (rt *RouteTracer) LogAreaClassification(node, port, vrf, area string, criteria map[string]interface{}, result, reason string)
LogAreaClassification 记录区域分类决策
func (*RouteTracer) LogDestinationNode ¶
func (rt *RouteTracer) LogDestinationNode(inPort, node string)
LogDestinationNode 记录目标节点信息(没有出接口的终点)
func (*RouteTracer) LogError ¶
func (rt *RouteTracer) LogError(event RouteTraceEvent, nodeName, errorMsg string, details map[string]interface{})
LogError 记录错误
func (*RouteTracer) LogEvent ¶
func (rt *RouteTracer) LogEvent(event RouteTraceEvent, details map[string]interface{})
LogEvent 记录路由跟踪事件
func (*RouteTracer) LogExit ¶
func (rt *RouteTracer) LogExit(reason ExitReason, node, port, vrf string, success bool, errorMsg string, details map[string]interface{})
LogExit 记录退出信息
func (*RouteTracer) LogFailure ¶
func (rt *RouteTracer) LogFailure(node, port, vrf string, failureType string, reason string, details map[string]interface{})
LogFailure 记录失败决策
func (*RouteTracer) LogFunctionNodeCheck ¶
func (rt *RouteTracer) LogFunctionNodeCheck(node, port, vrf string, isFunctionNode bool, nodeType string, result, reason string)
LogFunctionNodeCheck 记录功能节点检查决策
func (*RouteTracer) LogNextHop ¶
func (rt *RouteTracer) LogNextHop(currentNode, nextNode, nextPort, nextHopIP, outPort string)
LogNextHop 记录下一跳信息(不记录路由跳,只记录事件)
func (*RouteTracer) LogNextHopSelection ¶
func (rt *RouteTracer) LogNextHopSelection(node, port, vrf string, nextHop, nextNode, nextPort string, criteria map[string]interface{}, result, reason string)
LogNextHopSelection 记录下一跳选择决策
func (*RouteTracer) LogOutputPortMatch ¶
func (rt *RouteTracer) LogOutputPortMatch(node, inPort, outPort, vrf, area string, criteria map[string]interface{}, result, reason string)
LogOutputPortMatch 记录输出端口匹配决策
func (*RouteTracer) LogPathUpdate ¶
func (rt *RouteTracer) LogPathUpdate(path string)
LogPathUpdate 记录路径更新
func (*RouteTracer) LogRouteDecisionNew ¶
func (rt *RouteTracer) LogRouteDecisionNew(decisionType RouteDecisionType, node, port, vrf, area, result, reason string, criteria, details map[string]interface{})
LogRouteDecisionNew 记录路由决策
func (*RouteTracer) LogRouteDecisionOld ¶
func (rt *RouteTracer) LogRouteDecisionOld(nodeName, portName, vrf, decision, reason string, details map[string]interface{})
LogRouteDecisionOld 记录路由决策(旧版本,保持兼容性)
func (*RouteTracer) LogRouteHop ¶
func (rt *RouteTracer) LogRouteHop(inPort, node, outPort string)
LogRouteHop 记录完整的路由跳(推荐使用的方法)
func (*RouteTracer) LogRouteQuery ¶
func (rt *RouteTracer) LogRouteQuery(node, port, vrf string, dstNetwork string, criteria map[string]interface{}, result, reason string)
LogRouteQuery 记录路由查询决策
func (*RouteTracer) LogRouteQueryWithOutput ¶
func (rt *RouteTracer) LogRouteQueryWithOutput(node, port, vrf string, dstNetwork, outPort string, criteria map[string]interface{}, result, reason string)
LogRouteQueryWithOutput 记录路由查询决策(包含输出端口信息)
func (*RouteTracer) LogSourceNode ¶
func (rt *RouteTracer) LogSourceNode(inPort, node string)
LogSourceNode 记录源节点信息(不记录路由跳,只记录决策信息)
func (*RouteTracer) LogSourceNodeLocation ¶
func (rt *RouteTracer) LogSourceNodeLocation(node, port, vrf string, criteria map[string]interface{}, result, reason string)
LogSourceNodeLocation 记录源节点定位决策
func (*RouteTracer) LogSourceNodeLocationFailure ¶
func (rt *RouteTracer) LogSourceNodeLocationFailure(errorMsg string, criteria map[string]interface{})
LogSourceNodeLocationFailure 记录源节点定位失败决策(带详细失败原因)
func (*RouteTracer) ToRouteTraceInfo ¶
func (rt *RouteTracer) ToRouteTraceInfo() *model.RouteTraceInfo
ToRouteTraceInfo 将RouteTracer转换为API格式的RouteTraceInfo
type SecurityZoneLocator ¶
type SecurityZoneLocator struct {
*BaseLocatorStrategy
}
SecurityZoneLocator 安全区域定位策略 重新设计:对所有节点生成 AddressTable,使用最长匹配,排除默认路由
func NewSecurityZoneLocator ¶
func NewSecurityZoneLocator(nodeMap *NodeMap, logger *zap.Logger) *SecurityZoneLocator
NewSecurityZoneLocator 创建安全区域定位器
func (*SecurityZoneLocator) CanHandle ¶
func (l *SecurityZoneLocator) CanHandle(req *LocateRequest) bool
CanHandle 判断是否可以处理该定位请求
func (*SecurityZoneLocator) Locate ¶
func (l *SecurityZoneLocator) Locate(req *LocateRequest) (bool, api.Node, string)
type ServiceMatcher ¶
func (ServiceMatcher) Match ¶
func (m ServiceMatcher) Match(policy firewall.FirewallPolicy) MatchResult
type StubNodeLocator ¶
type StubNodeLocator struct {
*BaseLocatorStrategy
}
StubNodeLocator Stub 节点定位策略
func NewStubNodeLocator ¶
func NewStubNodeLocator(nodeMap *NodeMap, logger *zap.Logger) *StubNodeLocator
NewStubNodeLocator 创建 Stub 节点定位器
func (*StubNodeLocator) CanHandle ¶
func (l *StubNodeLocator) CanHandle(req *LocateRequest) bool
CanHandle 判断是否可以处理该定位请求
func (*StubNodeLocator) Locate ¶
func (l *StubNodeLocator) Locate(req *LocateRequest) (bool, api.Node, string)
Locate 执行定位逻辑
type TraverseNode ¶
type TraverseNode struct {
Node api.Node
Intent *policy.Intent
InVrf string
InPort api.Port
// Next []*TraverseNode
Neighbor map[interface{}]graph.Vertex
IPFamily network.IPFamily
Path string
Ok bool
Info string
Process *TraverseProcess
// Session api.NodeSession
TraverseOnly bool
// contains filtered or unexported fields
}
func NewTraverseNode ¶
func (*TraverseNode) AddVertex ¶
func (tn *TraverseNode) AddVertex(other graph.Vertex)
func (*TraverseNode) Flatten ¶
func (tn *TraverseNode) Flatten() []string
func (*TraverseNode) IsLoop ¶
func (tn *TraverseNode) IsLoop() bool
func (*TraverseNode) Iterator ¶
func (tn *TraverseNode) Iterator() *graph.VertexIterator
func (*TraverseNode) MarkFunctionNode ¶
func (tn *TraverseNode) MarkFunctionNode(traverseOnly bool, ctx context.Context) (processErr model.ProcessErr)
func (*TraverseNode) MarshalJSON ¶
func (tn *TraverseNode) MarshalJSON() ([]byte, error)
func (*TraverseNode) PrintCurrentPath ¶
func (tn *TraverseNode) PrintCurrentPath()
func (*TraverseNode) Run ¶
func (tn *TraverseNode) Run(traverseOnly bool, ctx context.Context) (processErr model.ProcessErr)
func (*TraverseNode) RunL3Route ¶
func (tn *TraverseNode) RunL3Route(traverseOnly bool, ctx context.Context) (processErr model.ProcessErr)
func (*TraverseNode) Vertices ¶
func (tn *TraverseNode) Vertices(key interface{}) graph.Vertex
func (*TraverseNode) WithLogger ¶
func (tn *TraverseNode) WithLogger(logger *zap.Logger)
type TraverseProcess ¶
type TraverseProcess struct {
graph.SimpleGraph
Intent *policy.Intent
IPFamily network.IPFamily
NodeMap *NodeMap
Vrf string
Gateway string
Area string
TraverseOnly bool
FuncationNodes []api.Node
Results *TraverseResult
Vertices map[interface{}]graph.Vertex
RouteTracer *RouteTracer // 添加路由跟踪器
Warnings []model.WarningInfo // 警告信息列表
// contains filtered or unexported fields
}
func (*TraverseProcess) AddF5Result ¶
func (tp *TraverseProcess) AddF5Result(node api.Node, stepProcess *processor.NodeProcessor, result lb.LBProcessResult)
func (*TraverseProcess) AddResult ¶
func (tp *TraverseProcess) AddResult(node api.Node, stepProcess *processor.NodeProcessor, cmdListList []interface{}, addtionCli []string)
func (*TraverseProcess) AddWarning ¶
func (tp *TraverseProcess) AddWarning(warning model.WarningInfo)
AddWarning 添加警告信息
func (*TraverseProcess) GetFunctionNode ¶
func (tp *TraverseProcess) GetFunctionNode(name string) api.Node
func (*TraverseProcess) GetRouteDecisions ¶
func (tp *TraverseProcess) GetRouteDecisions() []RouteDecision
GetRouteDecisions 获取路由决策信息
func (*TraverseProcess) GetRouteDecisionsJSON ¶
func (tp *TraverseProcess) GetRouteDecisionsJSON() ([]byte, error)
GetRouteDecisionsJSON 获取路由决策信息的JSON格式
func (*TraverseProcess) GetRouteHops ¶
func (tp *TraverseProcess) GetRouteHops() []RouteHop
GetRouteHops 获取路由跳信息
func (*TraverseProcess) GetRouteHopsJSON ¶
func (tp *TraverseProcess) GetRouteHopsJSON() ([]byte, error)
GetRouteHopsJSON 获取路由跳信息的JSON格式
func (*TraverseProcess) GetRoutePathString ¶
func (tp *TraverseProcess) GetRoutePathString() string
GetRoutePathString 获取路由路径字符串
func (*TraverseProcess) GetRouteTraceJSON ¶
func (tp *TraverseProcess) GetRouteTraceJSON() ([]byte, error)
GetRouteTraceJSON 获取路由跟踪的JSON数据
func (*TraverseProcess) GetRouteTraceSummary ¶
func (tp *TraverseProcess) GetRouteTraceSummary() map[string]interface{}
GetRouteTraceSummary 获取路由跟踪摘要
func (*TraverseProcess) LogPathUpdate ¶
func (tp *TraverseProcess) LogPathUpdate(path string)
LogPathUpdate 记录路径更新
func (*TraverseProcess) LogRouteDecision ¶
func (tp *TraverseProcess) LogRouteDecision(nodeName, portName, vrf, decision, reason string, details map[string]interface{})
LogRouteDecision 记录路由决策
func (*TraverseProcess) MarshalJSON ¶
func (tp *TraverseProcess) MarshalJSON() ([]byte, error)
func (*TraverseProcess) PrintRouteTrace ¶
func (tp *TraverseProcess) PrintRouteTrace()
PrintRouteTrace 打印路由跟踪信息
func (*TraverseProcess) PushFunctionNode ¶
func (tp *TraverseProcess) PushFunctionNode(n api.Node)
func (*TraverseProcess) Traverse ¶
func (tp *TraverseProcess) Traverse(ctx context.Context)
NodeMap路由和策略匹配的入口
func (*TraverseProcess) WithIntent ¶
func (tp *TraverseProcess) WithIntent(intent *policy.Intent) *TraverseProcess
func (*TraverseProcess) WithLogger ¶
func (tp *TraverseProcess) WithLogger(logger *zap.Logger)
type TraverseResult ¶
type TraverseResult struct {
Items []*TraverseResultItem
// contains filtered or unexported fields
}
func (*TraverseResult) Execute ¶
func (tr *TraverseResult) Execute(session api.NodeSession)
func (*TraverseResult) GetErr ¶
func (tr *TraverseResult) GetErr() model.ProcessErr
func (*TraverseResult) GetTraverseResult ¶
func (tr *TraverseResult) GetTraverseResult(nodeIp string) (matched []string, generated []string)
func (*TraverseResult) NodeList ¶
func (tr *TraverseResult) NodeList() []api.Node
type TraverseResultItem ¶
type TraverseResultItem struct {
Node api.Node
StepProcess *processor.NodeProcessor
CmdListList []interface{}
AdditionCli []string
State []string
LBResult lb.LBProcessResult
}
func (*TraverseResultItem) Execute ¶
func (ti *TraverseResultItem) Execute(deviceList []*config.DeviceConfig, task_id uint, screen chan string) (global.CmdExecuteStatusColor, string, string, error)
func (*TraverseResultItem) GenerateCli ¶
func (ti *TraverseResultItem) GenerateCli() []string
func (*TraverseResultItem) MarshalJSON ¶
func (ti *TraverseResultItem) MarshalJSON() ([]byte, error)
func (*TraverseResultItem) MatchedCli ¶
func (ti *TraverseResultItem) MatchedCli() []string
func (*TraverseResultItem) UnmarshalJSON ¶
func (ti *TraverseResultItem) UnmarshalJSON(b []byte) error
Source Files
¶
- cxmananger.go
- factory.go
- locator_strategy.go
- network_locator.go
- node_name_locator.go
- nodeconfig.go
- nodemap.go
- nodemap_validator.go
- outside_node_locator.go
- policy.go
- route_trace_example.go
- route_tracer.go
- routing_adapter.go
- security_zone_locator.go
- security_zone_matcher.go
- stub_node_locator.go
- stubinfo.go
- traverse.go
- traverse_graph.go
Directories
¶
| Path | Synopsis |
|---|---|
|
fw/dptech/example
command
|
|
|
fw/forti/example
command
|
|
|
fw/sangfor/example
command
|
|
|
fw/usg/example
command
|
|
|
nodemap_example
command
|
|
|
routing
command
|
|
|
sangfor/cmd
command
|
|
|
sangfor_example
command
|
|
|
usg_example
command
|
|
|
tests
|
|