summaryrefslogtreecommitdiffstats
path: root/src/net/ipv6.c
diff options
context:
space:
mode:
authoranimeshbm2024-03-14 13:20:59 +0100
committerGitHub2024-03-14 13:20:59 +0100
commit211ac5f933e97b3accf935dd6dc92e58cc23dbb6 (patch)
treef385c42cc60bdb621bef3c4fe059f7562af0f57b /src/net/ipv6.c
parentsupport for aqc113 (diff)
parent[efi] Update to current EDK2 headers (diff)
downloadipxe-211ac5f933e97b3accf935dd6dc92e58cc23dbb6.tar.gz
ipxe-211ac5f933e97b3accf935dd6dc92e58cc23dbb6.tar.xz
ipxe-211ac5f933e97b3accf935dd6dc92e58cc23dbb6.zip
Merge branch 'ipxe:master' into aqc1xx
Diffstat (limited to 'src/net/ipv6.c')
-rw-r--r--src/net/ipv6.c39
1 files changed, 11 insertions, 28 deletions
diff --git a/src/net/ipv6.c b/src/net/ipv6.c
index ef5e51da..8ee0804d 100644
--- a/src/net/ipv6.c
+++ b/src/net/ipv6.c
@@ -1212,50 +1212,33 @@ static struct settings_operations ipv6_settings_operations = {
.fetch = ipv6_fetch,
};
-/** IPv6 link-local address settings */
-struct ipv6_settings {
- /** Reference counter */
- struct refcnt refcnt;
- /** Settings interface */
- struct settings settings;
-};
-
/**
* Register IPv6 link-local address settings
*
* @v netdev Network device
+ * @v priv Private data
* @ret rc Return status code
*/
-static int ipv6_register_settings ( struct net_device *netdev ) {
+static int ipv6_register_settings ( struct net_device *netdev, void *priv ) {
struct settings *parent = netdev_settings ( netdev );
- struct ipv6_settings *ipv6set;
+ struct settings *settings = priv;
int rc;
- /* Allocate and initialise structure */
- ipv6set = zalloc ( sizeof ( *ipv6set ) );
- if ( ! ipv6set ) {
- rc = -ENOMEM;
- goto err_alloc;
- }
- ref_init ( &ipv6set->refcnt, NULL );
- settings_init ( &ipv6set->settings, &ipv6_settings_operations,
- &ipv6set->refcnt, &ipv6_settings_scope );
- ipv6set->settings.order = IPV6_ORDER_LINK_LOCAL;
-
- /* Register settings */
- if ( ( rc = register_settings ( &ipv6set->settings, parent,
+ /* Initialise and register settings */
+ settings_init ( settings, &ipv6_settings_operations,
+ &netdev->refcnt, &ipv6_settings_scope );
+ settings->order = IPV6_ORDER_LINK_LOCAL;
+ if ( ( rc = register_settings ( settings, parent,
IPV6_SETTINGS_NAME ) ) != 0 )
- goto err_register;
+ return rc;
- err_register:
- ref_put ( &ipv6set->refcnt );
- err_alloc:
- return rc;
+ return 0;
}
/** IPv6 network device driver */
struct net_driver ipv6_driver __net_driver = {
.name = "IPv6",
+ .priv_len = sizeof ( struct settings ),
.probe = ipv6_register_settings,
};