net: hostname: Add a function to set the hostname postfix as is.
Fixes: #72363 The existing function to set the postfix is converting postfix string to hexadecimal. Adding a new function to handle a use case where the provided postfix should be used as is without any conversion. Signed-off-by: Vineeta S Narkhede <VineetaSNarkhede@Eaton.com>
This commit is contained in:
parent
b5fdbc21bf
commit
232c802c05
3 changed files with 71 additions and 6 deletions
|
@ -27,10 +27,12 @@ interface is used as a postfix. In Ethernet networks, the link local address
|
||||||
refers to MAC address. For example, if the link local address is
|
refers to MAC address. For example, if the link local address is
|
||||||
``01:02:03:04:05:06``, then the unique hostname could be
|
``01:02:03:04:05:06``, then the unique hostname could be
|
||||||
``zephyr010203040506``. If you want to set the prefix yourself, then call
|
``zephyr010203040506``. If you want to set the prefix yourself, then call
|
||||||
``net_hostname_set_postfix()`` before the network interfaces are created.
|
``net_hostname_set_postfix_str()`` before the network interfaces are created.
|
||||||
For example for the Ethernet networks, the initialization priority is set by
|
Alternatively, if you prefer a hexadecimal conversion for the prefix, then call
|
||||||
:kconfig:option:`CONFIG_ETH_INIT_PRIORITY` so you would need to set the postfix before
|
``net_hostname_set_postfix()``. For example for the Ethernet networks,
|
||||||
that. The postfix can be set only once.
|
the initialization priority is set by :kconfig:option:`CONFIG_ETH_INIT_PRIORITY`
|
||||||
|
so you would need to set the postfix before that.
|
||||||
|
The postfix can be set only once.
|
||||||
|
|
||||||
API Reference
|
API Reference
|
||||||
*************
|
*************
|
||||||
|
|
|
@ -94,11 +94,12 @@ static inline void net_hostname_init(void)
|
||||||
/**
|
/**
|
||||||
* @brief Set the device hostname postfix
|
* @brief Set the device hostname postfix
|
||||||
*
|
*
|
||||||
* @details Set the device hostname to some value. This is only used if
|
* @details Convert the hostname postfix to hexadecimal value and set the
|
||||||
|
* device hostname with the converted value. This is only used if
|
||||||
* CONFIG_NET_HOSTNAME_UNIQUE is set.
|
* CONFIG_NET_HOSTNAME_UNIQUE is set.
|
||||||
*
|
*
|
||||||
* @param hostname_postfix Usually link address. The function will convert this
|
* @param hostname_postfix Usually link address. The function will convert this
|
||||||
* to a string.
|
* to a hexadecimal string.
|
||||||
* @param postfix_len Length of the hostname_postfix array.
|
* @param postfix_len Length of the hostname_postfix array.
|
||||||
*
|
*
|
||||||
* @return 0 if ok, <0 if error
|
* @return 0 if ok, <0 if error
|
||||||
|
@ -116,6 +117,33 @@ static inline int net_hostname_set_postfix(const uint8_t *hostname_postfix,
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_NET_HOSTNAME_UNIQUE */
|
#endif /* CONFIG_NET_HOSTNAME_UNIQUE */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set the postfix string for the network hostname.
|
||||||
|
*
|
||||||
|
* @details Set the hostname postfix string for the network hostname as is, without any conversion.
|
||||||
|
* This is only used if CONFIG_NET_HOSTNAME_UNIQUE is set. The function checks if the combined
|
||||||
|
* length of the default hostname (defined by CONFIG_NET_HOSTNAME) and the postfix does not exceed
|
||||||
|
* NET_HOSTNAME_MAX_LEN. If the postfix is too long, the function returns an
|
||||||
|
* error.
|
||||||
|
*
|
||||||
|
* @param hostname_postfix Pointer to the postfix string to be appended to the network hostname.
|
||||||
|
* @param postfix_len Length of the hostname_postfix array.
|
||||||
|
*
|
||||||
|
* @return 0 if ok, <0 if error
|
||||||
|
*/
|
||||||
|
#if defined(CONFIG_NET_HOSTNAME_UNIQUE)
|
||||||
|
int net_hostname_set_postfix_str(const uint8_t *hostname_postfix,
|
||||||
|
int postfix_len);
|
||||||
|
#else
|
||||||
|
static inline int net_hostname_set_postfix_str(const uint8_t *hostname_postfix,
|
||||||
|
int postfix_len)
|
||||||
|
{
|
||||||
|
ARG_UNUSED(hostname_postfix);
|
||||||
|
ARG_UNUSED(postfix_len);
|
||||||
|
return -EMSGSIZE;
|
||||||
|
}
|
||||||
|
#endif /* CONFIG_NET_HOSTNAME_UNIQUE */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -90,6 +90,41 @@ int net_hostname_set_postfix(const uint8_t *hostname_postfix,
|
||||||
|
|
||||||
NET_DBG("New hostname %s", hostname);
|
NET_DBG("New hostname %s", hostname);
|
||||||
|
|
||||||
|
#if !defined(CONFIG_NET_HOSTNAME_UNIQUE_UPDATE)
|
||||||
|
postfix_set = true;
|
||||||
|
#endif
|
||||||
|
trigger_net_event();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int net_hostname_set_postfix_str(const uint8_t *hostname_postfix,
|
||||||
|
int postfix_len)
|
||||||
|
{
|
||||||
|
#if !defined(CONFIG_NET_HOSTNAME_UNIQUE_UPDATE)
|
||||||
|
static bool postfix_set;
|
||||||
|
#endif
|
||||||
|
int net_hostname_len = sizeof(CONFIG_NET_HOSTNAME) - 1;
|
||||||
|
int hostname_len_remain = (NET_HOSTNAME_MAX_LEN - net_hostname_len) + 1;
|
||||||
|
|
||||||
|
#if !defined(CONFIG_NET_HOSTNAME_UNIQUE_UPDATE)
|
||||||
|
if (postfix_set) {
|
||||||
|
return -EALREADY;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
NET_ASSERT(postfix_len > 0);
|
||||||
|
|
||||||
|
if (hostname_len_remain < postfix_len) {
|
||||||
|
NET_DBG("Hostname postfix length %d is exceeding limit of %d", postfix_len,
|
||||||
|
hostname_len_remain);
|
||||||
|
return -EMSGSIZE;
|
||||||
|
}
|
||||||
|
|
||||||
|
snprintk(&hostname[net_hostname_len], hostname_len_remain, "%s", hostname_postfix);
|
||||||
|
|
||||||
|
NET_DBG("New Unique hostname: %s", hostname);
|
||||||
|
|
||||||
#if !defined(CONFIG_NET_HOSTNAME_UNIQUE_UPDATE)
|
#if !defined(CONFIG_NET_HOSTNAME_UNIQUE_UPDATE)
|
||||||
postfix_set = true;
|
postfix_set = true;
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue