Add traffic-control long-tail: mangle/accounting/tc_*
Storage + CRUD (migration 0008, model, id-keyed store, REST handlers) + compiler rendering for mangle, accounting, and tc_devices/tc_classes/tc_filters/ tc_interfaces/tc_priorities, each owned by a device. (Nested tc option structs deferred.)
This commit is contained in:
@@ -45,6 +45,13 @@ type Input struct {
|
||||
ProxyNDP []model.ProxyEntry
|
||||
ArpRules []model.ArpRule
|
||||
Maclist []model.MaclistEntry
|
||||
Mangle []model.MangleRule
|
||||
Accounting []model.AccountingRule
|
||||
TCDevices []model.TCDevice
|
||||
TCClasses []model.TCClass
|
||||
TCFilters []model.TCFilter
|
||||
TCInterfaces []model.TCInterface
|
||||
TCPriorities []model.TCPriority
|
||||
}
|
||||
|
||||
// RenderedConfig is the per-device output served to the agent.
|
||||
@@ -72,6 +79,13 @@ type RenderedConfig struct {
|
||||
ProxyNDP []RenderedProxy `yaml:"proxy_ndp,omitempty" json:"proxy_ndp,omitempty"`
|
||||
ArpRules []RenderedArpRule `yaml:"arp_rules,omitempty" json:"arp_rules,omitempty"`
|
||||
Maclist []RenderedMaclist `yaml:"maclist,omitempty" json:"maclist,omitempty"`
|
||||
Mangle []RenderedMangle `yaml:"mangle,omitempty" json:"mangle,omitempty"`
|
||||
Accounting []RenderedAccounting `yaml:"accounting,omitempty" json:"accounting,omitempty"`
|
||||
TCDevices []RenderedTCDevice `yaml:"tc_devices,omitempty" json:"tc_devices,omitempty"`
|
||||
TCClasses []RenderedTCClass `yaml:"tc_classes,omitempty" json:"tc_classes,omitempty"`
|
||||
TCFilters []RenderedTCFilter `yaml:"tc_filters,omitempty" json:"tc_filters,omitempty"`
|
||||
TCInterfaces []RenderedTCInterface `yaml:"tc_interfaces,omitempty" json:"tc_interfaces,omitempty"`
|
||||
TCPriorities []RenderedTCPriority `yaml:"tc_priorities,omitempty" json:"tc_priorities,omitempty"`
|
||||
}
|
||||
|
||||
// RenderedSNAT is a resolved SNAT/masquerade rule: source addresses masqueraded
|
||||
@@ -220,6 +234,7 @@ func Render(in Input) (*RenderedConfig, error) {
|
||||
// Per-device long-tail sections owned by this device.
|
||||
renderPerDevice(in, out)
|
||||
renderPerDeviceL2(in, out)
|
||||
renderTraffic(in, out)
|
||||
|
||||
return out, nil
|
||||
}
|
||||
@@ -480,5 +495,26 @@ func Compile(ctx context.Context, s *store.Store, device string) (*RenderedConfi
|
||||
if in.Maclist, err = s.ListMaclist(ctx); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if in.Mangle, err = s.ListMangle(ctx); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if in.Accounting, err = s.ListAccounting(ctx); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if in.TCDevices, err = s.ListTCDevices(ctx); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if in.TCClasses, err = s.ListTCClasses(ctx); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if in.TCFilters, err = s.ListTCFilters(ctx); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if in.TCInterfaces, err = s.ListTCInterfaces(ctx); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if in.TCPriorities, err = s.ListTCPriorities(ctx); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return Render(in)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user