mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-08-15 23:53:51 +00:00

Same as initial tests, import verbatim from github.com/google/packetdrill, aside from: - update `source ./defaults.sh` path to adjust for flat dir - add SPDX headers - remove author statements if any - drop blank lines at EOF (new) Also import set_sysctls.py, which many scripts depend on to set sysctls and then restore them later. This is no longer strictly needed for namespacified sysctl. But not all sysctls are namespacified, and doesn't hurt if they are. Signed-off-by: Willem de Bruijn <willemb@google.com> Acked-by: Matthieu Baerts (NGI0) <matttbe@kernel.org> Link: https://patch.msgid.link/20240912005317.1253001-3-willemdebruijn.kernel@gmail.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
39 lines
1.2 KiB
Python
Executable File
39 lines
1.2 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
# SPDX-License-Identifier: GPL-2.0
|
|
|
|
"""Sets sysctl values and writes a file that restores them.
|
|
|
|
The arguments are of the form "<proc-file>=<val>" separated by spaces.
|
|
The program first reads the current value of the proc-file and creates
|
|
a shell script named "/tmp/sysctl_restore_${PACKETDRILL_PID}.sh" which
|
|
restores the values when executed. It then sets the new values.
|
|
|
|
PACKETDRILL_PID is set by packetdrill to the pid of itself, so a .pkt
|
|
file could restore sysctls by running `/tmp/sysctl_restore_${PPID}.sh`
|
|
at the end.
|
|
"""
|
|
|
|
import os
|
|
import subprocess
|
|
import sys
|
|
|
|
filename = '/tmp/sysctl_restore_%s.sh' % os.environ['PACKETDRILL_PID']
|
|
|
|
# Open file for restoring sysctl values
|
|
restore_file = open(filename, 'w')
|
|
print('#!/bin/bash', file=restore_file)
|
|
|
|
for a in sys.argv[1:]:
|
|
sysctl = a.split('=')
|
|
# sysctl[0] contains the proc-file name, sysctl[1] the new value
|
|
|
|
# read current value and add restore command to file
|
|
cur_val = subprocess.check_output(['cat', sysctl[0]], universal_newlines=True)
|
|
print('echo "%s" > %s' % (cur_val.strip(), sysctl[0]), file=restore_file)
|
|
|
|
# set new value
|
|
cmd = 'echo "%s" > %s' % (sysctl[1], sysctl[0])
|
|
os.system(cmd)
|
|
|
|
os.system('chmod u+x %s' % filename)
|