Compare commits

...

19 Commits

Author SHA1 Message Date
Mateusz Bajorski
07223eec2b ucentral-pstore: Disable printing processed lines
When processing huge console log and dmesg files printing lines
hanged execution blocking ucentral-state startup process.

It seems stdout is mainly for debug purposes and lines are
printed after we store file, so it is safe to disable print
as file is already processed and can be examined.

Fixes: WIFI-15356

Signed-off-by: Mateusz Bajorski <mbajorski@shasta.cloud>
Signed-off-by: Marek Kwaczynski <marek@shasta.cloud>
2026-03-19 07:22:26 +01:00
John Crispin
e2a36d1a4e ucentral-event: remove debug logging from strict forwarding
Remove logger calls that were left in from development. The FDB
entries are observable via 'bridge fdb show' and do not need runtime
logging in production.

Signed-off-by: John Crispin <john@phrozen.org>
2026-03-19 07:21:54 +01:00
John Crispin
e4bbbb1ee5 udhcpinject: fix UDP pseudo-header address extraction
ntohs() on a right-shifted __be32 produces garbage because the shift
operates on the network-order representation. Use ntohl() first to
convert to host order, then extract the 16-bit halves.

Signed-off-by: John Crispin <john@phrozen.org>
2026-03-19 07:21:46 +01:00
Kumiko18
0cefc067b7 ucentral-event: add FDB management for strict forwarding
When strict forwarding is enabled, DHCP packets fail to forward
because the bridge lacks static FDB entries for client MACs in the
correct VLAN. Add per-station static FDB entries tagged with the
bridge PVID on sta-authorized and remove them on disconnect.

Signed-off-by: John Crispin <john@phrozen.org>
2026-03-19 07:21:38 +01:00
Kumiko18
213335c44d udhcpinject: fix IP and UDP checksum calculation
The checksum code mixes host and network byte order inconsistently,
producing corrupt UDP checksums. Switch to consistently working in
host byte order using ntohs() on each word before summing, and
htons() on the final result.

Signed-off-by: John Crispin <john@phrozen.org>
2026-03-19 07:21:29 +01:00
jaspreetsachdev
222b17415c Merge pull request #1016 from Telecominfraproject/main
merge for v4.2.2
2026-03-04 15:04:30 -05:00
John Crispin
baa3cbf134 tip-defaults: update insta.pem certificates
Fixes: PKI2-209
Signed-off-by: John Crispin <john@phrozen.org>
2026-03-04 20:07:49 +01:00
John Crispin
9db344d4ea ucentral-schema: fix SSID basename to use global count
Use the global count instead of per_band_counters for the basename
to keep it in sync with the captive portal logic.

Fixes: WIFI-15327
Signed-off-by: John Crispin <john@phrozen.org>
2026-03-04 10:12:50 +01:00
Tanya Singh
515afeae6b ipq807x_v5.4: Update 2.4G radio BDF for EAP104 to improve Tx Power
Fixes: WIFI-15353
Signed-off-by: Tanya Singh <tanya_singh@accton.com>
2026-03-04 08:21:36 +01:00
Venkat Chimata
50f92c87c2 ucentral-event: Add BSSID/SSID to client stats payload
Populate bssid and ssid in the nl_cb client event payload by
resolving the hostapd instance using msg.msg.dev. Defaults to empty
values if hostapd context is unavailable.

Improves client visibility in multi-BSS deployments.

Fixes WiFi-15352

Signed-off-by: Venkat Chimata <venkat@nearhop.com>
2026-03-02 16:15:41 +01:00
800246@emplustech.com
64bcc609eb Emplus_WAP588m: Certificates Not Retained on Factory Reset
Signed-off-by: 800246@emplustech.com <cp.chang@emplustech.com>
2026-03-02 16:15:41 +01:00
800246@emplustech.com
d62881c70a mediatek: Add missed set lan wan mac function for emplus,wap588m
Signed-off-by: 800246@emplustech.com <cp.chang@emplustech.com>
2026-03-02 16:15:41 +01:00
John Crispin
333a8fb2a0 git: OpenWrt git servers have been migrated
The servers have been migrated to newer hardware. Switch back to using https.

