Generate creates the complete bpftrace script.
()
| 23 | |
| 24 | // Generate creates the complete bpftrace script. |
| 25 | func (g *ScriptGenerator) Generate() string { |
| 26 | var sb strings.Builder |
| 27 | |
| 28 | // Write script header |
| 29 | sb.WriteString(g.generateHeader()) |
| 30 | |
| 31 | // Write BEGIN block |
| 32 | sb.WriteString(g.generateBeginBlock()) |
| 33 | |
| 34 | // Conditionally write probes based on config |
| 35 | if g.config.EnableDrops { |
| 36 | sb.WriteString(g.generateDropTracepoint()) |
| 37 | } |
| 38 | |
| 39 | if g.config.EnableRST { |
| 40 | sb.WriteString(g.generateRSTTracepoints()) |
| 41 | } |
| 42 | |
| 43 | if g.config.EnableErrors { |
| 44 | sb.WriteString(g.generateSocketErrorTracepoint()) |
| 45 | } |
| 46 | |
| 47 | if g.config.EnableRetransmits { |
| 48 | sb.WriteString(g.generateRetransmitTracepoint()) |
| 49 | } |
| 50 | |
| 51 | if g.config.EnableNfqueueDrops { |
| 52 | sb.WriteString(g.generateNfqueueDropProbe()) |
| 53 | } |
| 54 | |
| 55 | // Write END block |
| 56 | sb.WriteString(g.generateEndBlock()) |
| 57 | |
| 58 | return sb.String() |
| 59 | } |
| 60 | |
| 61 | // generateHeader creates the script header with comments. |
| 62 | // Note: No #include directives - bpftrace uses BTF for struct access. |