diff --git a/lib/core/private-lib-core.h b/lib/core/private-lib-core.h index 6335a89d8..316c29124 100644 --- a/lib/core/private-lib-core.h +++ b/lib/core/private-lib-core.h @@ -710,6 +710,9 @@ int lws_plat_user_colon_group_to_ids(const char *u_colon_g, uid_t *puid, gid_t *pgid); #endif +int +lws_plat_ntpclient_config(struct lws_context *context); + int lws_plat_ifname_to_hwaddr(int fd, const char *ifname, uint8_t *hwaddr, int len); diff --git a/lib/plat/freertos/freertos-resolv.c b/lib/plat/freertos/freertos-resolv.c index 2c7601827..cccd8340d 100644 --- a/lib/plat/freertos/freertos-resolv.c +++ b/lib/plat/freertos/freertos-resolv.c @@ -40,3 +40,20 @@ lws_plat_asyncdns_init(struct lws_context *context, lws_sockaddr46 *sa46) return s; } + +int +lws_plat_ntpclient_config(struct lws_context *context) +{ +#if 0 + char *ntpsrv = getenv("LWS_NTP_SERVER"); + + if (ntpsrv && strlen(ntpsrv) < 64) { + lws_system_blob_heap_append(lws_system_get_blob(context, + LWS_SYSBLOB_TYPE_NTP_SERVER, 0), + (const uint8_t *)ntpsrv, + strlen(ntpsrv)); + return 1; + } +#endif + return 0; +} diff --git a/lib/plat/optee/lws-plat-optee.c b/lib/plat/optee/lws-plat-optee.c index 80c624478..08c60c3c3 100644 --- a/lib/plat/optee/lws-plat-optee.c +++ b/lib/plat/optee/lws-plat-optee.c @@ -235,3 +235,20 @@ lws_plat_recommended_rsa_bits(void) { return 4096; } + +int +lws_plat_ntpclient_config(struct lws_context *context) +{ +#if 0 + char *ntpsrv = getenv("LWS_NTP_SERVER"); + + if (ntpsrv && strlen(ntpsrv) < 64) { + lws_system_blob_heap_append(lws_system_get_blob(context, + LWS_SYSBLOB_TYPE_NTP_SERVER, 0), + (const uint8_t *)ntpsrv, + strlen(ntpsrv)); + return 1; + } +#endif + return 0; +} diff --git a/lib/plat/unix/unix-resolv.c b/lib/plat/unix/unix-resolv.c index f58776348..00a473513 100644 --- a/lib/plat/unix/unix-resolv.c +++ b/lib/plat/unix/unix-resolv.c @@ -88,3 +88,24 @@ lws_plat_asyncdns_init(struct lws_context *context, lws_sockaddr46 *sa46) return LADNS_CONF_SERVER_UNKNOWN; } + +/* + * Platform-specific ntpclient server configuration + */ + +int +lws_plat_ntpclient_config(struct lws_context *context) +{ +#if defined(LWS_HAVE_GETENV) + char *ntpsrv = getenv("LWS_NTP_SERVER"); + + if (ntpsrv && strlen(ntpsrv) < 64) { + lws_system_blob_direct_set(lws_system_get_blob(context, + LWS_SYSBLOB_TYPE_NTP_SERVER, 0), + (const uint8_t *)ntpsrv, + strlen(ntpsrv)); + return 1; + } +#endif + return 0; +} diff --git a/lib/plat/windows/windows-resolv.c b/lib/plat/windows/windows-resolv.c index 146db2c41..3fbdb8e9e 100644 --- a/lib/plat/windows/windows-resolv.c +++ b/lib/plat/windows/windows-resolv.c @@ -48,3 +48,19 @@ lws_plat_asyncdns_init(struct lws_context *context, lws_sockaddr46 *sa46) LADNS_CONF_SERVER_UNKNOWN; } +int +lws_plat_ntpclient_config(struct lws_context *context) +{ +#if defined(LWS_HAVE_GETENV) + char *ntpsrv = getenv("LWS_NTP_SERVER"); + + if (ntpsrv && strlen(ntpsrv) < 64) { + lws_system_blob_heap_append(lws_system_get_blob(context, + LWS_SYSBLOB_TYPE_NTP_SERVER, 0), + (const uint8_t *)ntpsrv, + strlen(ntpsrv)); + return 1; + } +#endif + return 0; +} diff --git a/lib/system/ntpclient/ntpclient.c b/lib/system/ntpclient/ntpclient.c index 4474051ad..8499cd5e3 100644 --- a/lib/system/ntpclient/ntpclient.c +++ b/lib/system/ntpclient/ntpclient.c @@ -159,10 +159,13 @@ callback_ntpc(struct lws *wsi, enum lws_callback_reasons reason, void *user, lws_state_reg_notifier(&wsi->context->mgr_system, &v->notify_link); v->ntp_server_ads = "pool.ntp.org"; + lws_plat_ntpclient_config(v->context); lws_system_blob_get_single_ptr(lws_system_get_blob( v->context, LWS_SYSBLOB_TYPE_NTP_SERVER, 0), (const uint8_t **)&v->ntp_server_ads); + lwsl_info("%s: using ntp server %s\n", __func__, v->ntp_server_ads); + lws_ntpc_retry_conn(&v->sul_conn); break;