Go to file
Álvaro Fernández Rojas 28bb40caaf odhcpd: update to Git HEAD (2025-10-22)
0d0fac30075f dhcpv4: bump problem scenario up to warn
bf6137092346 config: properly set log level from uci
7956f4271b4e dhcpv6: RFC4833 timezones
7000557cd8f6 dhcpv6-ia: respect prefix assigned to interface (>= /64)
e1e60601ffeb odhcpd: improve odhcpd_urandom()
c2eb4b59f107 config: fix erroneous clamp message if clamp value == max
54b9e729b00d dhcpv4: bail earlier on release/decline
417f4b11d352 dhcpv4: don't hardcode options array length
d63fa3c3612c dhcpv4: shrink struct dhcpv4_message
9653b43617e3 dhcpv4: use iovec for forcereconf messages, fix hash
bf41f4edfbe3 dhcpv4: fix padding of iovec message in dhcpv4_handle_msg()
be68f423c528 dhcpv4: some minor cleanups post-iovec
e24a371ef714 dhcpv4: use iovec for forcerenew opts
bd353e891ae6 dhcpv4: use iovec for router and DNS server
b81cfaa7859e dhcpv4: use iovec for DNS search and MTU
578a9289440b dhcpv4: use iovec for netmask/hostname/broadcast
5bafc17b79d8 dhcpv4: use iovec for leasetime/renew/rebind
b63448ffe447 dhcpv4: introduce a reply_opts array
0533eaea0a94 dhcpv4: use iovec for DNR
6329e37d595d dhcpv4: use iovec for NTP
87fee619205d dhcpv4: use iovec for message and serverid
2f97bf0b56de dhcpv4: reorder some more variables in dhcpv4_handle_msg()
18c1b02bdc20 dhcpv4: remove one more variable from dhcpv4_handle_msg()
6fd691ff29cd dhcpv4: move dest handling from dhcpv4_handle_msg()
1f803caf9a1f dhcpv4: don't copy reqopts around
b1be3984ebf8 dhcpv4: more refactoring of dhcpv4_handle_msg()
85717bedf8ce dhcpv4: clarify variable names in dhcpv4_handle_msg()
be864ccf9919 dhcpv4: some more cleanups to dhcpv4_handle_msg()
f87464520564 dhcpv4: preparations for iovec usage
f48e1c205af3 odhcdp: use a more suitable clock
7e78caac4eae dhcpv6: change dhcpv6 message type check in relay
288abd9c4046 dhcpv6: move dhcpv6 message type check for early exit
d504458ef515 odhcpd: add a simple build script
4ee309a54011 github: improve CI
ff3a241ccc98 odhcpd: shrink binary size by creating a logging function
e2ecf7ba6d72 odhcpd: support stderr logging
5de3b0d5b509 odhcpd: add log helpers
398d03a1a236 config: cap dhcpv6_pd_min_len to max instead of only logging error
4f54738d3ae7 config: clamp dhcpv6_hostid_len instead of only logging an error
465f19c9c2e3 config: clamp ra_mtu into 1280-65535 range
434b06133997 config: cap ra_retranstime and warn instead of only logging an error
e5f58a90a147 config: cap ra_hoplimit to maximum and warn instead of logging an error
208eb10307c1 config: cap ra_reachabletime to RFC maximum instead of logging error
93449f1513b4 config: drop double size lease times; they are all UINT32_MAX;
439c0ceab131 router: redefine ra_mininterval and ra_maxinterval as uint32_t
84b4dfe81363 config: clamp ra_mininterval, ra_maxinterval, ra_lifetime at load time
aa4f26232e05 router: refactor calc_ra_lifetime; redefine ra_lifetime as uint32_t
6ece28ffd475 config: do MaxRtrAdvInterval init at (ra_maxinterval) init time
dc03e02d973e router: Apply updated values from RFC9096 (updates RFC4861) to RA/ND
cc7766c12abe router: Apply updated values from RFC8319 (updates RFC4861) to RA/ND
964da13e758c config: refactor parse_leasetime() - branch amount remains same
9646c749467b github: fix CMAKE_SYSTEM_PROCESSOR copy&paste
288206c9a2ed github: add CI build
30780debd691 odhcpd: fix a compilation error
e0b2c3cf9476 odhcpd: allow assignments to be reassigned
01e5e311b0db odhcpd: support multiple per-client DUIDs
aebc647a6b7b odhcpd: support assignments on the basis of IAID
cc3ec9c20c61 odhcpd: support IAIDs for static DHCPv6 leases
e42c62725942 odhcpd: break up complex matching logic
e1123906a4bc odhcpd: document the ubus interface
c69200195263 dhcpv4: generate dbus events on lease expiry
dd7a2d474d0d dhcpv4: fix ubus events
22481d848e0d odhcpd: remove mac_len argument to ubus_bcast_dhcp_event()
d31d64efd56c odhcpd: fix ubus support flag in help msg
9bc1b4e26e10 odhcpd: reduce use of WITH_UBUS defines in code
d402cdae4316 ndp: fix macOS IPv6 compatibility by using link-local source addresses

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2025-10-23 08:03:37 +02:00
.devcontainer/ci-env devcontainer: Add development environment for gihub codespace 2023-10-30 23:34:26 +01:00
.github CI: labeler: Add econet 2025-09-12 21:04:15 +02:00
.vscode meta: VS Code: add "Git: Always Sign Off" setting 2024-10-03 17:18:51 +02:00
config image: also show GRUB options for EROFS 2025-07-26 18:02:31 +02:00
include build: handle --root feeds script feature 2025-10-20 13:50:15 +02:00
LICENSES LICENSES: include all used licenses in LICENSES directory 2021-02-14 19:21:38 +01:00
package odhcpd: update to Git HEAD (2025-10-22) 2025-10-23 08:03:37 +02:00
scripts scripts/feeds: implement support for --root option 2025-10-13 11:47:07 +02:00
target ath79: enterasys,ws-ap3805i: use nvmem 2025-10-23 00:04:47 +02:00
toolchain build: parsing "git log" breaks with gpg signature verification 2025-09-23 21:49:54 +02:00
tools tools: firmware-utils: update to Git HEAD (2025-10-20) 2025-10-20 00:17:46 +02:00
.gitattributes .gitattributes: ignore some whitespace "violations" in .patch files 2024-12-12 11:01:56 +01:00
.gitignore gitignore: ignore local APK keys 2024-05-17 22:03:06 +03:00
BSDmakefile
Config.in build: scripts/config - update to kconfig-v5.14 2022-02-19 13:10:01 +01:00
COPYING COPYING: add COPYING file to specify project licenses 2021-02-14 19:21:38 +01:00
feeds.conf.default feeds.conf.default: enable video feed by default 2024-12-05 01:34:01 +00:00
Makefile build: include tests/Makefile if available 2024-06-17 17:51:31 +02:00
README.md README: replace "MacOSX" with "macOS" 2024-04-01 18:46:30 +02:00
rules.mk rules.mk: do not set CCACHE_NOHASHDIR 2025-10-07 11:40:58 +02:00

