@@ -95,6 +95,7 @@ var filterFlags = map[string]nodeFilterC{
95
95
"-min-age" : {1 , minAgeFilter },
96
96
"-eth-network" : {1 , ethFilter },
97
97
"-les-server" : {0 , lesFilter },
98
+ "-snap" : {0 , snapFilter },
98
99
}
99
100
100
101
func parseFilters (args []string ) ([]nodeFilter , error ) {
@@ -104,15 +105,15 @@ func parseFilters(args []string) ([]nodeFilter, error) {
104
105
if ! ok {
105
106
return nil , fmt .Errorf ("invalid filter %q" , args [0 ])
106
107
}
107
- if len (args ) < fc .narg {
108
- return nil , fmt .Errorf ("filter %q wants %d arguments, have %d" , args [0 ], fc .narg , len (args ))
108
+ if len (args )- 1 < fc .narg {
109
+ return nil , fmt .Errorf ("filter %q wants %d arguments, have %d" , args [0 ], fc .narg , len (args )- 1 )
109
110
}
110
- filter , err := fc .fn (args [1 : ])
111
+ filter , err := fc .fn (args [1 : 1 + fc . narg ])
111
112
if err != nil {
112
113
return nil , fmt .Errorf ("%s: %v" , args [0 ], err )
113
114
}
114
115
filters = append (filters , filter )
115
- args = args [fc .narg + 1 :]
116
+ args = args [1 + fc .narg :]
116
117
}
117
118
return filters , nil
118
119
}
@@ -191,3 +192,13 @@ func lesFilter(args []string) (nodeFilter, error) {
191
192
}
192
193
return f , nil
193
194
}
195
+
196
+ func snapFilter (args []string ) (nodeFilter , error ) {
197
+ f := func (n nodeJSON ) bool {
198
+ var snap struct {
199
+ _ []rlp.RawValue `rlp:"tail"`
200
+ }
201
+ return n .N .Load (enr .WithEntry ("snap" , & snap )) == nil
202
+ }
203
+ return f , nil
204
+ }
0 commit comments