vendor: update go-systemd, probing
This commit is contained in:
157
cmd/vendor/github.com/coreos/go-systemd/util/util.go
generated
vendored
157
cmd/vendor/github.com/coreos/go-systemd/util/util.go
generated
vendored
@ -18,96 +18,23 @@
|
|||||||
// than linking against them.
|
// than linking against them.
|
||||||
package util
|
package util
|
||||||
|
|
||||||
// #include <stdlib.h>
|
|
||||||
// #include <sys/types.h>
|
|
||||||
// #include <unistd.h>
|
|
||||||
//
|
|
||||||
// int
|
|
||||||
// my_sd_pid_get_owner_uid(void *f, pid_t pid, uid_t *uid)
|
|
||||||
// {
|
|
||||||
// int (*sd_pid_get_owner_uid)(pid_t, uid_t *);
|
|
||||||
//
|
|
||||||
// sd_pid_get_owner_uid = (int (*)(pid_t, uid_t *))f;
|
|
||||||
// return sd_pid_get_owner_uid(pid, uid);
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// int
|
|
||||||
// my_sd_pid_get_unit(void *f, pid_t pid, char **unit)
|
|
||||||
// {
|
|
||||||
// int (*sd_pid_get_unit)(pid_t, char **);
|
|
||||||
//
|
|
||||||
// sd_pid_get_unit = (int (*)(pid_t, char **))f;
|
|
||||||
// return sd_pid_get_unit(pid, unit);
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// int
|
|
||||||
// my_sd_pid_get_slice(void *f, pid_t pid, char **slice)
|
|
||||||
// {
|
|
||||||
// int (*sd_pid_get_slice)(pid_t, char **);
|
|
||||||
//
|
|
||||||
// sd_pid_get_slice = (int (*)(pid_t, char **))f;
|
|
||||||
// return sd_pid_get_slice(pid, slice);
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// int
|
|
||||||
// am_session_leader()
|
|
||||||
// {
|
|
||||||
// return (getsid(0) == getpid());
|
|
||||||
// }
|
|
||||||
import "C"
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
"syscall"
|
|
||||||
"unsafe"
|
|
||||||
|
|
||||||
"github.com/coreos/pkg/dlopen"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var libsystemdNames = []string{
|
var (
|
||||||
// systemd < 209
|
ErrNoCGO = fmt.Errorf("go-systemd built with CGO disabled")
|
||||||
"libsystemd-login.so.0",
|
)
|
||||||
"libsystemd-login.so",
|
|
||||||
|
|
||||||
// systemd >= 209 merged libsystemd-login into libsystemd proper
|
|
||||||
"libsystemd.so.0",
|
|
||||||
"libsystemd.so",
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetRunningSlice attempts to retrieve the name of the systemd slice in which
|
// GetRunningSlice attempts to retrieve the name of the systemd slice in which
|
||||||
// the current process is running.
|
// the current process is running.
|
||||||
// This function is a wrapper around the libsystemd C library; if it cannot be
|
// This function is a wrapper around the libsystemd C library; if it cannot be
|
||||||
// opened, an error is returned.
|
// opened, an error is returned.
|
||||||
func GetRunningSlice() (slice string, err error) {
|
func GetRunningSlice() (string, error) {
|
||||||
var h *dlopen.LibHandle
|
return getRunningSlice()
|
||||||
h, err = dlopen.GetHandle(libsystemdNames)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
defer func() {
|
|
||||||
if err1 := h.Close(); err1 != nil {
|
|
||||||
err = err1
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
|
|
||||||
sd_pid_get_slice, err := h.GetSymbolPointer("sd_pid_get_slice")
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
var s string
|
|
||||||
sl := C.CString(s)
|
|
||||||
defer C.free(unsafe.Pointer(sl))
|
|
||||||
|
|
||||||
ret := C.my_sd_pid_get_slice(sd_pid_get_slice, 0, &sl)
|
|
||||||
if ret < 0 {
|
|
||||||
err = fmt.Errorf("error calling sd_pid_get_slice: %v", syscall.Errno(-ret))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
return C.GoString(sl), nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// RunningFromSystemService tries to detect whether the current process has
|
// RunningFromSystemService tries to detect whether the current process has
|
||||||
@ -125,81 +52,17 @@ func GetRunningSlice() (slice string, err error) {
|
|||||||
//
|
//
|
||||||
// This function is a wrapper around the libsystemd C library; if this is
|
// This function is a wrapper around the libsystemd C library; if this is
|
||||||
// unable to successfully open a handle to the library for any reason (e.g. it
|
// unable to successfully open a handle to the library for any reason (e.g. it
|
||||||
// cannot be found), an errr will be returned
|
// cannot be found), an error will be returned.
|
||||||
func RunningFromSystemService() (ret bool, err error) {
|
func RunningFromSystemService() (bool, error) {
|
||||||
var h *dlopen.LibHandle
|
return runningFromSystemService()
|
||||||
h, err = dlopen.GetHandle(libsystemdNames)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
defer func() {
|
|
||||||
if err1 := h.Close(); err1 != nil {
|
|
||||||
err = err1
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
|
|
||||||
sd_pid_get_owner_uid, err := h.GetSymbolPointer("sd_pid_get_owner_uid")
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
var uid C.uid_t
|
|
||||||
errno := C.my_sd_pid_get_owner_uid(sd_pid_get_owner_uid, 0, &uid)
|
|
||||||
serrno := syscall.Errno(-errno)
|
|
||||||
// when we're running from a unit file, sd_pid_get_owner_uid returns
|
|
||||||
// ENOENT (systemd <220) or ENXIO (systemd >=220)
|
|
||||||
switch {
|
|
||||||
case errno >= 0:
|
|
||||||
ret = false
|
|
||||||
case serrno == syscall.ENOENT, serrno == syscall.ENXIO:
|
|
||||||
// Since the implementation of sessions in systemd relies on
|
|
||||||
// the `pam_systemd` module, using the sd_pid_get_owner_uid
|
|
||||||
// heuristic alone can result in false positives if that module
|
|
||||||
// (or PAM itself) is not present or properly configured on the
|
|
||||||
// system. As such, we also check if we're the session leader,
|
|
||||||
// which should be the case if we're invoked from a unit file,
|
|
||||||
// but not if e.g. we're invoked from the command line from a
|
|
||||||
// user's login session
|
|
||||||
ret = C.am_session_leader() == 1
|
|
||||||
default:
|
|
||||||
err = fmt.Errorf("error calling sd_pid_get_owner_uid: %v", syscall.Errno(-errno))
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// CurrentUnitName attempts to retrieve the name of the systemd system unit
|
// CurrentUnitName attempts to retrieve the name of the systemd system unit
|
||||||
// from which the calling process has been invoked. It wraps the systemd
|
// from which the calling process has been invoked. It wraps the systemd
|
||||||
// `sd_pid_get_unit` call, with the same caveat: for processes not part of a
|
// `sd_pid_get_unit` call, with the same caveat: for processes not part of a
|
||||||
// systemd system unit, this function will return an error.
|
// systemd system unit, this function will return an error.
|
||||||
func CurrentUnitName() (unit string, err error) {
|
func CurrentUnitName() (string, error) {
|
||||||
var h *dlopen.LibHandle
|
return currentUnitName()
|
||||||
h, err = dlopen.GetHandle(libsystemdNames)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
defer func() {
|
|
||||||
if err1 := h.Close(); err1 != nil {
|
|
||||||
err = err1
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
|
|
||||||
sd_pid_get_unit, err := h.GetSymbolPointer("sd_pid_get_unit")
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
var s string
|
|
||||||
u := C.CString(s)
|
|
||||||
defer C.free(unsafe.Pointer(u))
|
|
||||||
|
|
||||||
ret := C.my_sd_pid_get_unit(sd_pid_get_unit, 0, &u)
|
|
||||||
if ret < 0 {
|
|
||||||
err = fmt.Errorf("error calling sd_pid_get_unit: %v", syscall.Errno(-ret))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
unit = C.GoString(u)
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// IsRunningSystemd checks whether the host was booted with systemd as its init
|
// IsRunningSystemd checks whether the host was booted with systemd as its init
|
||||||
|
174
cmd/vendor/github.com/coreos/go-systemd/util/util_cgo.go
generated
vendored
Normal file
174
cmd/vendor/github.com/coreos/go-systemd/util/util_cgo.go
generated
vendored
Normal file
@ -0,0 +1,174 @@
|
|||||||
|
// Copyright 2016 CoreOS, Inc.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
// +build cgo
|
||||||
|
|
||||||
|
package util
|
||||||
|
|
||||||
|
// #include <stdlib.h>
|
||||||
|
// #include <sys/types.h>
|
||||||
|
// #include <unistd.h>
|
||||||
|
//
|
||||||
|
// int
|
||||||
|
// my_sd_pid_get_owner_uid(void *f, pid_t pid, uid_t *uid)
|
||||||
|
// {
|
||||||
|
// int (*sd_pid_get_owner_uid)(pid_t, uid_t *);
|
||||||
|
//
|
||||||
|
// sd_pid_get_owner_uid = (int (*)(pid_t, uid_t *))f;
|
||||||
|
// return sd_pid_get_owner_uid(pid, uid);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// int
|
||||||
|
// my_sd_pid_get_unit(void *f, pid_t pid, char **unit)
|
||||||
|
// {
|
||||||
|
// int (*sd_pid_get_unit)(pid_t, char **);
|
||||||
|
//
|
||||||
|
// sd_pid_get_unit = (int (*)(pid_t, char **))f;
|
||||||
|
// return sd_pid_get_unit(pid, unit);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// int
|
||||||
|
// my_sd_pid_get_slice(void *f, pid_t pid, char **slice)
|
||||||
|
// {
|
||||||
|
// int (*sd_pid_get_slice)(pid_t, char **);
|
||||||
|
//
|
||||||
|
// sd_pid_get_slice = (int (*)(pid_t, char **))f;
|
||||||
|
// return sd_pid_get_slice(pid, slice);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// int
|
||||||
|
// am_session_leader()
|
||||||
|
// {
|
||||||
|
// return (getsid(0) == getpid());
|
||||||
|
// }
|
||||||
|
import "C"
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"syscall"
|
||||||
|
"unsafe"
|
||||||
|
|
||||||
|
"github.com/coreos/pkg/dlopen"
|
||||||
|
)
|
||||||
|
|
||||||
|
var libsystemdNames = []string{
|
||||||
|
// systemd < 209
|
||||||
|
"libsystemd-login.so.0",
|
||||||
|
"libsystemd-login.so",
|
||||||
|
|
||||||
|
// systemd >= 209 merged libsystemd-login into libsystemd proper
|
||||||
|
"libsystemd.so.0",
|
||||||
|
"libsystemd.so",
|
||||||
|
}
|
||||||
|
|
||||||
|
func getRunningSlice() (slice string, err error) {
|
||||||
|
var h *dlopen.LibHandle
|
||||||
|
h, err = dlopen.GetHandle(libsystemdNames)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
defer func() {
|
||||||
|
if err1 := h.Close(); err1 != nil {
|
||||||
|
err = err1
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
|
sd_pid_get_slice, err := h.GetSymbolPointer("sd_pid_get_slice")
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var s string
|
||||||
|
sl := C.CString(s)
|
||||||
|
defer C.free(unsafe.Pointer(sl))
|
||||||
|
|
||||||
|
ret := C.my_sd_pid_get_slice(sd_pid_get_slice, 0, &sl)
|
||||||
|
if ret < 0 {
|
||||||
|
err = fmt.Errorf("error calling sd_pid_get_slice: %v", syscall.Errno(-ret))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
return C.GoString(sl), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func runningFromSystemService() (ret bool, err error) {
|
||||||
|
var h *dlopen.LibHandle
|
||||||
|
h, err = dlopen.GetHandle(libsystemdNames)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
defer func() {
|
||||||
|
if err1 := h.Close(); err1 != nil {
|
||||||
|
err = err1
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
|
sd_pid_get_owner_uid, err := h.GetSymbolPointer("sd_pid_get_owner_uid")
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var uid C.uid_t
|
||||||
|
errno := C.my_sd_pid_get_owner_uid(sd_pid_get_owner_uid, 0, &uid)
|
||||||
|
serrno := syscall.Errno(-errno)
|
||||||
|
// when we're running from a unit file, sd_pid_get_owner_uid returns
|
||||||
|
// ENOENT (systemd <220) or ENXIO (systemd >=220)
|
||||||
|
switch {
|
||||||
|
case errno >= 0:
|
||||||
|
ret = false
|
||||||
|
case serrno == syscall.ENOENT, serrno == syscall.ENXIO:
|
||||||
|
// Since the implementation of sessions in systemd relies on
|
||||||
|
// the `pam_systemd` module, using the sd_pid_get_owner_uid
|
||||||
|
// heuristic alone can result in false positives if that module
|
||||||
|
// (or PAM itself) is not present or properly configured on the
|
||||||
|
// system. As such, we also check if we're the session leader,
|
||||||
|
// which should be the case if we're invoked from a unit file,
|
||||||
|
// but not if e.g. we're invoked from the command line from a
|
||||||
|
// user's login session
|
||||||
|
ret = C.am_session_leader() == 1
|
||||||
|
default:
|
||||||
|
err = fmt.Errorf("error calling sd_pid_get_owner_uid: %v", syscall.Errno(-errno))
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func currentUnitName() (unit string, err error) {
|
||||||
|
var h *dlopen.LibHandle
|
||||||
|
h, err = dlopen.GetHandle(libsystemdNames)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
defer func() {
|
||||||
|
if err1 := h.Close(); err1 != nil {
|
||||||
|
err = err1
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
|
sd_pid_get_unit, err := h.GetSymbolPointer("sd_pid_get_unit")
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var s string
|
||||||
|
u := C.CString(s)
|
||||||
|
defer C.free(unsafe.Pointer(u))
|
||||||
|
|
||||||
|
ret := C.my_sd_pid_get_unit(sd_pid_get_unit, 0, &u)
|
||||||
|
if ret < 0 {
|
||||||
|
err = fmt.Errorf("error calling sd_pid_get_unit: %v", syscall.Errno(-ret))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
unit = C.GoString(u)
|
||||||
|
return
|
||||||
|
}
|
23
cmd/vendor/github.com/coreos/go-systemd/util/util_stub.go
generated
vendored
Normal file
23
cmd/vendor/github.com/coreos/go-systemd/util/util_stub.go
generated
vendored
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
// Copyright 2016 CoreOS, Inc.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
// +build !cgo
|
||||||
|
|
||||||
|
package util
|
||||||
|
|
||||||
|
func getRunningSlice() (string, error) { return "", ErrNoCGO }
|
||||||
|
|
||||||
|
func runningFromSystemService() (bool, error) { return false, ErrNoCGO }
|
||||||
|
|
||||||
|
func currentUnitName() (string, error) { return "", ErrNoCGO }
|
1
cmd/vendor/github.com/xiang90/probing/status.go
generated
vendored
1
cmd/vendor/github.com/xiang90/probing/status.go
generated
vendored
@ -101,6 +101,7 @@ func (s *status) reset() {
|
|||||||
|
|
||||||
s.srtt = 0
|
s.srtt = 0
|
||||||
s.total = 0
|
s.total = 0
|
||||||
|
s.loss = 0
|
||||||
s.health = false
|
s.health = false
|
||||||
s.clockdiff = 0
|
s.clockdiff = 0
|
||||||
s.err = nil
|
s.err = nil
|
||||||
|
8
glide.lock
generated
8
glide.lock
generated
@ -1,5 +1,5 @@
|
|||||||
hash: b8c8aebe162aaf9ba23295e348e4099476753911e408d867948e5f42bbff4ca5
|
hash: d56fcba6f86aae631325ec24baa27b102e915f533ed63391807795f78e8c25f6
|
||||||
updated: 2016-08-15T12:09:23.38281433-07:00
|
updated: 2016-08-15T12:13:05.482527088-07:00
|
||||||
imports:
|
imports:
|
||||||
- name: bitbucket.org/ww/goautoneg
|
- name: bitbucket.org/ww/goautoneg
|
||||||
version: 75cd24fc2f2c2a2088577d12123ddee5f54e0675
|
version: 75cd24fc2f2c2a2088577d12123ddee5f54e0675
|
||||||
@ -20,7 +20,7 @@ imports:
|
|||||||
subpackages:
|
subpackages:
|
||||||
- semver
|
- semver
|
||||||
- name: github.com/coreos/go-systemd
|
- name: github.com/coreos/go-systemd
|
||||||
version: d6c05a1dcbb5ac02b7653da4d99e5db340c20778
|
version: bfdc81d0d7e0fb19447b08571f63b774495251ce
|
||||||
subpackages:
|
subpackages:
|
||||||
- daemon
|
- daemon
|
||||||
- journal
|
- journal
|
||||||
@ -113,7 +113,7 @@ imports:
|
|||||||
- name: github.com/urfave/cli
|
- name: github.com/urfave/cli
|
||||||
version: 6011f165dc288c72abd8acd7722f837c5c64198d
|
version: 6011f165dc288c72abd8acd7722f837c5c64198d
|
||||||
- name: github.com/xiang90/probing
|
- name: github.com/xiang90/probing
|
||||||
version: 95bd620af35406ab93d7f5bf320dba4b4667982e
|
version: 07dd2e8dfe18522e9c447ba95f2fe95262f63bb2
|
||||||
- name: golang.org/x/crypto
|
- name: golang.org/x/crypto
|
||||||
version: 1351f936d976c60a0a48d728281922cf63eafb8d
|
version: 1351f936d976c60a0a48d728281922cf63eafb8d
|
||||||
subpackages:
|
subpackages:
|
||||||
|
@ -19,7 +19,7 @@ import:
|
|||||||
subpackages:
|
subpackages:
|
||||||
- semver
|
- semver
|
||||||
- package: github.com/coreos/go-systemd
|
- package: github.com/coreos/go-systemd
|
||||||
version: d6c05a1dcbb5ac02b7653da4d99e5db340c20778
|
version: bfdc81d0d7e0fb19447b08571f63b774495251ce
|
||||||
subpackages:
|
subpackages:
|
||||||
- daemon
|
- daemon
|
||||||
- journal
|
- journal
|
||||||
@ -111,7 +111,7 @@ import:
|
|||||||
- package: github.com/urfave/cli
|
- package: github.com/urfave/cli
|
||||||
version: 6011f165dc288c72abd8acd7722f837c5c64198d
|
version: 6011f165dc288c72abd8acd7722f837c5c64198d
|
||||||
- package: github.com/xiang90/probing
|
- package: github.com/xiang90/probing
|
||||||
version: 95bd620af35406ab93d7f5bf320dba4b4667982e
|
version: 07dd2e8dfe18522e9c447ba95f2fe95262f63bb2
|
||||||
- package: golang.org/x/crypto
|
- package: golang.org/x/crypto
|
||||||
version: 1351f936d976c60a0a48d728281922cf63eafb8d
|
version: 1351f936d976c60a0a48d728281922cf63eafb8d
|
||||||
subpackages:
|
subpackages:
|
||||||
|
Reference in New Issue
Block a user