| // +build linux freebsd openbsd |
| |
| // Package kernel provides helper function to get, parse and compare kernel |
| // versions for different platforms. |
| package kernel // import "github.com/docker/docker/pkg/parsers/kernel" |
| |
| import ( |
| "bytes" |
| |
| "github.com/sirupsen/logrus" |
| ) |
| |
| // GetKernelVersion gets the current kernel version. |
| func GetKernelVersion() (*VersionInfo, error) { |
| uts, err := uname() |
| if err != nil { |
| return nil, err |
| } |
| |
| // Remove the \x00 from the release for Atoi to parse correctly |
| return ParseRelease(string(uts.Release[:bytes.IndexByte(uts.Release[:], 0)])) |
| } |
| |
| // CheckKernelVersion checks if current kernel is newer than (or equal to) |
| // the given version. |
| func CheckKernelVersion(k, major, minor int) bool { |
| if v, err := GetKernelVersion(); err != nil { |
| logrus.Warnf("error getting kernel version: %s", err) |
| } else { |
| if CompareKernelVersion(*v, VersionInfo{Kernel: k, Major: major, Minor: minor}) < 0 { |
| return false |
| } |
| } |
| return true |
| } |