package router import ( "github.com/weaveworks/go-odp/odp" ) // ODP admin functionality func CreateDatapath(dpname string) error { dpif, err := odp.NewDpif() if err != nil { return err } defer dpif.Close() _, err = dpif.CreateDatapath(dpname) if err != nil && !odp.IsDatapathNameAlreadyExistsError(err) { return err } return nil } func DeleteDatapath(dpname string) error { dpif, err := odp.NewDpif() if err != nil { return err } defer dpif.Close() dp, err := dpif.LookupDatapath(dpname) if err != nil { if odp.IsNoSuchDatapathError(err) { return nil } return err } return dp.Delete() } func AddDatapathInterface(dpname string, ifname string) error { dpif, err := odp.NewDpif() if err != nil { return err } defer dpif.Close() dp, err := dpif.LookupDatapath(dpname) if err != nil { return err } _, err = dp.CreateVport(odp.NewNetdevVportSpec(ifname)) return err }