go.ligato.io/vpp-agent/v3@v3.5.0/plugins/linux/l3plugin/options.go (about) 1 package l3plugin 2 3 import ( 4 "go.ligato.io/cn-infra/v2/config" 5 "go.ligato.io/cn-infra/v2/logging" 6 7 "go.ligato.io/vpp-agent/v3/plugins/kvscheduler" 8 "go.ligato.io/vpp-agent/v3/plugins/linux/ifplugin" 9 "go.ligato.io/vpp-agent/v3/plugins/linux/nsplugin" 10 "go.ligato.io/vpp-agent/v3/plugins/netalloc" 11 ) 12 13 // DefaultPlugin is a default instance of IfPlugin. 14 var DefaultPlugin = *NewPlugin() 15 16 // NewPlugin creates a new Plugin with the provides Options 17 func NewPlugin(opts ...Option) *L3Plugin { 18 p := &L3Plugin{} 19 20 p.PluginName = "linux-l3plugin" 21 p.KVScheduler = &kvscheduler.DefaultPlugin 22 p.NsPlugin = &nsplugin.DefaultPlugin 23 p.AddrAlloc = &netalloc.DefaultPlugin 24 p.IfPlugin = &ifplugin.DefaultPlugin 25 26 for _, o := range opts { 27 o(p) 28 } 29 30 if p.Log == nil { 31 p.Log = logging.ForPlugin(p.String()) 32 } 33 if p.Cfg == nil { 34 p.Cfg = config.ForPlugin(p.String(), 35 config.WithCustomizedFlag(config.FlagName(p.String()), "linux-l3plugin.conf"), 36 ) 37 } 38 39 return p 40 } 41 42 // Option is a function that can be used in NewPlugin to customize Plugin. 43 type Option func(*L3Plugin) 44 45 // UseDeps returns Option that can inject custom dependencies. 46 func UseDeps(f func(*Deps)) Option { 47 return func(p *L3Plugin) { 48 f(&p.Deps) 49 } 50 }