Signed-off-by: John Crispin <john@phrozen.org>
2026-03-02 06:14:45 +01:00
dhileep
8eb37d825d ucentral-event: Client connectivity fails during DVLAN + MPSK mode
Duplicate VLAN validation fails in EAP105, which causes the client connectivity to fail.
Interface prefix (phy-*) not handled in the vlan validation

Fixes: WIFI-15351

Signed-off-by: dhileep <c-dsridhar@shasta.cloud>
Signed-off-by: Marek Kwaczynski <marek@shasta.cloud>
2026-03-02 06:13:51 +01:00
jaspreetsachdev
a01b9ac0f4 Merge pull request #1002 from Telecominfraproject/main
4.2.1 merge
2026-02-05 13:29:08 -05:00
John Crispin
d7b578c58d Revert "profiles/edgecore_eap111.yml: use the sdk kernel for v4.2"
This reverts commit 20f5fa0284.

Signed-off-by: John Crispin <john@phrozen.org>
2026-02-05 16:57:15 +01:00
Arif Alam
bab5db5bf5 cloud_discovery: check operational cert in /etc/ucentral to determine reenroll
Signed-off-by: Arif Alam <arif.alam@netexperience.com>
2026-02-05 08:35:41 +01:00
John Crispin
be9783e7db ratelimit: use sfq leaf qdisc on mediatek targets
fq_codel is not available on mediatek platforms. Replace it with sfq
during package install when CONFIG_TARGET_mediatek is set.

Fixes: WIFI-15285
Signed-off-by: John Crispin <john@phrozen.org>
2026-01-30 09:40:12 +01:00
jaspreetsachdev
a00dbfa6e4 Merge pull request #985 from Telecominfraproject/main
merge for 4.2.0 RC2
2025-12-12 18:42:38 -05:00
12 changed files with 255 additions and 72 deletions

View File

@@ -213,6 +213,14 @@ mediatek_setup_macs()
yuncore,ax835)
label_mac=$(mtd_get_mac_binary "Factory" 0x4)
;;
emplus,wap588m)
lan_mac_offset="0x2A"
wan_mac_offset="0x24"
part_name="Factory"
lan_mac=$(mtd_get_mac_binary $part_name $lan_mac_offset)
wan_mac=$(mtd_get_mac_binary $part_name $wan_mac_offset)
label_mac=$wan_mac
;;
esac
[ -n "$lan_mac" ] && ucidef_set_interface_macaddr "lan" $lan_mac

View File

@@ -141,10 +141,17 @@ yuncore,fap655)
;;
senao,iap2300m|\
senao,iap4300m|\
emplus,wap588m|\
senao,jeap6500)
PART_NAME=ubi
;;
emplus,wap588m)
tmp_active_fw=$(fw_printenv | grep active_fw | awk -F= {'print $2'})
if [ $tmp_active_fw == "0" ]; then
PART_NAME=ubi
else
PART_NAME=ubi_1
fi
;;
*)
check_certificates
return 1

View File

@@ -400,7 +400,7 @@ function expiry_handler() {
if (!stat)
return;
let ret = system(`openssl x509 -checkend ${timeouts.expiry_threshold} -noout -in /certificates/operational.pem`);
let ret = system(`openssl x509 -checkend ${timeouts.expiry_threshold} -noout -in /etc/ucentral/operational.pem`);
if (!ret) {
ulog(LOG_INFO, 'checked certificate expiry - all ok\n');
return;

View File

@@ -1,12 +1,126 @@
-----BEGIN CERTIFICATE-----
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
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
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
9V/T79RyDPMvhRQaxyV7tBGOss3Smw==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFFTCCAv2gAwIBAgICAxIwDQYJKoZIhvcNAQELBQAwGjEYMBYGA1UEAwwPT3BlbkxBTiBSb290IENBMCAXDTI1MDUxNDA4NDcxMFoYDzIwNTUwNTE0MDg0NzEwWjAaMRgwFgYDVQQDDA9PcGVuTEFOIFJvb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDGibJ04A55kSURTBSKgcBmLnND2I5wws1taKqqU9aaRhB7NtvMHwh2voH9b1brUiulZaZwTN/9kzd4AnXeKQ+0u5tV7Ofk0fzF2MK47n17TS30Yenqc4NuQEKdpKK/pM3VvOEppR/bqtgyLtDmbDnmFOx+zTj/+smTgouwA+Iier0P4s5OohYxn/bjOqwQbHbU79VpGBIWv6/kt55AhH7zvsqqKHkrzTxnsRBv3SBIufrjJr9PIhZBLDrqr56P6KgAi0eoutNt2ToiJbE0WfjU7GI1RSiSN5bGj1zXhjNVzQWs1H9QzRf3c9pl3+haHQZ7FZ1UqiTRewmbNrQ6I9k81au3SttUlb87MyAuDSzatkiq7CjQ8VE1J6te6ZBt2zWpUhHsR/Lg7g3eOw5dL4oZJdK5GgGu/MUajLUXifIqM13Mvg0VTzDhN69VLXLSL0gPcicsQCwJuAza1IC/VqmBGx19fAkyJhOurCXWOgisi0g1+xzPKRphUNwMPUf8vBVOM/Vc6xDIvwVGE3+eWXyhixneFlSpAI03nWWjpwWXihTBoxbfRXO3Y/ilJqrgFN+U4PJcCPA+Wo7ThH0mgX6bOTPcgXMUzT3v3FF6Bx5/PNV3kYrw2yLzribUiS6AGvVGnW4hX2Z6OQvA/aHME8KF+6y6m4pC7FkUjVaRlzWu/wIDAQABo2MwYTAfBgNVHSMEGDAWgBSUaFuoOPk4QLByZP47kj4p1IbCJjAdBgNVHQ4EFgQUlGhbqDj5OECwcmT+O5I+KdSGwiYwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggIBAB+/RUC2X6eVoPsFNMkaXO5Iib/ub0JoWhODQm8j2Mr5dpGXESSpXjfDcqDOLuJbWWoflXBLdr8BsVCBqOA9YgCX0H8Br7dUWmCScixxLW0he592/424EvdwifxcKHZLjv9CKV5Txhqnm2djc5RY/nTH5MYVrIh/If2TNO5ydDP6+vgy9GQ4en04VK7rz+PW17O8l7k9/lOmYptZmHgSDAPj/cT3PlG+McqaI5rMSHeEHlzH+PvgWjtSeEhF4FwFBXroDl4/yb4l2JB8bqAZ3vsOXSkigFcZh5MXPe+zuSSW+G8iLr4xoi0CFsP2DaHEyxgqP4B1FtE9nFPo6cvWbwqTVT7QSzqfH+jPJuQvpFXeRF5UFegNZTFT5/uFFPamihakFslEYxeJey1y+OJdLcP6ef87ruSt8amsq56OAETYpnW4JFowlEh0C+QwLGHGGY6WrOgHY/90hJmPgXBdBVg/IoOhzbvk5A+LqZDvxV2/rLNfClw8Kr3g5e8obcB6dWgMCy2z+us0H79ucnmhzQKsjpxM9T1ncHovAQfiD3jVqfHULY53avh0wIAjosoTGbe8dyx80quHe+16qWan7C9idXeAYYJXbZt5hs6hLw4I8M1LsjTg6vwsqiaHZpsmDyyQLdFjNJldG7aosfS9F+BIpuwijF+1dashL0CPsbIJ
MIIFFTCCAv2gAwIBAgICAxIwDQYJKoZIhvcNAQELBQAwGjEYMBYGA1UEAwwPT3Bl
bkxBTiBSb290IENBMCAXDTI1MDUxNDA4NDcxMFoYDzIwNTUwNTE0MDg0NzEwWjAa
MRgwFgYDVQQDDA9PcGVuTEFOIFJvb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4IC
DwAwggIKAoICAQDGibJ04A55kSURTBSKgcBmLnND2I5wws1taKqqU9aaRhB7NtvM
Hwh2voH9b1brUiulZaZwTN/9kzd4AnXeKQ+0u5tV7Ofk0fzF2MK47n17TS30Yenq
c4NuQEKdpKK/pM3VvOEppR/bqtgyLtDmbDnmFOx+zTj/+smTgouwA+Iier0P4s5O
ohYxn/bjOqwQbHbU79VpGBIWv6/kt55AhH7zvsqqKHkrzTxnsRBv3SBIufrjJr9P
IhZBLDrqr56P6KgAi0eoutNt2ToiJbE0WfjU7GI1RSiSN5bGj1zXhjNVzQWs1H9Q
zRf3c9pl3+haHQZ7FZ1UqiTRewmbNrQ6I9k81au3SttUlb87MyAuDSzatkiq7CjQ
8VE1J6te6ZBt2zWpUhHsR/Lg7g3eOw5dL4oZJdK5GgGu/MUajLUXifIqM13Mvg0V
TzDhN69VLXLSL0gPcicsQCwJuAza1IC/VqmBGx19fAkyJhOurCXWOgisi0g1+xzP
KRphUNwMPUf8vBVOM/Vc6xDIvwVGE3+eWXyhixneFlSpAI03nWWjpwWXihTBoxbf
RXO3Y/ilJqrgFN+U4PJcCPA+Wo7ThH0mgX6bOTPcgXMUzT3v3FF6Bx5/PNV3kYrw
2yLzribUiS6AGvVGnW4hX2Z6OQvA/aHME8KF+6y6m4pC7FkUjVaRlzWu/wIDAQAB
o2MwYTAfBgNVHSMEGDAWgBSUaFuoOPk4QLByZP47kj4p1IbCJjAdBgNVHQ4EFgQU
lGhbqDj5OECwcmT+O5I+KdSGwiYwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQF
MAMBAf8wDQYJKoZIhvcNAQELBQADggIBAB+/RUC2X6eVoPsFNMkaXO5Iib/ub0Jo
WhODQm8j2Mr5dpGXESSpXjfDcqDOLuJbWWoflXBLdr8BsVCBqOA9YgCX0H8Br7dU
WmCScixxLW0he592/424EvdwifxcKHZLjv9CKV5Txhqnm2djc5RY/nTH5MYVrIh/
If2TNO5ydDP6+vgy9GQ4en04VK7rz+PW17O8l7k9/lOmYptZmHgSDAPj/cT3PlG+
McqaI5rMSHeEHlzH+PvgWjtSeEhF4FwFBXroDl4/yb4l2JB8bqAZ3vsOXSkigFcZ
h5MXPe+zuSSW+G8iLr4xoi0CFsP2DaHEyxgqP4B1FtE9nFPo6cvWbwqTVT7QSzqf
H+jPJuQvpFXeRF5UFegNZTFT5/uFFPamihakFslEYxeJey1y+OJdLcP6ef87ruSt
8amsq56OAETYpnW4JFowlEh0C+QwLGHGGY6WrOgHY/90hJmPgXBdBVg/IoOhzbvk
5A+LqZDvxV2/rLNfClw8Kr3g5e8obcB6dWgMCy2z+us0H79ucnmhzQKsjpxM9T1n
cHovAQfiD3jVqfHULY53avh0wIAjosoTGbe8dyx80quHe+16qWan7C9idXeAYYJX
bZt5hs6hLw4I8M1LsjTg6vwsqiaHZpsmDyyQLdFjNJldG7aosfS9F+BIpuwijF+1
dashL0CPsbIJ
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
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
H0FGIeDSQydpOJU=
-----END CERTIFICATE-----

View File

@@ -29,6 +29,9 @@ Build/Compile = $(Build/Compile/Default)
define Package/ratelimit/install
$(CP) ./files/* $(1)
ifeq ($(CONFIG_TARGET_mediatek),y)
$(SED) 's|qdisc replace dev $$$${iface} parent 1:$$$${id} handle $$$${id}: fq_codel flows 128 limit 800 quantum 300 noecn|qdisc add dev $$$${iface} parent 1:$$$${id} sfq perturb 10 limit 2000 quantum 1514|' $(1)/usr/bin/ratelimit
endif
endef
$(eval $(call BuildPackage,ratelimit))

View File

@@ -112,6 +112,35 @@ function get_bridge_interfaces(bridge){
return dir;
}
function get_bridge_pvid(ifname) {
let f = fs.popen(`bridge -j vlan show dev ${ifname} 2>/dev/null`);
if (!f) return null;
let data = json(f.read("all"));
f.close();
if (!data) return null;
for (let entry in data)
for (let v in entry?.vlans)
if (v?.flags && index(v.flags, "PVID") >= 0)
return v.vlan;
return null;
}
function strict_fwd_update_fdb(hapd, address) {
if (!+hapd?.config?.strict_forwarding)
return;
let pvid = get_bridge_pvid(hapd.ifname);
if (pvid)
system(`bridge fdb replace ${address} dev ${hapd.ifname} master static vlan ${pvid}`);
}
function strict_fwd_delete_fdb(hapd, address) {
if (!+hapd?.config?.strict_forwarding)
return;
let pvid = get_bridge_pvid(hapd.ifname);
if (pvid)
system(`bridge fdb del ${address} dev ${hapd.ifname} master vlan ${pvid} 2>/dev/null`);
}
function event(object, verb, payload) {
let type = object;
if (verb)
@@ -226,6 +255,8 @@ handlers = {
msg.defaults = hapd.ssid;
ubus.call('ratelimit', 'client_set', msg);
}
strict_fwd_update_fdb(hapd, notify.data.address);
},
'channel-switch' : function(notify, hapd) {
@@ -240,6 +271,7 @@ handlers = {
};
ubus.call('ratelimit', 'client_delete', msg);
}
strict_fwd_delete_fdb(hapd, notify.data.address);
},
'key-mismatch': function(notify, hapd) {
@@ -282,7 +314,10 @@ handlers = {
vlan_refcount[vlan_id] = (vlan_refcount[vlan_id] || 0) + 1;
let parts = split(notify.data.ifname, '-v');
let is_wifi_iface = (length(parts) == 2 && wildcard(parts[0], 'wlan*'));
let is_wifi_iface = (length(parts) == 2 && wildcard(parts[0], 'phy*'));
if (!is_wifi_iface)
is_wifi_iface = (length(parts) == 2 && wildcard(parts[0], 'wlan*'));
if (vlan_refcount[vlan_id] > 1 && !is_wifi_iface)
return;
@@ -588,8 +623,13 @@ function listener_cb(event, payload) {
function nl_cb(msg) {
let mac = msg.msg.mac;
let sinfo = msg.msg.sta_info;
let dev = msg.msg.dev;
let hapd = hostapd[dev];
let payload = {
client: mac,
bssid: hapd?.bssid || '',
ssid: hapd?.ssid || '',
tx_bytes: sinfo.tx_bytes64,
rx_bytes: sinfo.rx_bytes64,
tx_packets: sinfo.tx_packets,

View File

@@ -0,0 +1,28 @@
From 9af6661616c5428509dac11357fbc54e9365db57 Mon Sep 17 00:00:00 2001
From: Venkat Chimata <venkat@nearhop.com>
Date: Mon, 9 Feb 2026 23:57:59 +0530
Subject: [PATCH] Change `basename` to use the global `count` instead of
per_band_counters[phy.band[0]]
This will keep the basename in sync with that of captive portal logic.
Signed-off-by: Venkat Chimata <venkat@nearhop.com>
---
renderer/templates/interface/ssid.uc | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/renderer/templates/interface/ssid.uc b/renderer/templates/interface/ssid.uc
index bd70e6a2..c1c81baf 100644
--- a/renderer/templates/interface/ssid.uc
+++ b/renderer/templates/interface/ssid.uc
@@ -365,8 +365,8 @@
# Wireless configuration
{% for (let n, phy in phys): %}
{% let band_index = get_radio_index(phy.band[0]); %}
-{% let basename = name + '_' + per_band_counters[phy.band[0]]; %}
-{% let ssidname = basename + '_' + band_index + '_' + per_band_counters[phy.band[0]]; %}
+{% let basename = name + '_' + count; %}
+{% let ssidname = name + '_' + per_band_counters[phy.band[0]] + '_' + band_index + '_' + per_band_counters[phy.band[0]]; %}
{% let section = (owe ? 'o' : '' ) + ssidname; %}
{% let id = wiphy.allocate_ssid_section_id(phy) %}
{% let band = match_band(phy); %}

View File

@@ -23,7 +23,6 @@ function move_to_json(src, dst) {
msg[fs.basename(dst)] = lines;
fd.write(msg);
fd.close();
print(lines);
}
move_to_json('/sys/fs/pstore/dmesg-ramoops-0', '/tmp/crashlog');

View File

@@ -392,48 +392,59 @@ void process_packet(unsigned char *user, const struct pcap_pkthdr *header,
new_ip->tot_len = htons(ntohs(ip->tot_len) + opt82_len);
new_udp->len = htons(ntohs(udp->len) + opt82_len);
// Recalculate IP checksum
// Reset checksum to 0 before recalculating
new_ip->check = 0;
unsigned int sum = 0;
unsigned short *ip_ptr = (unsigned short *)new_ip;
for (int i = 0; i < ip->ihl * 2; i++)
{
sum += *ip_ptr++;
}
while (sum >> 16)
{
sum = (sum & 0xFFFF) + (sum >> 16);
}
new_ip->check = ~sum;
// Recalculate UDP checksum
// Calculate checksum
uint32_t sum = 0;
uint16_t *ptr = (uint16_t *)new_ip;
int len = new_ip->ihl * 4;
for (int i = 0; i < len / 2; i++) {
sum += ntohs(ptr[i]);
}
// Fold 32-bit sum into 16 bits
while (sum >> 16)
sum = (sum & 0xFFFF) + (sum >> 16);
new_ip->check = htons((uint16_t)~sum);
// Reset checksum to 0 before recalculating
new_udp->check = 0;
sum = 0;
// Pseudo-header
sum +=
(ntohs(new_ip->saddr) & 0xFFFF) + (ntohs(new_ip->saddr >> 16) & 0xFFFF);
sum +=
(ntohs(new_ip->daddr) & 0xFFFF) + (ntohs(new_ip->daddr >> 16) & 0xFFFF);
sum += htons(IPPROTO_UDP);
sum += new_udp->len;
// UDP header and data
unsigned char *udp_start = (unsigned char *)new_udp;
int udp_total_len = ntohs(new_udp->len);
unsigned short *udp_ptr = (unsigned short *)udp_start;
for (int i = 0; i < udp_total_len / 2; i++)
{
sum += *udp_ptr++;
// Build pseudo-header and compute checksum
sum = 0;
uint16_t udp_len = ntohs(new_udp->len);
uint32_t saddr = ntohl(new_ip->saddr);
uint32_t daddr = ntohl(new_ip->daddr);
sum += (saddr >> 16) & 0xFFFF;
sum += saddr & 0xFFFF;
sum += (daddr >> 16) & 0xFFFF;
sum += daddr & 0xFFFF;
sum += IPPROTO_UDP;
sum += udp_len;
// Sum the UDP header + payload
ptr = (uint16_t *)new_udp;
int i;
for (i = 0; i < udp_len / 2; i++) {
sum += ntohs(ptr[i]);
}
if (udp_total_len % 2)
{
sum += *(unsigned char *)udp_ptr;
// If odd length, pad last byte
if (udp_len & 1) {
sum += ((uint8_t *)new_udp)[udp_len - 1] << 8;
}
// Fold 32-bit sum into 16 bits
while (sum >> 16)
{
sum = (sum & 0xFFFF) + (sum >> 16);
}
new_udp->check = ~sum;
new_udp->check = htons((uint16_t)~sum);
// UDP allows 0xFFFF instead of 0x0000 (0 means "no checksum")
if (new_udp->check == 0)
new_udp->check = 0xFFFF;

View File

@@ -1,27 +0,0 @@
From 9afc63f356f10942f924aaa6361f314f06727495 Mon Sep 17 00:00:00 2001
From: John Crispin <john@phrozen.org>
Date: Mon, 21 Jul 2025 13:27:07 +0200
Subject: [PATCH] include/download.mk: switch to using git:// instead of
https://
Signed-off-by: John Crispin <john@phrozen.org>
---
include/download.mk | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/download.mk b/include/download.mk
index 9ab0b6c08f..430bd89307 100644
--- a/include/download.mk
+++ b/include/download.mk
@@ -3,7 +3,7 @@
# Copyright (C) 2006-2012 OpenWrt.org
# Copyright (C) 2016 LEDE project
-PROJECT_GIT = https://git.openwrt.org
+PROJECT_GIT = git://git.openwrt.org
OPENWRT_GIT = $(PROJECT_GIT)
LEDE_GIT = $(PROJECT_GIT)
--
2.34.1

View File

@@ -1,12 +1,12 @@
---
profile: edgecore_eap111
target: mediatek
subtarget: mt7981
subtarget: filogic
description: Build image for the EdgeCore EAP111
image: bin/targets/mediatek/mt7981/openwrt-mediatek-mt7981-edgecore_eap111-squashfs-sysupgrade.bin
image: bin/targets/mediatek/filogic/openwrt-mediatek-filogic-edgecore_eap111-squashfs-sysupgrade.bin
feeds:
- name: mediatek
path: ../../feeds/mediatek-sdk
path: ../../feeds/mediatek
packages:
- mediatek
include: