Active OpenBSD development is known as the -current branch. These sources are frequently compiled into releases known as snapshots.
Aggressive changes are sometimes pushed in this branch, and complications can arise when building the latest code or upgrading from a previous point in time. Some of the steps for getting over these hurdles are explained on this page. Make sure you've read and understand how to build the system from source before using -current and the instructions below.
In general, it's far easier to use snapshots, as developers will have gone through much of the trouble for you already.
You should always use a snapshot as the starting point for running
-current.
This process typically consists of running
sysupgrade(8) with the
-s
flag.
Alternatively, download (and verify) the appropriate
bsd.rd file from the /snapshots/
directory of your preferred mirror, boot from it,
and choose (U)pgrade
at the prompt.
Any installed packages should then be
upgraded after booting into the new system.
Upgrading to -current by compiling your own source code is discouraged for everyone except for experts, as difficult build-time crossing-points can occur often, and no assistance will be provided. In case of failure, use a snapshot to recover.
Most of these changes will have to be performed as root.
to 0.0.0.0
" or "to 0.0.0.0/0
"
were used, they would be replaced with the peer's assigned address when
creating flows.
"to dynamic
" has been introduced to make the configuration
syntax clearer.
"to 0.0.0.0
" works as before but can be updated to the new
syntax if wanted.
"to 0.0.0.0/0
" will now be treated literally;
if you want the old behaviour you must change to "to dynamic
".
The following show incorrect rules that were previously accepted:
"port 2004:2000
", "port 2004 >< 2000
",
"port 2004 <> 2000
" (range should be low-high),
and "port 2000 >< 2000
" (range should not be a single
port).
If you use ranges and don't have console access, check them before upgrading.
# sysctl kern.video.record=1 # enable at runtime # echo kern.video.record=1 >> /etc/sysctl.conf # set at boot
# sysctl net.inet.ip.forwarding=1 # sysctl net.inet6.ip6.forwarding=1
listen on 127.0.0.1
would become
listen on 127.0.0.1
listen on 127.0.0.1 notify
These options previously accepted an IP address and network interface, for example:
They now take only an IP address, and perform a route lookup to determine the interface. The above examples can now be written like so:# address is directly reachable via the interfaces (showing both accepted formats) pass out proto tcp to port {80 443} route-to 192.0.2.1@ix0 pass out proto udp to port 53 dup-to (em2 192.168.2.99) # using placeholder address to signify the remote address on a point-to-point link pass in on pppoe1 reply-to 0.0.0.1@pppoe1
Alternatively, for some configurations using these features, it may be simpler to use multiple route tables instead (using ifconfig's rdomain and pf.conf's rtable features).# address is directly reachable via the interfaces pass out proto tcp to port {80 443} route-to 192.0.2.1 pass out proto udp to port 53 dup-to 192.168.2.99 # using :peer to use the remote address on a point-to-point link # using (...) to track changes dynamically pass in on pppoe1 reply-to (pppoe1:peer)