github.com/cloud-foundations/dominator@v0.0.0-20221004181915-6e4fee580046/hypervisor/rpcd/importLocalVm.go (about) 1 package rpcd 2 3 import ( 4 "net" 5 6 "github.com/Cloud-Foundations/Dominator/lib/errors" 7 "github.com/Cloud-Foundations/Dominator/lib/srpc" 8 "github.com/Cloud-Foundations/Dominator/proto/hypervisor" 9 ) 10 11 func (t *srpcType) ImportLocalVm(conn *srpc.Conn, 12 request hypervisor.ImportLocalVmRequest, 13 reply *hypervisor.ImportLocalVmResponse) error { 14 *reply = hypervisor.ImportLocalVmResponse{ 15 errors.ErrorToString(t.importLocalVm(conn, request))} 16 return nil 17 } 18 19 func (t *srpcType) importLocalVm(conn *srpc.Conn, 20 request hypervisor.ImportLocalVmRequest) error { 21 if err := testIfLoopback(conn); err != nil { 22 return err 23 } 24 return t.manager.ImportLocalVm(conn.GetAuthInformation(), request) 25 } 26 27 func testIfLoopback(conn *srpc.Conn) error { 28 host, _, err := net.SplitHostPort(conn.RemoteAddr()) 29 if err != nil { 30 return err 31 } 32 if !net.ParseIP(host).IsLoopback() { 33 return errors.New("local connection required") 34 } 35 return nil 36 }