Add Devfs_ruleset property to reflect generated RS
This commit is contained in:
36
jail/main.go
36
jail/main.go
@ -14,16 +14,17 @@ package jail
|
||||
*/
|
||||
import "C"
|
||||
import (
|
||||
"strconv"
|
||||
"strconv"
|
||||
// "syscall"
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
|
||||
type Jail struct {
|
||||
Name string
|
||||
Jid int
|
||||
Path string
|
||||
Name string
|
||||
Jid int
|
||||
Path string
|
||||
Devfs_ruleset int
|
||||
}
|
||||
|
||||
|
||||
@ -33,8 +34,8 @@ func GetJails() ([]Jail, error) {
|
||||
var jl Jail
|
||||
var err error
|
||||
|
||||
// Make "params" a list of 4 jails parameters
|
||||
params := make([]C.struct_jailparam, 4)
|
||||
// Make "params" a list of 5 jails parameters
|
||||
params := make([]C.struct_jailparam, 5)
|
||||
|
||||
// initialize parameter names
|
||||
csname := C.CString("name")
|
||||
@ -43,27 +44,31 @@ func GetJails() ([]Jail, error) {
|
||||
defer C.free(unsafe.Pointer(csjid))
|
||||
cspath := C.CString("path")
|
||||
defer C.free(unsafe.Pointer(cspath))
|
||||
csdevfsrs := C.CString("devfs_ruleset")
|
||||
defer C.free(unsafe.Pointer(csdevfsrs))
|
||||
cslastjid := C.CString("lastjid")
|
||||
defer C.free(unsafe.Pointer(cslastjid))
|
||||
|
||||
|
||||
// initialize params struct with parameter names
|
||||
C.jailparam_init(¶ms[0], csname)
|
||||
C.jailparam_init(¶ms[1], csjid)
|
||||
C.jailparam_init(¶ms[2], cspath)
|
||||
C.jailparam_init(¶ms[3], csdevfsrs)
|
||||
|
||||
// The key to retrieve jail. lastjid = 0 returns first jail and its jid as jailparam_get return value
|
||||
C.jailparam_init(¶ms[3], cslastjid)
|
||||
C.jailparam_init(¶ms[4], cslastjid)
|
||||
|
||||
lastjailid := 0
|
||||
cslastjidval := C.CString(strconv.Itoa(lastjailid))
|
||||
defer C.free(unsafe.Pointer(cslastjidval))
|
||||
|
||||
C.jailparam_import(¶ms[3], cslastjidval)
|
||||
C.jailparam_import(¶ms[4], cslastjidval)
|
||||
|
||||
// loop on existing jails
|
||||
for lastjailid >= 0 {
|
||||
// get parameter values
|
||||
lastjailid = int(C.jailparam_get(¶ms[0], 4, 0))
|
||||
lastjailid = int(C.jailparam_get(¶ms[0], 5, 0))
|
||||
if lastjailid > 0 {
|
||||
nametmp := C.jailparam_export(¶ms[0])
|
||||
jl.Name = C.GoString(nametmp)
|
||||
@ -75,23 +80,28 @@ func GetJails() ([]Jail, error) {
|
||||
// Memory mgmt : Non gere par Go
|
||||
C.free(unsafe.Pointer(jidtmp))
|
||||
|
||||
pathtmp := C.jailparam_export(¶ms[2])
|
||||
pathtmp := C.jailparam_export(¶ms[2])
|
||||
jl.Path = C.GoString(pathtmp)
|
||||
// Memory mgmt : Non gere par Go
|
||||
C.free(unsafe.Pointer(pathtmp))
|
||||
|
||||
drstmp := C.jailparam_export(¶ms[3])
|
||||
jl.Devfs_ruleset, _ = strconv.Atoi(C.GoString(drstmp))
|
||||
// Memory mgmt : Non gere par Go
|
||||
C.free(unsafe.Pointer(drstmp))
|
||||
|
||||
jls = append(jls, jl)
|
||||
//log.Debug("Got jid " + strconv.Itoa(jl.jid) + " with name " + jl.name)
|
||||
|
||||
// Prepare next loop iteration
|
||||
cslastjidval := C.CString(strconv.Itoa(lastjailid))
|
||||
defer C.free(unsafe.Pointer(cslastjidval))
|
||||
C.jailparam_import(¶ms[3], cslastjidval)
|
||||
C.jailparam_import(¶ms[4], cslastjidval)
|
||||
}
|
||||
}
|
||||
|
||||
// Free 4 items of params list
|
||||
C.jailparam_free(¶ms[0], 4)
|
||||
// Free 5 items of params list
|
||||
C.jailparam_free(¶ms[0], 5)
|
||||
|
||||
return jls, err
|
||||
}
|
||||
|
Reference in New Issue
Block a user