New returns an unopened Backend.
(cfg Config)
| 67 | |
| 68 | // New returns an unopened Backend. |
| 69 | func New(cfg Config) *Backend { |
| 70 | if cfg.QueueNum == 0 { |
| 71 | cfg.QueueNum = DefaultQueueNum |
| 72 | } |
| 73 | if cfg.MaxPacketLen == 0 { |
| 74 | cfg.MaxPacketLen = defaultMaxPacketLen |
| 75 | } |
| 76 | return &Backend{ |
| 77 | cfg: cfg, |
| 78 | rawSock: -1, |
| 79 | packets: make(chan platform.Packet, 256), |
| 80 | closed: make(chan struct{}), |
| 81 | } |
| 82 | } |
| 83 | |
| 84 | // Open installs iptables rules, opens an NFQUEUE reader, and opens a raw |
| 85 | // socket for Inject(). It is a configuration error to call Open twice. |
no outgoing calls