@@ -269,11 +269,6 @@ func (cs *CollectionSpec) LoadAndAssign(to interface{}, opts *CollectionOptions)
269
269
}
270
270
defer loader .close ()
271
271
272
- // initialize struct_ops maps
273
- if err := loader .initKernStructOps (loader .coll ); err != nil {
274
- return err
275
- }
276
-
277
272
// Support assigning Programs and Maps, lazy-loading the required objects.
278
273
assignedMaps := make (map [string ]bool )
279
274
assignedProgs := make (map [string ]bool )
@@ -372,6 +367,11 @@ func NewCollectionWithOptions(spec *CollectionSpec, opts CollectionOptions) (*Co
372
367
}
373
368
defer loader .close ()
374
369
370
+ // initialize struct_ops maps
371
+ if err := loader .initKernStructOps (); err != nil {
372
+ return nil , err
373
+ }
374
+
375
375
// Create maps first, as their fds need to be linked into programs.
376
376
for mapName := range spec .Maps {
377
377
if _ , err := loader .loadMap (mapName ); err != nil {
@@ -767,7 +767,6 @@ func (cl *collectionLoader) copyDataMember(
767
767
structOps * structOpsSpec ,
768
768
structOpsMeta * structOpsMeta ,
769
769
ms * MapSpec ,
770
- cs * CollectionSpec ,
771
770
) error {
772
771
memberName := member .Name
773
772
memberOff := member .Offset / 8
@@ -819,7 +818,7 @@ func (cl *collectionLoader) copyDataMember(
819
818
return nil
820
819
}
821
820
822
- ps , ok := cs .Programs [fnName ]
821
+ ps , ok := cl . coll .Programs [fnName ]
823
822
if ! ok {
824
823
return fmt .Errorf ("Program %s is not found in CollectionSpec" , fnName )
825
824
}
@@ -857,8 +856,8 @@ func (cl *collectionLoader) copyDataMember(
857
856
858
857
// initKernStructOps collects typed metadata for struct_ops maps from the CollectionSpec.
859
858
// It does not modify specs nor create kernel objects. Value population happens in a follow-up PR.
860
- func (cl * collectionLoader ) initKernStructOps (cs * CollectionSpec ) error {
861
- for _ , ms := range cs .Maps {
859
+ func (cl * collectionLoader ) initKernStructOps () error {
860
+ for _ , ms := range cl . coll .Maps {
862
861
if ms .Type != StructOpsMap {
863
862
continue
864
863
}
@@ -901,7 +900,7 @@ func (cl *collectionLoader) initKernStructOps(cs *CollectionSpec) error {
901
900
kernTypes ,
902
901
structOps ,
903
902
structOpsMeta ,
904
- ms , cs ,
903
+ ms ,
905
904
); err != nil {
906
905
return err
907
906
}
0 commit comments