rule_item_network_is_constrained.go 698 B

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