reyk [Fri, 13 Jul 2018 10:26:57 +0000 (10:26 +0000)]
Check the disk/kernel/cdrom file permissions after openening the fd.
This prevents time of TOCTOU attacks for instances.
OK mlarkin@
beck [Fri, 13 Jul 2018 09:36:00 +0000 (09:36 +0000)]
Make the default failure for unveil while disabled return success
so that people don't get screwed when playing with it on their
machines
deraadt [Fri, 13 Jul 2018 09:28:07 +0000 (09:28 +0000)]
sync
beck [Fri, 13 Jul 2018 09:27:07 +0000 (09:27 +0000)]
Crank minor for unveil
ok deraadt@
beck [Fri, 13 Jul 2018 09:25:22 +0000 (09:25 +0000)]
Unveiling unveil(2).
This brings unveil into the tree, disabled by default - Currently
this will return EPERM on all attempts to use it until we are
fully certain it is ready for people to start using, but this
now allows for others to do more tweaking and experimentation.
Still needs to send the unveil's across forks and execs before
fully enabling.
Many thanks to robert@ and deraadt@ for extensive testing.
ok deraadt@
schwarze [Fri, 13 Jul 2018 09:19:42 +0000 (09:19 +0000)]
no longer interpret 0.192.168.4 in hosts(5) as 192.168.4/24
OK phessler@ claudio@ benno@ kn@
"steh' nicht rum, committe das" henning@
florian [Fri, 13 Jul 2018 09:16:50 +0000 (09:16 +0000)]
Monitor the route socket and regenerate the list of interfaces and
messages to send when an interface shows up or disappears or
and address shows up or disappears.
florian [Fri, 13 Jul 2018 09:16:15 +0000 (09:16 +0000)]
add missing IMSG_STARTUP; unclear why this ever worked
kn [Fri, 13 Jul 2018 09:06:58 +0000 (09:06 +0000)]
Use "rtable" not "tableid" as argument name for rtable
Make rtable(4) usage documentation consistent with other programs.
This is to have `man -k ar~rtable' show the full list without having to
look for other variations of the same argument type.
OK bluhm
krw [Fri, 13 Jul 2018 09:03:44 +0000 (09:03 +0000)]
Unused variables.
ok henning@
krw [Fri, 13 Jul 2018 09:02:07 +0000 (09:02 +0000)]
Unused variable.
ok martijn@ henning@
beck [Fri, 13 Jul 2018 08:59:02 +0000 (08:59 +0000)]
tests for next steps in unveil
bluhm [Fri, 13 Jul 2018 08:51:15 +0000 (08:51 +0000)]
Some USB network interfaces like rum(4) report ENXIO from their
ioctl function after the device has been pulled out. Also accept
this error code in bpf_detachd() to prevent a kernel panic. tcpdump(8)
may run while the interface is detached.
from Moritz Buhl; OK stsp@
krw [Fri, 13 Jul 2018 08:51:14 +0000 (08:51 +0000)]
Unused variables.
ok halex@
rob [Fri, 13 Jul 2018 08:50:38 +0000 (08:50 +0000)]
Fix some comments referencing sockets which are not used by the ber api. The
api uses read and write buffers (byte streams) that are utilized by calling
applications which may or may not use sockets.
ok claudio@
buffer byte streams that applications then use for
kettenis [Fri, 13 Jul 2018 08:46:07 +0000 (08:46 +0000)]
When we nack a domain service because we don't support the requested major
version, provide a major version that we do support.
tb [Fri, 13 Jul 2018 08:43:31 +0000 (08:43 +0000)]
Eliminate the weird condition in the BN_swap_ct() API that at most one bit
be set in condition. This makes the constant time bit-twiddling a bit
trickier, but it's not too bad. Thanks to halex for an extensive rubber
ducking session over a non-spicy spicy tabouleh falafel..
ok jsing, kn
reyk [Fri, 13 Jul 2018 08:42:49 +0000 (08:42 +0000)]
Add "allow instance" option.
This allows users to create VM instances and change desired options,
for example a user can be allowed to run a VM with all the
pre-configured options but specify an own disk image.
(mlarkin@ was fine with iterating over it)
OK ccardenas@
krw [Fri, 13 Jul 2018 08:41:32 +0000 (08:41 +0000)]
Unused variables.
ok henning@ phessler@
kn [Fri, 13 Jul 2018 08:41:15 +0000 (08:41 +0000)]
Fix regression on child queue definitions
I comitted the wrong diff in 1.680 which turned `queue cq parent pq ...'
into invalid syntax by changing `interface' to `ON if_item'.
Found by bket, thanks!
krw [Fri, 13 Jul 2018 08:39:33 +0000 (08:39 +0000)]
Unused variable.
ok deraadt@
florian [Fri, 13 Jul 2018 08:32:10 +0000 (08:32 +0000)]
pass control socket in from main
florian [Fri, 13 Jul 2018 08:31:34 +0000 (08:31 +0000)]
pass in route socket from main; stub out handling for now
sf [Fri, 13 Jul 2018 08:30:34 +0000 (08:30 +0000)]
Disable codepatching infrastructure after boot
This way, it is not available for use in ROP attacks. This diff puts the
codepatching code into a separate section and unmaps that section after boot.
In the future, the memory could potentially be reused but that would require
larger changes.
ok pguenther@
rob [Fri, 13 Jul 2018 08:30:10 +0000 (08:30 +0000)]
Fix loop condition in ber.c. Discussed with claudio.
ok claudio@, jca@
claudio [Fri, 13 Jul 2018 08:18:11 +0000 (08:18 +0000)]
Move aspath_verify() and aspath_inflate() into util.c so bgpctl can use them.
With this it gets a bit easier to parse MRT update messages in bgpctl.
OK benno@ phessler@
deraadt [Fri, 13 Jul 2018 08:10:56 +0000 (08:10 +0000)]
repair inconsistancies
deraadt [Fri, 13 Jul 2018 08:10:45 +0000 (08:10 +0000)]
repair inconsistancies
espie [Fri, 13 Jul 2018 08:09:34 +0000 (08:09 +0000)]
byebye MASTER_SITE_OVERRIDE, we won't miss you
florian [Fri, 13 Jul 2018 08:08:11 +0000 (08:08 +0000)]
Explain what the example is doing.
Prompted by, tweak & OK jmc
kettenis [Fri, 13 Jul 2018 07:29:08 +0000 (07:29 +0000)]
Check protocol version number before sending an ack indicating that we
support a domain services protocol.
phessler [Fri, 13 Jul 2018 07:22:55 +0000 (07:22 +0000)]
Some more checks before auto-join switches networks.
Make sure all of the crypto options the AP announces matches what we
would configure. While here, don't switch if the user has specified
a specific BSSID, and the new AP does not match.
OK stsp@
florian [Fri, 13 Jul 2018 06:56:59 +0000 (06:56 +0000)]
add rad.conf; from semarie; tweak & OK tb
guenther [Fri, 13 Jul 2018 05:56:57 +0000 (05:56 +0000)]
Use _ALIGN_TRAPS instead of _ALIGN_TEXT where nops aren't needed.
ok deraadt@
jmc [Fri, 13 Jul 2018 05:25:29 +0000 (05:25 +0000)]
various tweaks; ok florian
tb [Fri, 13 Jul 2018 05:25:24 +0000 (05:25 +0000)]
zap some garbage that snuck in.
spotted by kevlo
jmc [Fri, 13 Jul 2018 05:22:34 +0000 (05:22 +0000)]
- differentiate between join and nwid
- remove some duplication between them
- document -join
- sort
ok phessler
djm [Fri, 13 Jul 2018 02:13:50 +0000 (02:13 +0000)]
make this use ssh_proxy rather than starting/stopping a daemon for
each testcase
djm [Fri, 13 Jul 2018 02:13:19 +0000 (02:13 +0000)]
fix leaks in unit test; with this, all unit tests are leak free
(as far as valgrind can spot anyway)
deraadt [Thu, 12 Jul 2018 22:09:04 +0000 (22:09 +0000)]
we will be toggling witness on/off a few times. when it is on, it raises
awareness of problems. when it is off, development cycles are faster.
let's do the faster cycle for a little while.
discussion with naddy
deraadt [Thu, 12 Jul 2018 22:07:57 +0000 (22:07 +0000)]
sync
benno [Thu, 12 Jul 2018 21:45:37 +0000 (21:45 +0000)]
store and print the rdomain of the interfaces we see.
ok phessler@ henning@
henning [Thu, 12 Jul 2018 19:31:05 +0000 (19:31 +0000)]
if we couldn't update the clock for ~1h due to lack of data from peers and
sensors, mark us unsynced again. ok reyk krw, pt out / discussion / help naddy
jmc [Thu, 12 Jul 2018 18:45:13 +0000 (18:45 +0000)]
missing .Ek;
krw [Thu, 12 Jul 2018 16:59:59 +0000 (16:59 +0000)]
Cleanup and clarify getuint64() by using the
same functions as auto-allocation. parse_sizespec()
and apply_unit(). No intentional functional
change.
Looked good to tb@
krw [Thu, 12 Jul 2018 16:53:09 +0000 (16:53 +0000)]
Cleanup and clarify the has_overlap() logic so it can be read by
normal people and is more efficient to boot.
The only intentional functional change was to use mergesort()
instead of heapsort() so that partitions with the same offset
retain their order in the emitted verbiage.
Looked good to tb@, ok kn@
florian [Thu, 12 Jul 2018 16:08:02 +0000 (16:08 +0000)]
RTM_CHGADDRATTR for route monitor
OK phessler, benno, claudio
florian [Thu, 12 Jul 2018 16:07:35 +0000 (16:07 +0000)]
Introduce RTM_CHGADDRATTR to inform userland on the route socket when
an attribute of an address is changed.
For now it's used when IPv6 duplicate address detection finishes.
With this slaacd(8) can find out if a configured address is not
duplicated without the need to poll.
OK phessler, benno, claudio
mpi [Thu, 12 Jul 2018 15:51:50 +0000 (15:51 +0000)]
Introduce ipsec_output_cb() to merge duplicate code and account for
dropped packets in the output path.
While here fix a memory leak when compression is not needed w/ IPcomp.
ok markus@
mlarkin [Thu, 12 Jul 2018 15:48:02 +0000 (15:48 +0000)]
unbreak i386 build, thanks to pd@ for noticing. Same diff as I committed
earlier for amd64
mlarkin [Thu, 12 Jul 2018 15:13:33 +0000 (15:13 +0000)]
zap an extra newline
reyk [Thu, 12 Jul 2018 14:53:37 +0000 (14:53 +0000)]
The vmctl start -I option was changed to -t.
I committed the manpage but accidentally forgot the main.c part.
OK ccardenas@
kettenis [Thu, 12 Jul 2018 14:46:45 +0000 (14:46 +0000)]
Add a function to delete all nodes with a specific name.
Add a function to determine the size of a machine description.
sashan [Thu, 12 Jul 2018 14:28:07 +0000 (14:28 +0000)]
trade few 'goto unlock: for 'break' in pf_test()
OK mpi@, OK henning@, OK jca@
guenther [Thu, 12 Jul 2018 14:24:54 +0000 (14:24 +0000)]
Unbreak the nmi handler (again): I placed INTR_CLEAR_GPRS in the wrong
place and GS.base was horked on return. Also, the frame passed to ddb
didn't have the %rbp<-->tf_err swap, which would have confused backtraces.
Now if we can just come up with a way to automate testing the NMI handler
with qemu...
sashan [Thu, 12 Jul 2018 14:22:54 +0000 (14:22 +0000)]
- introducing _Q_INVALID to sys/queue.h
OK @bluhm, OK @otto, OK @guenther
guenther [Thu, 12 Jul 2018 14:11:11 +0000 (14:11 +0000)]
Reorganize the Meltdown entry and exit trampolines for syscall and
traps so that the "mov %rax,%cr3" is followed by an infinite loop
which is avoided because the mapping of the code being executed is
changed. This means the sysretq/iretq isn't even present in that
flow of instructions in the kernel mapping, so userspace code can't
be speculatively reached on the kernel mapping and totally eliminates
the conditional jump over the the %cr3 change that supported CPUs
without the Meltdown vulnerability. The return paths were probably
vulnerable to Spectre v1 (and v1.1/1.2) style attacks, speculatively
executing user code post-system-call with the kernel mappings, thus
creating cache/TLB/etc side-effects.
Would like to apply this technique to the interrupt stubs too, but
I'm hitting a bug in clang's assembler which misaligns the code and
symbols.
While here, when on a CPU not vulnerable to Meltdown, codepatch out
the unnecessary bits in cpu_switchto().
Inspiration from sf@, refined over dinner with theo
ok mlarkin@ deraadt@
schwarze [Thu, 12 Jul 2018 14:06:39 +0000 (14:06 +0000)]
fix Test 7.1 after main.c rev. 1.37;
breaking the output lines earlier with the 'l' command is intentional
remi [Thu, 12 Jul 2018 13:45:03 +0000 (13:45 +0000)]
Add support for rdomains.
small quirk from tb@
ok phessler@
fcambus [Thu, 12 Jul 2018 12:47:57 +0000 (12:47 +0000)]
Remove cases for 1-bit and 4-bit color depths in efifb_ioctl(), as we
basically can't run in those modes.
OK kettenis@
fcambus [Thu, 12 Jul 2018 12:46:00 +0000 (12:46 +0000)]
Stop building rasops4 on amd64.
It was pulled in for efifb, but it is extremely unlikely an EFI system
supporting only 4-bit color depth (16 colors) exists. Even if it existed
though, on SMALL_KERNEL rasops4_putchar() simply returns EAGAIN so it
would not be possible to install the system.
For the record, we do not build rasops4 on i386 or on any of our other
platforms either.
OK kettenis@, mpi@
florian [Thu, 12 Jul 2018 12:38:56 +0000 (12:38 +0000)]
Use (mostly) the same capitalisation in the replacement string as in
the replaced string:
replacing foo with bar turns
foo
Foo
FOO
into
bar
Bar
BAR
OK phessler, benno
beck [Thu, 12 Jul 2018 12:20:11 +0000 (12:20 +0000)]
symlinks make my cry.. thanks robert.. don't you care about my feelings?
remi [Thu, 12 Jul 2018 12:19:05 +0000 (12:19 +0000)]
With the "depend on" option routes are sent out with a metric of 65535 if
the referenced interface is down or in state backup. This is especially
useful on a carp cluster to ensure all traffic goes to the carp master.
ok friehm@ jca@
reyk [Thu, 12 Jul 2018 12:04:49 +0000 (12:04 +0000)]
Allow to use configured/running VMs as templates for other VM instances.
This introduces new grammar and the -t optional in vmctl start.
(For now, only root can create VM instances; but it is planned to allow
users to create their own VMs based on permissions and quota.)
OK ccardenas@ mlarkin@ jmc@
beck [Thu, 12 Jul 2018 11:42:33 +0000 (11:42 +0000)]
Add regress test for realpath and modify behavior appropriately
mlarkin [Thu, 12 Jul 2018 10:16:41 +0000 (10:16 +0000)]
zap a blank line
mlarkin [Thu, 12 Jul 2018 10:15:44 +0000 (10:15 +0000)]
vmm(8)/vmm(4): send a copy of the guest register state to vmd on exit,
avoiding multiple readregs ioctls back to vmm in case register content
is needed subsequently.
ok phessler
florian [Thu, 12 Jul 2018 08:20:36 +0000 (08:20 +0000)]
rc(8) infrastructure for rad
florian [Thu, 12 Jul 2018 08:19:00 +0000 (08:19 +0000)]
hook up rad(8) and ractl(8) to the build
florian [Thu, 12 Jul 2018 08:18:10 +0000 (08:18 +0000)]
use _rad user
florian [Thu, 12 Jul 2018 08:17:26 +0000 (08:17 +0000)]
Add _rad user and group for rad(8).
This recycles the _btd uid/gid that have been removed in 2013.
Discussed in the hackroom.
mpi [Thu, 12 Jul 2018 07:58:23 +0000 (07:58 +0000)]
Instead of having a button for printing the driver(s) attached to a USB
device, do it when invoked with '-v'.
While here recycle '-d' to specify a specific device node, like pcidump(8)
does.
ok jca@, sthen@
espie [Thu, 12 Jul 2018 06:22:20 +0000 (06:22 +0000)]
synch documentation with reality, noticed by landry@
jmc [Thu, 12 Jul 2018 05:54:49 +0000 (05:54 +0000)]
syncookies never is the default; from paul de weerd
ok henning
djm [Thu, 12 Jul 2018 04:35:25 +0000 (04:35 +0000)]
remove prototype to long-gone function
cheloha [Thu, 12 Jul 2018 01:23:38 +0000 (01:23 +0000)]
Add hw.ncpuonline to count the number of online CPUs.
The introduction of hw.smt means that logical CPUs can be disabled
after boot and prior to suspend/resume. If hw.smt=0 (the default),
there needs to be a way to count the number of hardware threads
available on the system at any given time.
So, import HW_NCPUONLINE/hw.ncpuonline from NetBSD and document it.
hw.ncpu becomes equal to the number of CPUs given to sched_init_cpu()
during boot, while hw.ncpuonline is equal to the number of CPUs available
to the scheduler in the cpuset "sched_all_cpus". Set_SC_NPROCESSORS_ONLN
equal to this new sysctl and keep _SC_NPROCESSORS_CONF equal to hw.ncpu.
This is preferable to adding a new sysctl to count the number of
configured CPUs and keeping hw.ncpu equal to the number of online
CPUs because such a change would break software in the ecosystem
that relies on HW_NCPU/hw.ncpu to measure CPU usage and the like.
Such software in base includes top(1), systat(1), and snmpd(8),
and perhaps others.
We don't need additional locking to count the cardinality of a cpuset
in this case because the only interfaces that can modify said cardinality
are sysctl(2) and ioctl(2), both of which are under the KERNEL_LOCK.
Software using HW_NCPU/hw.ncpu to determine optimal parallism will need
to be updated to use HW_NCPUONLINE/hw.ncpuonline. Until then, such software
may perform suboptimally. However, most changes will be similar to the
change included here for libcxx's std::thread:hardware_concurrency():
using HW_NCPUONLINE in lieu of HW_NCPU should be sufficient for determining
optimal parallelism for most software if the change to _SC_NPROCESSORS_ONLN
is insufficient.
Prompted by deraadt. Discussed at length with kettenis, deraadt, and sthen.
Lots of patch tweaks from kettenis.
ok kettenis, "proceed" deraadt
sthen [Wed, 11 Jul 2018 21:49:37 +0000 (21:49 +0000)]
Explicitly call "/etc/rc.d/vmd stop". This issues graceful shutdown commands
to running VMs (at least for OpenBSD ones), but the stop routine for system
daemons is not usually called at shutdown.
Earlier version with just "vmd stop" ok reyk@ kn@, ajacoutot@ reminded me
to hide the contextless "vmd(ok)" text which looks bad, I did so and wrapped
it with a "stopping VMs" message (it can take some time, especially when you
have multiple VMs, so better to have some clear feedback).
reyk [Wed, 11 Jul 2018 21:29:05 +0000 (21:29 +0000)]
check string lengths in vm_start
nayden [Wed, 11 Jul 2018 21:18:23 +0000 (21:18 +0000)]
Disambiguate the source of panics in sys/net* by adding __func__
magic constant to panic() calls.
ok benno@ henning@ tb@
benno [Wed, 11 Jul 2018 21:10:07 +0000 (21:10 +0000)]
The routing table bgpd runs in needs to be a routing domain.
ok claudio henning
claudio [Wed, 11 Jul 2018 20:38:57 +0000 (20:38 +0000)]
Remove RTM_LOSING from the file, it is no longer used by OpenBSD and
route6d is not realy using it anyway.
OK henning@
schwarze [Wed, 11 Jul 2018 20:24:35 +0000 (20:24 +0000)]
some regression tests for lam(1) including width measurements;
will be fixed soon and then linked to the build
phessler [Wed, 11 Jul 2018 20:18:09 +0000 (20:18 +0000)]
Introduce 'auto-join' to the wifi 802.11 stack.
This allows a system to remember which ESSIDs it wants to connect to, any
relevant security configuration, and switch to it when the network we are
currently connected to is no longer available.
Works when connecting and switching between WPA2/WPA1/WEP/clear encryptions.
example hostname.if:
join home wpakey password
join work wpakey mekmitasdigoat
join open-lounge
join cafe wpakey
cafe2018
join "wepnetwork" nwkey "12345"
dhcp
inet6 autoconf
up
OK stsp@ reyk@
and enthusiasm from every hackroom I've been in for the last 3 years
guenther [Wed, 11 Jul 2018 20:07:55 +0000 (20:07 +0000)]
Declare cpu_meltdown in <machine/cpu.h>
beck [Wed, 11 Jul 2018 20:01:56 +0000 (20:01 +0000)]
regress to check nested subdirs and ..'s
henning [Wed, 11 Jul 2018 19:52:19 +0000 (19:52 +0000)]
superfluous newline
bluhm [Wed, 11 Jul 2018 19:28:16 +0000 (19:28 +0000)]
If no thread can immediately handle a signal, which has been sent
to the process, it is made pending at the main thread. There it
could hang forever. So also check the main thread for signal
delivery. This workaround fixes hung tests in posixtestsuite. The
proper solution would be to split pending signals for process and
threads.
input visa@; OK guenther@
claudio [Wed, 11 Jul 2018 19:05:41 +0000 (19:05 +0000)]
improve the path hash function (instead of just hashing the aspath put
most other attrs into the hash as well). At the same time use the full
64 bit of SipHash in various places.
Tested by and OK benno@ phessler@
florian [Wed, 11 Jul 2018 19:05:25 +0000 (19:05 +0000)]
cleanly shutdown by sending advertisement with lifetime 0
markus [Wed, 11 Jul 2018 18:55:11 +0000 (18:55 +0000)]
treat ssh_packet_write_wait() errors as fatal; ok djm@
markus [Wed, 11 Jul 2018 18:53:29 +0000 (18:53 +0000)]
remove legacy key emulation layer; ok djm@
fcambus [Wed, 11 Jul 2018 18:45:45 +0000 (18:45 +0000)]
Remove the i386 specific mention for pcvtfonts, they are also installed
on alpha and amd64.
No objection from jmc@.
OK deraadt@, sthen@
mlarkin [Wed, 11 Jul 2018 18:08:05 +0000 (18:08 +0000)]
Detect vmm(4) in the bootloader and automatically switch to the serial
console at 115200 baud.
ok deraadt
kn [Wed, 11 Jul 2018 18:06:25 +0000 (18:06 +0000)]
Prevent invalid interface specifiers on queue rules
pf.conf(5) states that queues attach to actual interfaces only, yet the
following parses:
# echo queue eq on egress bandwidth 1G default | pfctl -f-
# pfctl -sq
pfctl: DIOCGETQSTATS: Bad file descriptor
# echo queue rq on rdomain 0 bandwidth 1G default | pfctl -vf-
queue rq bandwidth 1G default
# pfctl -sq
pfctl: DIOCGETQSTATS: Bad file descriptor
On rdomains, ifa_exists() returns NULL.
On interface groups, ifa_exists() returns non-NULL but af is never set
to AF_LINK.
OK henning sashan
nayden [Wed, 11 Jul 2018 18:04:18 +0000 (18:04 +0000)]
adding __func__ identifier to panic() calls in vmm.c for amd64 and i386
ok mlarkin@
kn [Wed, 11 Jul 2018 17:44:57 +0000 (17:44 +0000)]
Prevent updating async option on softdep mount
`mount -uo async,nosoftdep /mnt' would set "async" but keep "softdep"
untouched on a read/write mount.
OK deraadt krw beck bluhm
claudio [Wed, 11 Jul 2018 17:35:07 +0000 (17:35 +0000)]
Bump some of the hash table size to more resonable numbers.
Still probably not optimal but less bad.
florian [Wed, 11 Jul 2018 17:32:05 +0000 (17:32 +0000)]
Send a RA with router lifetime of 0 when an interface is removed from
the config.
RFC 4861, 6.2.5:
[...] the router SHOULD transmit one or more (but not more than
MAX_FINAL_RTR_ADVERTISEMENTS) final multicast Router Advertisements on
the interface with a Router Lifetime field of zero.
jmc [Wed, 11 Jul 2018 17:21:57 +0000 (17:21 +0000)]
remove useless macro;