github.com/cilium/cilium@v1.16.2/tools/alignchecker/main.go (about) 1 // SPDX-License-Identifier: Apache-2.0 2 // Copyright Authors of Cilium 3 4 package main 5 6 import ( 7 "fmt" 8 "os" 9 10 datapathchecker "github.com/cilium/cilium/pkg/datapath/alignchecker" 11 monitorchecker "github.com/cilium/cilium/pkg/monitor/alignchecker" 12 ) 13 14 func main() { 15 if len(os.Args) != 2 { 16 fmt.Fprintf(os.Stderr, "usage: %s <path>\n", os.Args[0]) 17 os.Exit(1) 18 } 19 20 bpfObjPath := os.Args[1] 21 if _, err := os.Stat(bpfObjPath); err != nil { 22 fmt.Fprintf(os.Stderr, "Cannot check alignment against %s: %s\n", bpfObjPath, err) 23 os.Exit(1) 24 } 25 if err := datapathchecker.CheckStructAlignments(bpfObjPath); err != nil { 26 fmt.Fprintf(os.Stderr, "C and Go structs alignment check in datapath failed: %s\n", err) 27 os.Exit(1) 28 } 29 if err := monitorchecker.CheckStructAlignments(bpfObjPath); err != nil { 30 fmt.Fprintf(os.Stderr, "C and Go structs alignment check in monitor failed: %s\n", err) 31 os.Exit(1) 32 } 33 fmt.Fprintf(os.Stdout, "OK\n") 34 }