rule_item_network_is_expensive.go 682 B

1234567891011121314151617181920212223242526272829
  1. package rule
  2. import (
  3. "github.com/sagernet/sing-box/adapter"
  4. )
  5. var _ RuleItem = (*NetworkIsExpensiveItem)(nil)
  6. type NetworkIsExpensiveItem struct {
  7. networkManager adapter.NetworkManager
  8. }
  9. func NewNetworkIsExpensiveItem(networkManager adapter.NetworkManager) *NetworkIsExpensiveItem {
  10. return &NetworkIsExpensiveItem{
  11. networkManager: networkManager,
  12. }
  13. }
  14. func (r *NetworkIsExpensiveItem) Match(metadata *adapter.InboundContext) bool {
  15. networkInterface := r.networkManager.DefaultNetworkInterface()
  16. if networkInterface == nil {
  17. return false
  18. }
  19. return networkInterface.Expensive
  20. }
  21. func (r *NetworkIsExpensiveItem) String() string {
  22. return "network_is_expensive=true"
  23. }