struct nvo_fragment *fragments, struct refcnt *refcnt ) {
nvo->nvs = nvs;
nvo->fragments = fragments;
- settings_init ( &nvo->settings, &nvo_settings_operations, refcnt,
- "nvo", 0 );
+ settings_init ( &nvo->settings, &nvo_settings_operations, refcnt, 0 );
}
/**
/* Verify and register options */
nvo_init_dhcpopts ( nvo );
- if ( ( rc = register_settings ( &nvo->settings, parent ) ) != 0 )
+ if ( ( rc = register_settings ( &nvo->settings, parent, "nvo" ) ) != 0 )
goto err_register;
DBGC ( nvo, "NVO %p registered\n", nvo );
return NULL;
}
memcpy ( new_child->name, name, sizeof ( new_child->name ) );
- generic_settings_init ( &new_child->generic, NULL, new_child->name );
+ generic_settings_init ( &new_child->generic, NULL );
settings = &new_child->generic.settings;
- register_settings ( settings, parent );
+ register_settings ( settings, parent, new_child->name );
return settings;
}
*
* @v settings Settings block
* @v parent Parent settings block, or NULL
+ * @v name Settings block name
* @ret rc Return status code
*/
-int register_settings ( struct settings *settings, struct settings *parent ) {
+int register_settings ( struct settings *settings, struct settings *parent,
+ const char *name ) {
struct settings *old_settings;
/* NULL parent => add to settings root */
if ( parent == NULL )
parent = &settings_root;
+ /* Apply settings block name */
+ settings->name = name;
+
/* Remove any existing settings with the same name */
if ( ( old_settings = find_child_settings ( parent, settings->name ) ))
unregister_settings ( old_settings );
assert ( phantom->port < PHN_MAX_NUM_PORTS );
settings_init ( &phantom->settings,
&phantom_settings_operations,
- &netdev->refcnt, "clp", PHN_CLP_TAG_MAGIC );
+ &netdev->refcnt, PHN_CLP_TAG_MAGIC );
/* Fix up PCI device */
adjust_pci_device ( pci );
/* Register settings blocks */
parent_settings = netdev_settings ( netdev );
if ( ( rc = register_settings ( &phantom->settings,
- parent_settings ) ) != 0 ) {
+ parent_settings, "clp" ) ) != 0 ) {
DBGC ( phantom, "Phantom %p could not register settings: "
"%s\n", phantom, strerror ( rc ) );
goto err_register_settings;
*/
static inline __attribute__ (( always_inline )) void
netdev_settings_init ( struct net_device *netdev ) {
- generic_settings_init ( &netdev->settings,
- &netdev->refcnt, netdev->name );
+ generic_settings_init ( &netdev->settings, &netdev->refcnt );
netdev->settings.settings.op = &netdev_settings_operations;
}
extern void generic_settings_clear ( struct settings *settings );
extern int register_settings ( struct settings *settings,
- struct settings *parent );
+ struct settings *parent, const char *name );
extern void unregister_settings ( struct settings *settings );
extern int store_setting ( struct settings *settings, struct setting *setting,
* @v settings Settings block
* @v op Settings block operations
* @v refcnt Containing object reference counter, or NULL
- * @v name Settings block name
* @v tag_magic Tag magic
*/
static inline void settings_init ( struct settings *settings,
struct settings_operations *op,
struct refcnt *refcnt,
- const char *name,
unsigned int tag_magic ) {
INIT_LIST_HEAD ( &settings->siblings );
INIT_LIST_HEAD ( &settings->children );
settings->op = op;
settings->refcnt = refcnt;
- settings->name = name;
settings->tag_magic = tag_magic;
}
*
* @v generics Generic settings block
* @v refcnt Containing object reference counter, or NULL
- * @v name Settings block name
*/
static inline void generic_settings_init ( struct generic_settings *generics,
- struct refcnt *refcnt,
- const char *name ) {
+ struct refcnt *refcnt ) {
settings_init ( &generics->settings, &generic_settings_operations,
- refcnt, name, 0 );
+ refcnt, 0 );
INIT_LIST_HEAD ( &generics->list );
}
/** SMBIOS settings */
static struct settings smbios_settings = {
.refcnt = NULL,
- .name = "smbios",
.tag_magic = SMBIOS_EMPTY_TAG,
.siblings = LIST_HEAD_INIT ( smbios_settings.siblings ),
.children = LIST_HEAD_INIT ( smbios_settings.children ),
static void smbios_init ( void ) {
int rc;
- if ( ( rc = register_settings ( &smbios_settings, NULL ) ) != 0 ) {
+ if ( ( rc = register_settings ( &smbios_settings, NULL,
+ "smbios" ) ) != 0 ) {
DBG ( "SMBIOS could not register settings: %s\n",
strerror ( rc ) );
return;
* device, which is usually what we want.
*/
parent = netdev_settings ( last_opened_netdev() );
- if ( ( rc = register_settings ( &dhcppkt->settings, parent ) ) != 0 )
+ if ( ( rc = register_settings ( &dhcppkt->settings, parent,
+ DHCP_SETTINGS_NAME ) ) != 0 )
DBG ( "DHCP could not register cached settings: %s\n",
strerror ( rc ) );
dhcppkt->len = ( offsetof ( struct dhcphdr, options ) +
dhcppkt->options.len );
settings_init ( &dhcppkt->settings,
- &dhcppkt_settings_operations, &dhcppkt->refcnt,
- DHCP_SETTINGS_NAME, 0 );
+ &dhcppkt_settings_operations, &dhcppkt->refcnt, 0 );
}
/* Register per-netdev configuration settings */
if ( ( rc = register_settings ( netdev_settings ( netdev ),
- NULL ) ) != 0 ) {
+ NULL, netdev->name ) ) != 0 ) {
DBGC ( netdev, "NETDEV %s could not register settings: %s\n",
netdev->name, strerror ( rc ) );
goto err_register_settings;
/* Register settings */
parent = netdev_settings ( dhcp->netdev );
settings = &dhcppkt->settings;
- if ( ( rc = register_settings ( settings, parent ) ) != 0 ) {
+ if ( ( rc = register_settings ( settings, parent,
+ DHCP_SETTINGS_NAME ) ) != 0 ) {
DBGC ( dhcp, "DHCP %p could not register settings: %s\n",
dhcp, strerror ( rc ) );
dhcp_finished ( dhcp, rc );
* without performing a ProxyDHCPREQUEST
*/
settings = &dhcp->proxy_offer->settings;
- settings->name = PROXYDHCP_SETTINGS_NAME;
- if ( ( rc = register_settings ( settings,
- NULL ) ) != 0 ) {
+ if ( ( rc = register_settings ( settings, NULL,
+ PROXYDHCP_SETTINGS_NAME ) ) != 0 ) {
DBGC ( dhcp, "DHCP %p could not register "
"proxy settings: %s\n",
dhcp, strerror ( rc ) );
return;
/* Register settings */
- settings->name = PROXYDHCP_SETTINGS_NAME;
- if ( ( rc = register_settings ( settings, NULL ) ) != 0 ) {
+ if ( ( rc = register_settings ( settings, NULL,
+ PROXYDHCP_SETTINGS_NAME ) ) != 0 ) {
DBGC ( dhcp, "DHCP %p could not register proxy settings: %s\n",
dhcp, strerror ( rc ) );
dhcp_finished ( dhcp, rc );
return;
/* Register settings */
- dhcppkt->settings.name = PXEBS_SETTINGS_NAME;
- if ( ( rc = register_settings ( &dhcppkt->settings, NULL ) ) != 0 ) {
+ if ( ( rc = register_settings ( &dhcppkt->settings, NULL,
+ PXEBS_SETTINGS_NAME ) ) != 0 ) {
DBGC ( dhcp, "DHCP %p could not register settings: %s\n",
dhcp, strerror ( rc ) );
dhcp_finished ( dhcp, rc );