Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var InjectPacketCmd = &cobra.Command{ Use: "inject-packet", Short: "inject packet", Long: "inject packet", SilenceUsage: false, Run: func(cmd *cobra.Command, args []string) { pir, err := GetPacketInjectRequest() if err != nil { fmt.Fprintf(os.Stderr, "%s\n", err) cmd.Usage() os.Exit(1) } if ifName == "" { if ifName = getNameFromMac(srcMAC); ifName == "" { fmt.Fprintf(os.Stderr, "Could not find interface with MAC %s", srcMAC) os.Exit(1) } } rawSocket, err := common.NewRawSocket(ifName, common.OnlyIPPackets) if err != nil { fmt.Fprintf(os.Stderr, "Failed to open socket for interface %s, err: %s\n", ifName, err) os.Exit(1) } defer rawSocket.Close() var packetForger pi.PacketForger if len(pir.Pcap) > 0 { packetForger, err = pi.NewPcapPacketGenerator(pir) } else { packetForger, err = pi.NewForgedPacketGenerator(pir, encapType) } if err != nil { fmt.Fprintf(os.Stderr, "Failed to create packet generator for interface %s, err: %s\n", ifName, err) os.Exit(1) } defer packetForger.Close() lastPacketCount := 0 showPacketCount := func() { if lastPacketCount != 0 { fmt.Fprintf(os.Stderr, "%d packet(s) injected on interface %s\n", lastPacketCount, ifName) } lastPacketCount = 0 } debouncer := common.NewDebouncer(time.Second, showPacketCount) debouncer.Start() defer debouncer.Stop() packetCount := 0 for packet := range packetForger.PacketSource() { if packet == nil { break } if _, err := rawSocket.Write(packet.Data()); err != nil { fmt.Fprintf(os.Stderr, "Write error on interface %s: %s\n", ifName, err) os.Exit(1) } packetCount++ lastPacketCount++ debouncer.Call() } showPacketCount() fmt.Fprintf(os.Stderr, "%d packet(s) injected successfully\n", packetCount) }, }
InjectPacketCmd injects packets without using any Skydive analyzer/agent
Functions ¶
func AddInjectPacketInjectFlags ¶
AddInjectPacketInjectFlags add the command line flags for a packet injection
func GetPacketInjectRequest ¶
func GetPacketInjectRequest() (*pi.PacketInjectionRequest, error)
GetPacketInjectRequest returns a packet injection request parsed from the command line flags
Types ¶
This section is empty.
Source Files
¶
- standalone.go
Click to show internal directories.
Click to hide internal directories.