mirror of
https://github.com/opencontainers/runc.git
synced 2026-07-11 06:03:57 +08:00
6ede591761
Remove unused code and argument from the ActivationFiles, and simplify its usage. Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
66 lines
1.9 KiB
Go
66 lines
1.9 KiB
Go
// Copyright 2015 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.
|
|
|
|
//go:build !windows
|
|
|
|
// Package activation implements primitives for systemd socket activation.
|
|
//
|
|
// It is a partial copy of https://github.com/coreos/go-systemd/v22/activation
|
|
// (https://github.com/coreos/go-systemd/blob/ce60782c0aabb616faa8e60f91e639d91f631e99/activation/files_unix.go),
|
|
// to avoid bringing in crypto/tls dependency.
|
|
package activation
|
|
|
|
import (
|
|
"os"
|
|
"strconv"
|
|
"strings"
|
|
"syscall"
|
|
)
|
|
|
|
const (
|
|
// listenFdsStart corresponds to `SD_LISTEN_FDS_START`.
|
|
listenFdsStart = 3
|
|
)
|
|
|
|
// Files returns a slice containing a os.File object for each
|
|
// file descriptor passed to this process via systemd fd-passing protocol.
|
|
//
|
|
// The order of the file descriptors is preserved in the returned slice.
|
|
func Files() []*os.File {
|
|
pid, err := strconv.Atoi(os.Getenv("LISTEN_PID"))
|
|
if err != nil || pid != os.Getpid() {
|
|
return nil
|
|
}
|
|
|
|
nfds, err := strconv.Atoi(os.Getenv("LISTEN_FDS"))
|
|
if err != nil || nfds <= 0 {
|
|
return nil
|
|
}
|
|
|
|
names := strings.Split(os.Getenv("LISTEN_FDNAMES"), ":")
|
|
|
|
files := make([]*os.File, 0, nfds)
|
|
for fd := listenFdsStart; fd < listenFdsStart+nfds; fd++ {
|
|
syscall.CloseOnExec(fd)
|
|
name := "LISTEN_FD_" + strconv.Itoa(fd)
|
|
offset := fd - listenFdsStart
|
|
if offset < len(names) && len(names[offset]) > 0 {
|
|
name = names[offset]
|
|
}
|
|
files = append(files, os.NewFile(uintptr(fd), name))
|
|
}
|
|
|
|
return files
|
|
}
|