Skip to content

plugins types BUGFIX print same IPv6 format as stored#2509

Closed
jeremie6wind wants to merge 2 commits intoCESNET:develfrom
jeremie6wind:devel
Closed

plugins types BUGFIX print same IPv6 format as stored#2509
jeremie6wind wants to merge 2 commits intoCESNET:develfrom
jeremie6wind:devel

Conversation

@jeremie6wind
Copy link
Copy Markdown
Contributor

Hi,

The stored IPv6 address is sometimes not the same as the printed one.
For instance, if a compressed IPv6 address ::2222:1111 is stored, then a dual stack IPv6 address ::34.34.17.17 will be printed. This is due to the inet_ntop function implementation.
The aim of this patch is to store the IPv6 format and print the same format.
Store the IPv6 format with the value.
Introduce ipv6address_ip2str that converts back the IPv4 part if necessary.

Thank you
Best regards
Jeremie

The stored IPv6 address is sometimes not the same as the printed one.
For instance, if a compressed IPv6 address ::2222:1111 is stored, then
a dual stack IPv6 address ::34.34.17.17 will be printed.
This is due to the inet_ntop function implementation.
The aim of this patch is to store the IPv6 format and print the same
format.
Store the IPv6 format with the value.
Introduce ipv6address_ip2str that converts back the IPv4 part if
necessary.

Signed-off-by: Jeremie Leska <jeremie.leska@6wind.com>
* @param[in] ctx libyang context with dictionary.
* @param[in,out] addr Allocated value for the address.
* @param[out] zone Ipv6 address zone in dictionary.
* @param[out] dual stack format.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No description of the param.

static LY_ERR
ipv6address_str2ip(const char *value, uint32_t value_len, uint32_t options, const struct ly_ctx *ctx,
struct in6_addr *addr, const char **zone, struct ly_err_item **err)
struct in6_addr *addr, const char **zone, uint8_t *dual_stack_format, struct ly_err_item **err)
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You should use ly_bool for boolean values and can then call the param just dual_stack, everywhere.

*/
struct lyd_value_ipv6_address_no_zone {
struct in6_addr addr; /**< IPv6 address in binary */
uint8_t dual_stack_format; /**< Dual stack IPv6 format or compressed format */
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a problematic change. The header is public meaning this is an NBC change. I have just made the new release and it caused enough annoyance so too bad you have not made this change before it. Now it cannot be merged and we have not planned a new major SO version bump anytime soon.

@michalvasko
Copy link
Copy Markdown
Member

Thanks for the effort but I do not think this can be merged at all, unfortunately.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants