(ctx context.Context, linkAttrs map[uint16]nlmsg.BytesView, linkInfoAttrs map[uint16]nlmsg.BytesView)
| 518 | } |
| 519 | |
| 520 | func (s *Stack) newBridge(ctx context.Context, linkAttrs map[uint16]nlmsg.BytesView, linkInfoAttrs map[uint16]nlmsg.BytesView) *syserr.Error { |
| 521 | dstNs, sysErr := s.lockSrcAndDst(ctx, linkAttrs) |
| 522 | if sysErr != nil { |
| 523 | return sysErr |
| 524 | } |
| 525 | defer s.unlockSrcAndDst(ctx, dstNs) |
| 526 | |
| 527 | ifname := "" |
| 528 | |
| 529 | if v, ok := linkAttrs[linux.IFLA_IFNAME]; ok { |
| 530 | ifname = v.String() |
| 531 | } |
| 532 | ep := stack.NewBridgeEndpoint(defaultMTU) |
| 533 | id := s.Stack.NextNICID() |
| 534 | err := s.Stack.CreateNICWithOptions(id, ep, stack.NICOptions{ |
| 535 | Name: ifname, |
| 536 | }) |
| 537 | if err != nil { |
| 538 | return syserr.TranslateNetstackError(err) |
| 539 | } |
| 540 | if err := s.setLinkLocked(ctx, id, linkAttrs, dstNs); err != nil { |
| 541 | return err |
| 542 | } |
| 543 | |
| 544 | return nil |
| 545 | } |
| 546 | |
| 547 | func (s *Stack) newInterface(ctx context.Context, msg *nlmsg.Message, linkAttrs map[uint16]nlmsg.BytesView) *syserr.Error { |
| 548 | var ( |
no test coverage detected