summaryrefslogtreecommitdiffhomepage
path: root/table/vrf.go
diff options
context:
space:
mode:
Diffstat (limited to 'table/vrf.go')
-rw-r--r--table/vrf.go28
1 files changed, 16 insertions, 12 deletions
diff --git a/table/vrf.go b/table/vrf.go
index 16e02ed4..c8fc2a16 100644
--- a/table/vrf.go
+++ b/table/vrf.go
@@ -1,4 +1,4 @@
-// Copyright (C) 2014 Nippon Telegraph and Telephone Corporation.
+// Copyright (C) 2014-2016 Nippon Telegraph and Telephone Corporation.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@@ -16,7 +16,6 @@
package table
import (
- api "github.com/osrg/gobgp/api"
"github.com/osrg/gobgp/packet/bgp"
)
@@ -28,21 +27,26 @@ type Vrf struct {
LabelMap map[string]uint32
}
-func (v *Vrf) ToApiStruct() *api.Vrf {
- f := func(rts []bgp.ExtendedCommunityInterface) [][]byte {
- ret := make([][]byte, 0, len(rts))
- for _, rt := range rts {
- b, _ := rt.Serialize()
- ret = append(ret, b)
+func (v *Vrf) Clone() *Vrf {
+ f := func(rt []bgp.ExtendedCommunityInterface) []bgp.ExtendedCommunityInterface {
+ l := make([]bgp.ExtendedCommunityInterface, 0, len(rt))
+ for _, v := range rt {
+ l = append(l, v)
}
- return ret
+ return l
}
- rd, _ := v.Rd.Serialize()
- return &api.Vrf{
+ return &Vrf{
Name: v.Name,
- Rd: rd,
+ Rd: v.Rd,
ImportRt: f(v.ImportRt),
ExportRt: f(v.ExportRt),
+ LabelMap: func() map[string]uint32 {
+ m := make(map[string]uint32)
+ for k, v := range v.LabelMap {
+ m[k] = v
+ }
+ return m
+ }(),
}
}