| 154 | } |
| 155 | |
| 156 | func NewTable(b *bytes.Buffer) (t Table, err error) { |
| 157 | defs, err := Parse(b) |
| 158 | if err != nil { |
| 159 | return nil, err |
| 160 | } |
| 161 | |
| 162 | t = make(Table) |
| 163 | for _, d := range defs { |
| 164 | switch d.Cmd { |
| 165 | case RouteAddCmd: |
| 166 | err = t.addRoute(d) |
| 167 | case RouteDelCmd: |
| 168 | err = t.delRoute(d) |
| 169 | case RouteWeightCmd: |
| 170 | err = t.weighRoute(d) |
| 171 | default: |
| 172 | err = fmt.Errorf("route: invalid command: %s", d.Cmd) |
| 173 | } |
| 174 | if err != nil { |
| 175 | return nil, err |
| 176 | } |
| 177 | } |
| 178 | |
| 179 | // Sort the route table for each hostname |
| 180 | for _, h := range t { |
| 181 | sort.Sort(h) |
| 182 | } |
| 183 | |
| 184 | return t, nil |
| 185 | } |
| 186 | |
| 187 | func NewTableCustom(defs *[]RouteDef) (t Table, err error) { |
| 188 | |