OpenWrt logo

OpenWrt Project is a Linux operating system targeting embedded devices. Instead of trying to create a single, static firmware, OpenWrt provides a fully writable filesystem with package management. This frees you from the application selection and configuration provided by the vendor and allows you to customize the device through the use of packages to suit any application. For developers, OpenWrt is the framework to build an application without having to build a complete firmware around it; for users this means the ability for full customization, to use the device in ways never envisioned.

Sunshine!

Download

Built firmware images are available for many architectures and come with a package selection to be used as WiFi home router. To quickly find a factory image usable to migrate from a vendor stock firmware to OpenWrt, try the Firmware Selector.

If your device is supported, please follow the Info link to see install instructions or consult the support resources listed below.

An advanced user may require additional or specific package. (Toolchain, SDK, ...) For everything else than simple firmware download, try the wiki download page:

Development

To build your own firmware you need a GNU/Linux, BSD or macOS system (case sensitive filesystem required). Cygwin is unsupported because of the lack of a case sensitive file system.

Requirements

You need the following tools to compile OpenWrt, the package names vary between distributions. A complete list with distribution specific packages is found in the Build System Setup documentation.

binutils bzip2 diff find flex gawk gcc-6+ getopt grep install libc-dev libz-dev
make4.1+ perl python3.7+ rsync subversion unzip which

Quickstart

  1. Run ./scripts/feeds update -a to obtain all the latest package definitions defined in feeds.conf / feeds.conf.default

  2. Run ./scripts/feeds install -a to install symlinks for all obtained packages into package/feeds/

  3. Run make menuconfig to select your preferred configuration for the toolchain, target system & firmware packages.

  4. Run make to build your firmware. This will download all sources, build the cross-compile toolchain and then cross-compile the GNU/Linux kernel & all chosen applications for your target system.

The main repository uses multiple sub-repositories to manage packages of different categories. All packages are installed via the OpenWrt package manager called opkg. If you're looking to develop the web interface or port packages to OpenWrt, please find the fitting repository below.

  • LuCI Web Interface: Modern and modular interface to control the device via a web browser.

  • OpenWrt Packages: Community repository of ported packages.

  • OpenWrt Routing: Packages specifically focused on (mesh) routing.

  • OpenWrt Video: Packages specifically focused on display servers and clients (Xorg and Wayland).

Support Information

For a list of supported devices see the OpenWrt Hardware Database

Documentation

Support Community

  • Forum: For usage, projects, discussions and hardware advise.
  • Support Chat: Channel #openwrt on oftc.net.

Developer Community

License

OpenWrt is licensed under GPL-2.0