[libvirt] [PATCH 00/15] fix misuse of 'const fooPtr'

Mostly cleanup, but at least one bug fix (xen was instantiating a memballoon device too early, during the post-parse callback of the first device rather than after all devices were known). Spawned by the conversation here: https://www.redhat.com/archives/libvir-list/2013-September/thread.html#01311 Eric Blake (15): maint: avoid 'const fooPtr' in public API maint: avoid 'const fooPtr' in hashes maint: avoid 'const fooPtr' in several util files maint: avoid 'const fooPtr' in virnet files maint: avoid 'const fooPtr' in cpu files maint: avoid 'const fooPtr' in nwfilter files maint: avoid 'const fooPtr' in tests maint: avoid 'const fooPtr' in python bindings maint: fix awkward typing of virDomainChrGetDomainPtrs maint: avoid 'const fooPtr' in domain_conf maint: avoid 'const fooPtr' in conf maint: avoid 'const fooPtr' in security maint: avoid 'const fooPtr' in qemu maint: avoid 'const fooPtr' in all remaining places build: syntax check to avoid 'const fooPtr' cfg.mk | 8 ++ include/libvirt/libvirt.h.in | 6 +- python/generator.py | 11 -- python/libvirt-override.c | 4 +- src/conf/cpu_conf.c | 6 +- src/conf/cpu_conf.h | 8 +- src/conf/domain_conf.c | 164 ++++++++++++++++++------------ src/conf/domain_conf.h | 33 +++--- src/conf/interface_conf.c | 30 +++--- src/conf/interface_conf.h | 15 ++- src/conf/netdev_vlan_conf.c | 4 +- src/conf/netdev_vlan_conf.h | 4 +- src/conf/network_conf.c | 44 ++++---- src/conf/network_conf.h | 28 ++--- src/conf/node_device_conf.c | 14 +-- src/conf/node_device_conf.h | 14 +-- src/conf/nwfilter_conf.c | 6 +- src/conf/nwfilter_conf.h | 8 +- src/conf/nwfilter_params.c | 52 +++++----- src/conf/nwfilter_params.h | 32 +++--- src/conf/secret_conf.c | 8 +- src/conf/secret_conf.h | 4 +- src/conf/snapshot_conf.c | 6 +- src/conf/snapshot_conf.h | 6 +- src/cpu/cpu.c | 8 +- src/cpu/cpu.h | 16 +-- src/cpu/cpu_arm.c | 3 +- src/cpu/cpu_powerpc.c | 9 +- src/cpu/cpu_s390.c | 3 +- src/cpu/cpu_x86.c | 18 ++-- src/libxl/libxl_domain.c | 2 +- src/lxc/lxc_domain.c | 4 +- src/lxc/lxc_process.c | 4 +- src/nwfilter/nwfilter_dhcpsnoop.c | 12 +-- src/nwfilter/nwfilter_dhcpsnoop.h | 3 +- src/nwfilter/nwfilter_ebiptables_driver.c | 18 ++-- src/nwfilter/nwfilter_gentech_driver.c | 23 +++-- src/nwfilter/nwfilter_gentech_driver.h | 11 +- src/nwfilter/nwfilter_learnipaddr.c | 9 +- src/nwfilter/nwfilter_learnipaddr.h | 4 +- src/openvz/openvz_driver.c | 2 +- src/qemu/qemu_bridge_filter.c | 10 +- src/qemu/qemu_bridge_filter.h | 10 +- src/qemu/qemu_command.c | 34 +++---- src/qemu/qemu_conf.c | 2 +- src/qemu/qemu_domain.c | 5 +- src/qemu/qemu_driver.c | 2 +- src/qemu/qemu_hostdev.c | 2 +- src/qemu/qemu_monitor_json.c | 2 +- src/security/security_apparmor.c | 22 ++-- src/security/security_selinux.c | 2 +- src/uml/uml_driver.c | 15 +-- src/util/virbuffer.c | 8 +- src/util/virbuffer.h | 8 +- src/util/virebtables.c | 4 +- src/util/virebtables.h | 6 +- src/util/virhash.c | 21 ++-- src/util/virhash.h | 19 ++-- src/util/virmacaddr.c | 16 +-- src/util/virmacaddr.h | 16 +-- src/util/virnetdev.c | 20 ++-- src/util/virnetdev.h | 8 +- src/util/virnetdevbandwidth.c | 6 +- src/util/virnetdevbandwidth.h | 7 +- src/util/virnetdevmacvlan.c | 22 ++-- src/util/virnetdevmacvlan.h | 12 +-- src/util/virnetdevopenvswitch.c | 3 +- src/util/virnetdevopenvswitch.h | 3 +- src/util/virnetdevtap.c | 2 +- src/util/virnetdevtap.h | 4 +- src/util/virnetdevvlan.c | 6 +- src/util/virnetdevvlan.h | 6 +- src/util/virnetdevvportprofile.c | 28 ++--- src/util/virnetdevvportprofile.h | 10 +- src/util/virnetlink.c | 10 +- src/util/virnetlink.h | 8 +- src/util/virsocketaddr.c | 54 +++++----- src/util/virsocketaddr.h | 52 +++++----- src/xen/xen_driver.c | 12 ++- src/xen/xm_internal.c | 4 +- tests/cputest.c | 4 +- tests/qemucapabilitiestest.c | 2 +- tests/qemumonitorjsontest.c | 21 ++-- tests/virhashtest.c | 8 +- 84 files changed, 625 insertions(+), 555 deletions(-) -- 1.8.3.1

'const fooPtr' is the same as 'foo * const' (the pointer won't change, but it's contents can). But in general, if an interface is trying to be const-correct, it should be using 'const foo *' (the pointer is to data that can't be changed). Fix up offenders in the public API. Note that this is an API change; but see commit 6ac6f59, where we first argued that this change is harmless (but with that commit not actually making the change that it claimed to be making): Although this is an API change (not ABI though), real callers won't be impacted. Why? 1. these callback members are read-only, so it is less likely that someone is trying to assign into the struct members. 2. The only way to register a virConnectDomainEventGraphicsCallback is to cast it through a call to virConnectDomainEventRegisterAny. That is, even if the user's callback function leaves out the const, we never use the typedef as the direct type of any API parameter. Since they are already casting their function pointer into a munged type before registering it, their code will continue to compile. * include/libvirt/libvirt.h.in (virConnectDomainEventGraphicsCallback): Use intended type. --- include/libvirt/libvirt.h.in | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/include/libvirt/libvirt.h.in b/include/libvirt/libvirt.h.in index 83c219e..0a1911c 100644 --- a/include/libvirt/libvirt.h.in +++ b/include/libvirt/libvirt.h.in @@ -4691,10 +4691,10 @@ typedef virDomainEventGraphicsSubject *virDomainEventGraphicsSubjectPtr; typedef void (*virConnectDomainEventGraphicsCallback)(virConnectPtr conn, virDomainPtr dom, int phase, - const virDomainEventGraphicsAddressPtr local, - const virDomainEventGraphicsAddressPtr remote, + const virDomainEventGraphicsAddress *local, + const virDomainEventGraphicsAddress *remote, const char *authScheme, - const virDomainEventGraphicsSubjectPtr subject, + const virDomainEventGraphicsSubject *subject, void *opaque); /** -- 1.8.3.1

On Tue, Oct 08, 2013 at 11:24:58AM -0600, Eric Blake wrote:
'const fooPtr' is the same as 'foo * const' (the pointer won't change, but it's contents can). But in general, if an interface is trying to be const-correct, it should be using 'const foo *' (the pointer is to data that can't be changed).
Fix up offenders in the public API. Note that this is an API change; but see commit 6ac6f59, where we first argued that this change is harmless (but with that commit not actually making the change that it claimed to be making):
Although this is an API change (not ABI though), real callers won't be impacted. Why? 1. these callback members are read-only, so it is less likely that someone is trying to assign into the struct members. 2. The only way to register a virConnectDomainEventGraphicsCallback is to cast it through a call to virConnectDomainEventRegisterAny. That is, even if the user's callback function leaves out the const, we never use the typedef as the direct type of any API parameter. Since they are already casting their function pointer into a munged type before registering it, their code will continue to compile.
* include/libvirt/libvirt.h.in (virConnectDomainEventGraphicsCallback): Use intended type. --- include/libvirt/libvirt.h.in | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
ACK Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|

'const fooPtr' is the same as 'foo * const' (the pointer won't change, but it's contents can). But in general, if an interface is trying to be const-correct, it should be using 'const foo *' (the pointer is to data that can't be changed). Fix up virhash to provide a const-correct interface: all actions that don't modify the table take a const table. Note that in one case (virHashSearch), we actually strip const away - we aren't modifying the contents of the table, so much as associated data for ensuring that the code uses the table correctly (if this were C++, it would be a case for the 'mutable' keyword). * src/util/virhash.h (virHashKeyComparator, virHashEqual): Use intended type. (virHashSize, virHashTableSize, virHashLookup, virHashSearch): Make const-correct. * src/util/virhash.c (virHashEqualData, virHashEqual) (virHashLookup, virHashSize, virHashTableSize, virHashSearch) (virHashComputeKey): Fix fallout. * src/conf/nwfilter_params.c (virNWFilterFormatParameterNameSorter): Likewise. * src/nwfilter/nwfilter_ebiptables_driver.c (ebiptablesFilterOrderSort): Likewise. * tests/virhashtest.c (testHashGetItemsCompKey) (testHashGetItemsCompValue): Likewise. Signed-off-by: Eric Blake <eblake@redhat.com> --- src/conf/nwfilter_params.c | 8 ++++---- src/nwfilter/nwfilter_ebiptables_driver.c | 6 +++--- src/util/virhash.c | 21 ++++++++++++--------- src/util/virhash.h | 19 ++++++++++--------- tests/virhashtest.c | 8 ++++---- 5 files changed, 33 insertions(+), 29 deletions(-) diff --git a/src/conf/nwfilter_params.c b/src/conf/nwfilter_params.c index 7ae4a44..c23de65 100644 --- a/src/conf/nwfilter_params.c +++ b/src/conf/nwfilter_params.c @@ -1,7 +1,7 @@ /* * nwfilter_params.c: parsing and data maintenance of filter parameters * - * Copyright (C) 2011-2012 Red Hat, Inc. + * Copyright (C) 2011-2013 Red Hat, Inc. * Copyright (C) 2010 IBM Corporation * * This library is free software; you can redistribute it and/or @@ -877,10 +877,10 @@ err_exit: static int -virNWFilterFormatParameterNameSorter(const virHashKeyValuePairPtr a, - const virHashKeyValuePairPtr b) +virNWFilterFormatParameterNameSorter(const virHashKeyValuePair *a, + const virHashKeyValuePair *b) { - return strcmp((const char *)a->key, (const char *)b->key); + return strcmp(a->key, b->key); } int diff --git a/src/nwfilter/nwfilter_ebiptables_driver.c b/src/nwfilter/nwfilter_ebiptables_driver.c index 56c962b..2fd8afb 100644 --- a/src/nwfilter/nwfilter_ebiptables_driver.c +++ b/src/nwfilter/nwfilter_ebiptables_driver.c @@ -1,7 +1,7 @@ /* * nwfilter_ebiptables_driver.c: driver for ebtables/iptables on tap devices * - * Copyright (C) 2011-2012 Red Hat, Inc. + * Copyright (C) 2011-2013 Red Hat, Inc. * Copyright (C) 2010-2012 IBM Corp. * Copyright (C) 2010-2012 Stefan Berger * @@ -3596,8 +3596,8 @@ ebiptablesRuleOrderSortPtr(const void *a, const void *b) } static int -ebiptablesFilterOrderSort(const virHashKeyValuePairPtr a, - const virHashKeyValuePairPtr b) +ebiptablesFilterOrderSort(const virHashKeyValuePair *a, + const virHashKeyValuePair *b) { /* elements' values has been limited to range [-1000, 1000] */ return *(virNWFilterChainPriority *)a->value - diff --git a/src/util/virhash.c b/src/util/virhash.c index 41c5920..0857805 100644 --- a/src/util/virhash.c +++ b/src/util/virhash.c @@ -3,7 +3,7 @@ * * Reference: Your favorite introductory book on algorithms * - * Copyright (C) 2005-2012 Red Hat, Inc. + * Copyright (C) 2005-2013 Red Hat, Inc. * Copyright (C) 2000 Bjorn Reese and Daniel Veillard. * * Permission to use, copy, modify, and distribute this software for any @@ -98,7 +98,7 @@ static void virHashStrFree(void *name) static size_t -virHashComputeKey(virHashTablePtr table, const void *name) +virHashComputeKey(const virHashTable *table, const void *name) { uint32_t value = table->keyCode(name, table->seed); return value % table->size; @@ -361,7 +361,7 @@ virHashUpdateEntry(virHashTablePtr table, const void *name, * Returns a pointer to the userdata */ void * -virHashLookup(virHashTablePtr table, const void *name) +virHashLookup(const virHashTable *table, const void *name) { size_t key; virHashEntryPtr entry; @@ -411,7 +411,7 @@ void *virHashSteal(virHashTablePtr table, const void *name) * -1 in case of error */ ssize_t -virHashSize(virHashTablePtr table) +virHashSize(const virHashTable *table) { if (table == NULL) return -1; @@ -428,7 +428,7 @@ virHashSize(virHashTablePtr table) * -1 in case of error */ ssize_t -virHashTableSize(virHashTablePtr table) +virHashTableSize(const virHashTable *table) { if (table == NULL) return -1; @@ -609,12 +609,15 @@ virHashRemoveAll(virHashTablePtr table) * returns non-zero will be returned by this function. * The elements are processed in a undefined order */ -void *virHashSearch(virHashTablePtr table, +void *virHashSearch(const virHashTable *ctable, virHashSearcher iter, const void *data) { size_t i; + /* Cast away const for internal detection of misuse. */ + virHashTablePtr table = (virHashTablePtr)ctable; + if (table == NULL || iter == NULL) return NULL; @@ -683,7 +686,7 @@ virHashKeyValuePairPtr virHashGetItems(virHashTablePtr table, struct virHashEqualData { bool equal; - const virHashTablePtr table2; + const virHashTable *table2; virHashValueComparator compar; }; @@ -704,8 +707,8 @@ static int virHashEqualSearcher(const void *payload, const void *name, return 0; } -bool virHashEqual(const virHashTablePtr table1, - const virHashTablePtr table2, +bool virHashEqual(const virHashTable *table1, + const virHashTable *table2, virHashValueComparator compar) { struct virHashEqualData data = { diff --git a/src/util/virhash.h b/src/util/virhash.h index 2c04f81..4de9a14 100644 --- a/src/util/virhash.h +++ b/src/util/virhash.h @@ -3,7 +3,7 @@ * Description: This module implements the hash table and allocation and * deallocation of domains and connections * - * Copyright (C) 2005-2012 Red Hat, Inc. + * Copyright (C) 2005-2013 Red Hat, Inc. * Copyright (C) 2000 Bjorn Reese and Daniel Veillard. * * Author: Bjorn Reese <bjorn.reese@systematic.dk> @@ -108,8 +108,8 @@ virHashTablePtr virHashCreateFull(ssize_t size, virHashKeyCopy keyCopy, virHashKeyFree keyFree); void virHashFree(virHashTablePtr table); -ssize_t virHashSize(virHashTablePtr table); -ssize_t virHashTableSize(virHashTablePtr table); +ssize_t virHashSize(const virHashTable *table); +ssize_t virHashTableSize(const virHashTable *table); /* * Add a new entry to the hash table. @@ -134,7 +134,7 @@ ssize_t virHashRemoveAll(virHashTablePtr table); /* * Retrieve the userdata. */ -void *virHashLookup(virHashTablePtr table, const void *name); +void *virHashLookup(const virHashTable *table, const void *name); /* * Retrieve & remove the userdata. @@ -159,8 +159,8 @@ struct _virHashKeyValuePair { const void *key; const void *value; }; -typedef int (*virHashKeyComparator)(const virHashKeyValuePairPtr, - const virHashKeyValuePairPtr); +typedef int (*virHashKeyComparator)(const virHashKeyValuePair *, + const virHashKeyValuePair *); virHashKeyValuePairPtr virHashGetItems(virHashTablePtr table, virHashKeyComparator compar); @@ -171,8 +171,8 @@ virHashKeyValuePairPtr virHashGetItems(virHashTablePtr table, * of two keys. */ typedef int (*virHashValueComparator)(const void *value1, const void *value2); -bool virHashEqual(const virHashTablePtr table1, - const virHashTablePtr table2, +bool virHashEqual(const virHashTable *table1, + const virHashTable *table2, virHashValueComparator compar); @@ -181,6 +181,7 @@ bool virHashEqual(const virHashTablePtr table1, */ ssize_t virHashForEach(virHashTablePtr table, virHashIterator iter, void *data); ssize_t virHashRemoveSet(virHashTablePtr table, virHashSearcher iter, const void *data); -void *virHashSearch(virHashTablePtr table, virHashSearcher iter, const void *data); +void *virHashSearch(const virHashTable *table, virHashSearcher iter, + const void *data); #endif /* ! __VIR_HASH_H__ */ diff --git a/tests/virhashtest.c b/tests/virhashtest.c index 5119781..dbc0dba 100644 --- a/tests/virhashtest.c +++ b/tests/virhashtest.c @@ -499,15 +499,15 @@ cleanup: static int -testHashGetItemsCompKey(const virHashKeyValuePairPtr a, - const virHashKeyValuePairPtr b) +testHashGetItemsCompKey(const virHashKeyValuePair *a, + const virHashKeyValuePair *b) { return strcmp(a->key, b->key); } static int -testHashGetItemsCompValue(const virHashKeyValuePairPtr a, - const virHashKeyValuePairPtr b) +testHashGetItemsCompValue(const virHashKeyValuePair *a, + const virHashKeyValuePair *b) { return strcmp(a->value, b->value); } -- 1.8.3.1

On Tue, Oct 08, 2013 at 11:24:59AM -0600, Eric Blake wrote:
'const fooPtr' is the same as 'foo * const' (the pointer won't change, but it's contents can). But in general, if an interface is trying to be const-correct, it should be using 'const foo *' (the pointer is to data that can't be changed).
Fix up virhash to provide a const-correct interface: all actions that don't modify the table take a const table. Note that in one case (virHashSearch), we actually strip const away - we aren't modifying the contents of the table, so much as associated data for ensuring that the code uses the table correctly (if this were C++, it would be a case for the 'mutable' keyword).
* src/util/virhash.h (virHashKeyComparator, virHashEqual): Use intended type. (virHashSize, virHashTableSize, virHashLookup, virHashSearch): Make const-correct. * src/util/virhash.c (virHashEqualData, virHashEqual) (virHashLookup, virHashSize, virHashTableSize, virHashSearch) (virHashComputeKey): Fix fallout. * src/conf/nwfilter_params.c (virNWFilterFormatParameterNameSorter): Likewise. * src/nwfilter/nwfilter_ebiptables_driver.c (ebiptablesFilterOrderSort): Likewise. * tests/virhashtest.c (testHashGetItemsCompKey) (testHashGetItemsCompValue): Likewise.
Signed-off-by: Eric Blake <eblake@redhat.com> --- src/conf/nwfilter_params.c | 8 ++++---- src/nwfilter/nwfilter_ebiptables_driver.c | 6 +++--- src/util/virhash.c | 21 ++++++++++++--------- src/util/virhash.h | 19 ++++++++++--------- tests/virhashtest.c | 8 ++++---- 5 files changed, 33 insertions(+), 29 deletions(-)
ACK Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|

'const fooPtr' is the same as 'foo * const' (the pointer won't change, but it's contents can). But in general, if an interface is trying to be const-correct, it should be using 'const foo *' (the pointer is to data that can't be changed). Fix up offenders in src/util outside of the virnet namespace. Also, make a few virSocketAddr functions const-correct, for easier conversions in future patches. * src/util/virbuffer.h (virBufferError, virBufferUse) (virBufferGetIndent): Use intended type. * src/util/virmacaddr.h (virMacAddrCmp, virMacAddrCmpRaw) (virMacAddrSet, virMcAddrFormat, virMacAddrIsUnicast) (virMacAddrIsMulticast): Likewise. * src/util/virebtables.h (ebtablesAddForwardAllowIn) (ebtablesRemoveForwardAllowIn): Likewise. * src/util/virsocketaddr.h (virSocketAddrSetIPv4Addr): Drop incorrect const. (virMacAddrGetRaw, virSocketAddrFormat, virSocketAddrFormatFull): Make const-correct. (virSocketAddrMask, virSocketAddrMaskByPrefix) (virSocketAddrBroadcast, virSocketAddrBroadcastByPrefix) (virSocketAddrGetNumNetmaskBits, virSocketAddrGetIpPrefix) (virSocketAddrEqual, virSocketAddrIsPrivate) (virSocketAddrIsWildcard): Use intended type. * src/util/virbuffer.c (virBufferError, virBufferUse) (virBufferGetIndent): Fix fallout. * src/util/virmacaddr.c (virMacAddrCmp, virMacAddrCmpRaw) (virMacAddrSet, virMcAddrFormat, virMacAddrIsUnicast) (virMacAddrIsMulticast): Likewise. * src/util/virebtables.c (ebtablesAddForwardAllowIn) (ebtablesRemoveForwardAllowIn): Likewise. * src/util/virsocketaddr.c (virSocketAddrMask, virMacAddrGetRaw) (virSocketAddrMaskByPrefix, virSocketAddrBroadcast) (virSocketAddrBroadcastByPrefix, virSocketAddrGetNumNetmaskBits) (virSocketAddrGetIpPrefix, virSocketAddrEqual) (virSocketAddrIsPrivate, virSocketAddrIsWildcard) (virSocketAddrGetIPv4Addr, virSocketAddrGetIPv6Addr) (virSocketAddrFormat, virSocketAddrFormatFull): Likewise. Signed-off-by: Eric Blake <eblake@redhat.com> --- src/util/virbuffer.c | 8 +++---- src/util/virbuffer.h | 8 +++---- src/util/virebtables.c | 4 ++-- src/util/virebtables.h | 6 +++--- src/util/virmacaddr.c | 16 +++++++------- src/util/virmacaddr.h | 16 +++++++------- src/util/virsocketaddr.c | 54 +++++++++++++++++++++++++++--------------------- src/util/virsocketaddr.h | 52 +++++++++++++++++++++++----------------------- 8 files changed, 85 insertions(+), 79 deletions(-) diff --git a/src/util/virbuffer.c b/src/util/virbuffer.c index ee0be6c..eb29012 100644 --- a/src/util/virbuffer.c +++ b/src/util/virbuffer.c @@ -1,7 +1,7 @@ /* * virbuffer.c: buffers for libvirt * - * Copyright (C) 2005-2008, 2010-2012 Red Hat, Inc. + * Copyright (C) 2005-2008, 2010-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -95,7 +95,7 @@ virBufferAdjustIndent(virBufferPtr buf, int indent) * Return the current auto-indent value, or -1 if there has been an error. */ int -virBufferGetIndent(const virBufferPtr buf, bool dynamic) +virBufferGetIndent(const virBuffer *buf, bool dynamic) { if (!buf || buf->error) return -1; @@ -255,7 +255,7 @@ void virBufferFreeAndReset(virBufferPtr buf) * Return positive errno value or -1 on usage error, 0 if normal */ int -virBufferError(const virBufferPtr buf) +virBufferError(const virBuffer *buf) { if (buf == NULL) return -1; @@ -270,7 +270,7 @@ virBufferError(const virBufferPtr buf) * Return the string usage in bytes */ unsigned int -virBufferUse(const virBufferPtr buf) +virBufferUse(const virBuffer *buf) { if (buf == NULL) return 0; diff --git a/src/util/virbuffer.h b/src/util/virbuffer.h index e0b77ab..a0cc4e6 100644 --- a/src/util/virbuffer.h +++ b/src/util/virbuffer.h @@ -1,7 +1,7 @@ /* * virbuffer.h: buffers for libvirt * - * Copyright (C) 2005-2008, 2011, 2012 Red Hat, Inc. + * Copyright (C) 2005-2008, 2011-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -52,8 +52,8 @@ struct _virBuffer { const char *virBufferCurrentContent(virBufferPtr buf); char *virBufferContentAndReset(virBufferPtr buf); void virBufferFreeAndReset(virBufferPtr buf); -int virBufferError(const virBufferPtr buf); -unsigned int virBufferUse(const virBufferPtr buf); +int virBufferError(const virBuffer *buf); +unsigned int virBufferUse(const virBuffer *buf); void virBufferAdd(virBufferPtr buf, const char *str, int len); void virBufferAddChar(virBufferPtr buf, char c); void virBufferAsprintf(virBufferPtr buf, const char *format, ...) @@ -75,7 +75,7 @@ void virBufferURIEncodeString(virBufferPtr buf, const char *str); virBufferAdd(buf_, "" literal_string_ "", sizeof(literal_string_) - 1) void virBufferAdjustIndent(virBufferPtr buf, int indent); -int virBufferGetIndent(const virBufferPtr buf, bool dynamic); +int virBufferGetIndent(const virBuffer *buf, bool dynamic); void virBufferTrim(virBufferPtr buf, const char *trim, int len); diff --git a/src/util/virebtables.c b/src/util/virebtables.c index 6819686..67f281c 100644 --- a/src/util/virebtables.c +++ b/src/util/virebtables.c @@ -449,7 +449,7 @@ ebtablesForwardAllowIn(ebtablesContext *ctx, int ebtablesAddForwardAllowIn(ebtablesContext *ctx, const char *iface, - const virMacAddrPtr mac) + const virMacAddr *mac) { char macaddr[VIR_MAC_STRING_BUFLEN]; @@ -472,7 +472,7 @@ ebtablesAddForwardAllowIn(ebtablesContext *ctx, int ebtablesRemoveForwardAllowIn(ebtablesContext *ctx, const char *iface, - const virMacAddrPtr mac) + const virMacAddr *mac) { char macaddr[VIR_MAC_STRING_BUFLEN]; diff --git a/src/util/virebtables.h b/src/util/virebtables.h index 3dfe32b..c0d443d 100644 --- a/src/util/virebtables.h +++ b/src/util/virebtables.h @@ -1,8 +1,8 @@ /* * virebtables.c: Helper APIs for managing ebtables * + * Copyright (C) 2007-2008, 2013 Red Hat, Inc. * Copyright (C) 2009 IBM Corp. - * Copyright (C) 2007, 2008 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -54,10 +54,10 @@ void ebtablesSaveRules (ebtablesContext *ctx); int ebtablesAddForwardAllowIn (ebtablesContext *ctx, const char *iface, - const virMacAddrPtr mac); + const virMacAddr *mac); int ebtablesRemoveForwardAllowIn (ebtablesContext *ctx, const char *iface, - const virMacAddrPtr mac); + const virMacAddr *mac); int ebtablesAddForwardPolicyReject(ebtablesContext *ctx); diff --git a/src/util/virmacaddr.c b/src/util/virmacaddr.c index 2e9328d..ebd1182 100644 --- a/src/util/virmacaddr.c +++ b/src/util/virmacaddr.c @@ -1,7 +1,7 @@ /* * virmacaddr.c: MAC address handling * - * Copyright (C) 2006-2012 Red Hat, Inc. + * Copyright (C) 2006-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -74,7 +74,7 @@ virMacAddrCompare(const char *p, const char *q) * > 0 if mac1 > mac2 */ int -virMacAddrCmp(const virMacAddrPtr mac1, const virMacAddrPtr mac2) +virMacAddrCmp(const virMacAddr *mac1, const virMacAddr *mac2) { return memcmp(mac1->addr, mac2->addr, VIR_MAC_BUFLEN); } @@ -89,7 +89,7 @@ virMacAddrCmp(const virMacAddrPtr mac1, const virMacAddrPtr mac2) * > 0 if mac1 > mac2 */ int -virMacAddrCmpRaw(const virMacAddrPtr mac1, +virMacAddrCmpRaw(const virMacAddr *mac1, const unsigned char mac2[VIR_MAC_BUFLEN]) { return memcmp(mac1->addr, mac2, VIR_MAC_BUFLEN); @@ -103,7 +103,7 @@ virMacAddrCmpRaw(const virMacAddrPtr mac1, * Copy src to dst */ void -virMacAddrSet(virMacAddrPtr dst, const virMacAddrPtr src) +virMacAddrSet(virMacAddrPtr dst, const virMacAddr *src) { memcpy(dst, src, sizeof(*src)); } @@ -129,7 +129,7 @@ virMacAddrSetRaw(virMacAddrPtr dst, const unsigned char src[VIR_MAC_BUFLEN]) * Copies the MAC address into raw memory */ void -virMacAddrGetRaw(virMacAddrPtr src, unsigned char dst[VIR_MAC_BUFLEN]) +virMacAddrGetRaw(const virMacAddr *src, unsigned char dst[VIR_MAC_BUFLEN]) { memcpy(dst, src->addr, VIR_MAC_BUFLEN); } @@ -187,7 +187,7 @@ virMacAddrParse(const char* str, virMacAddrPtr addr) * Returns a pointer to the resulting character string. */ const char * -virMacAddrFormat(const virMacAddrPtr addr, +virMacAddrFormat(const virMacAddr *addr, char *str) { snprintf(str, VIR_MAC_STRING_BUFLEN, @@ -211,13 +211,13 @@ void virMacAddrGenerate(const unsigned char prefix[VIR_MAC_PREFIX_BUFLEN], /* The low order bit of the first byte is the "multicast" bit. */ bool -virMacAddrIsMulticast(const virMacAddrPtr mac) +virMacAddrIsMulticast(const virMacAddr *mac) { return !!(mac->addr[0] & 1); } bool -virMacAddrIsUnicast(const virMacAddrPtr mac) +virMacAddrIsUnicast(const virMacAddr *mac) { return !(mac->addr[0] & 1); } diff --git a/src/util/virmacaddr.h b/src/util/virmacaddr.h index 3697a5c..49efc36 100644 --- a/src/util/virmacaddr.h +++ b/src/util/virmacaddr.h @@ -1,7 +1,7 @@ /* * virmacaddr.h: MAC address handling * - * Copyright (C) 2006-2012 Red Hat, Inc. + * Copyright (C) 2006-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -38,20 +38,20 @@ struct _virMacAddr { }; int virMacAddrCompare(const char *mac1, const char *mac2); -int virMacAddrCmp(const virMacAddrPtr mac1, const virMacAddrPtr mac2); -int virMacAddrCmpRaw(const virMacAddrPtr mac1, +int virMacAddrCmp(const virMacAddr *mac1, const virMacAddr *mac2); +int virMacAddrCmpRaw(const virMacAddr *mac1, const unsigned char s[VIR_MAC_BUFLEN]); -void virMacAddrSet(virMacAddrPtr dst, const virMacAddrPtr src); +void virMacAddrSet(virMacAddrPtr dst, const virMacAddr *src); void virMacAddrSetRaw(virMacAddrPtr dst, const unsigned char s[VIR_MAC_BUFLEN]); -void virMacAddrGetRaw(virMacAddrPtr src, unsigned char dst[VIR_MAC_BUFLEN]); -const char *virMacAddrFormat(const virMacAddrPtr addr, +void virMacAddrGetRaw(const virMacAddr *src, unsigned char dst[VIR_MAC_BUFLEN]); +const char *virMacAddrFormat(const virMacAddr *addr, char *str); void virMacAddrGenerate(const unsigned char prefix[VIR_MAC_PREFIX_BUFLEN], virMacAddrPtr addr); int virMacAddrParse(const char* str, virMacAddrPtr addr) ATTRIBUTE_RETURN_CHECK; -bool virMacAddrIsUnicast(const virMacAddrPtr addr); -bool virMacAddrIsMulticast(const virMacAddrPtr addr); +bool virMacAddrIsUnicast(const virMacAddr *addr); +bool virMacAddrIsMulticast(const virMacAddr *addr); bool virMacAddrIsBroadcastRaw(const unsigned char s[VIR_MAC_BUFLEN]); #endif /* __VIR_MACADDR_H__ */ diff --git a/src/util/virsocketaddr.c b/src/util/virsocketaddr.c index 3e01baf..03de62b 100644 --- a/src/util/virsocketaddr.c +++ b/src/util/virsocketaddr.c @@ -40,11 +40,14 @@ typedef virSocketAddrIPv4 *virSocketAddrIPv4Ptr; typedef unsigned short virSocketAddrIPv6[8]; typedef virSocketAddrIPv6 *virSocketAddrIPv6Ptr; -static int virSocketAddrGetIPv4Addr(virSocketAddrPtr addr, virSocketAddrIPv4Ptr tab) { +static int +virSocketAddrGetIPv4Addr(const virSocketAddr *addr, + virSocketAddrIPv4Ptr tab) +{ unsigned long val; size_t i; - if ((addr == NULL) || (tab == NULL) || (addr->data.stor.ss_family != AF_INET)) + if (!addr || !tab || addr->data.stor.ss_family != AF_INET) return -1; val = ntohl(addr->data.inet4.sin_addr.s_addr); @@ -57,10 +60,12 @@ static int virSocketAddrGetIPv4Addr(virSocketAddrPtr addr, virSocketAddrIPv4Ptr return 0; } -static int virSocketAddrGetIPv6Addr(virSocketAddrPtr addr, virSocketAddrIPv6Ptr tab) { +static int +virSocketAddrGetIPv6Addr(const virSocketAddr *addr, virSocketAddrIPv6Ptr tab) +{ size_t i; - if ((addr == NULL) || (tab == NULL) || (addr->data.stor.ss_family != AF_INET6)) + if (!addr || !tab || addr->data.stor.ss_family != AF_INET6) return -1; for (i = 0; i < 8; i++) { @@ -173,7 +178,7 @@ virSocketAddrSetIPv4Addr(virSocketAddrPtr addr, uint32_t val) * if their IP addresses and ports are equal. */ bool -virSocketAddrEqual(const virSocketAddrPtr s1, const virSocketAddrPtr s2) +virSocketAddrEqual(const virSocketAddr *s1, const virSocketAddr *s2) { if (s1->data.stor.ss_family != s2->data.stor.ss_family) return false; @@ -206,7 +211,7 @@ virSocketAddrEqual(const virSocketAddrPtr s1, const virSocketAddrPtr s2) * See RFC1918, RFC3484, and RFC4193 for details. */ bool -virSocketAddrIsPrivate(const virSocketAddrPtr addr) +virSocketAddrIsPrivate(const virSocketAddr *addr) { unsigned long val; @@ -233,7 +238,7 @@ virSocketAddrIsPrivate(const virSocketAddrPtr addr) * Check if passed address is a variant of ANYCAST address. */ bool -virSocketAddrIsWildcard(const virSocketAddrPtr addr) +virSocketAddrIsWildcard(const virSocketAddr *addr) { struct in_addr tmp = { .s_addr = INADDR_ANY }; switch (addr->data.stor.ss_family) { @@ -255,7 +260,8 @@ virSocketAddrIsWildcard(const virSocketAddrPtr addr) * Caller must free the returned string */ char * -virSocketAddrFormat(virSocketAddrPtr addr) { +virSocketAddrFormat(const virSocketAddr *addr) +{ return virSocketAddrFormatFull(addr, false, NULL); } @@ -271,7 +277,7 @@ virSocketAddrFormat(virSocketAddrPtr addr) { * Caller must free the returned string */ char * -virSocketAddrFormatFull(virSocketAddrPtr addr, +virSocketAddrFormatFull(const virSocketAddr *addr, bool withService, const char *separator) { @@ -399,9 +405,9 @@ int virSocketAddrIsNetmask(virSocketAddrPtr netmask) { * Returns 0 in case of success, or -1 on error. */ int -virSocketAddrMask(const virSocketAddrPtr addr, - const virSocketAddrPtr netmask, - virSocketAddrPtr network) +virSocketAddrMask(const virSocketAddr *addr, + const virSocketAddr *netmask, + virSocketAddrPtr network) { if (addr->data.stor.ss_family != netmask->data.stor.ss_family) { network->data.stor.ss_family = AF_UNSPEC; @@ -445,9 +451,9 @@ virSocketAddrMask(const virSocketAddrPtr addr, * Returns 0 in case of success, or -1 on error. */ int -virSocketAddrMaskByPrefix(const virSocketAddrPtr addr, - unsigned int prefix, - virSocketAddrPtr network) +virSocketAddrMaskByPrefix(const virSocketAddr *addr, + unsigned int prefix, + virSocketAddrPtr network) { virSocketAddr netmask; @@ -472,9 +478,9 @@ virSocketAddrMaskByPrefix(const virSocketAddrPtr addr, * Returns 0 in case of success, or -1 on error. */ int -virSocketAddrBroadcast(const virSocketAddrPtr addr, - const virSocketAddrPtr netmask, - virSocketAddrPtr broadcast) +virSocketAddrBroadcast(const virSocketAddr *addr, + const virSocketAddr *netmask, + virSocketAddrPtr broadcast) { if ((addr->data.stor.ss_family != AF_INET) || (netmask->data.stor.ss_family != AF_INET)) { @@ -502,9 +508,9 @@ virSocketAddrBroadcast(const virSocketAddrPtr addr, * Returns 0 in case of success, or -1 on error. */ int -virSocketAddrBroadcastByPrefix(const virSocketAddrPtr addr, - unsigned int prefix, - virSocketAddrPtr broadcast) +virSocketAddrBroadcastByPrefix(const virSocketAddr *addr, + unsigned int prefix, + virSocketAddrPtr broadcast) { virSocketAddr netmask; @@ -639,7 +645,7 @@ int virSocketAddrGetRange(virSocketAddrPtr start, virSocketAddrPtr end) { * Returns the number of bits in the netmask or -1 if an error occurred * or the netmask is invalid. */ -int virSocketAddrGetNumNetmaskBits(const virSocketAddrPtr netmask) +int virSocketAddrGetNumNetmaskBits(const virSocketAddr *netmask) { size_t i, j; int c = 0; @@ -786,8 +792,8 @@ error: */ int -virSocketAddrGetIpPrefix(const virSocketAddrPtr address, - const virSocketAddrPtr netmask, +virSocketAddrGetIpPrefix(const virSocketAddr *address, + const virSocketAddr *netmask, int prefix) { if (prefix > 0) { diff --git a/src/util/virsocketaddr.h b/src/util/virsocketaddr.h index b28fe6c..0bb9187 100644 --- a/src/util/virsocketaddr.h +++ b/src/util/virsocketaddr.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009-2012 Red Hat, Inc. + * Copyright (C) 2009-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -80,12 +80,12 @@ int virSocketAddrParseIPv4(virSocketAddrPtr addr, int virSocketAddrParseIPv6(virSocketAddrPtr addr, const char *val); -void virSocketAddrSetIPv4Addr(const virSocketAddrPtr s, uint32_t addr); +void virSocketAddrSetIPv4Addr(virSocketAddrPtr s, uint32_t addr); -char * virSocketAddrFormat(virSocketAddrPtr addr); -char * virSocketAddrFormatFull(virSocketAddrPtr addr, - bool withService, - const char *separator); +char *virSocketAddrFormat(const virSocketAddr *addr); +char *virSocketAddrFormatFull(const virSocketAddr *addr, + bool withService, + const char *separator); int virSocketAddrSetPort(virSocketAddrPtr addr, int port); @@ -99,29 +99,29 @@ int virSocketAddrIsNetmask(virSocketAddrPtr netmask); int virSocketAddrCheckNetmask(virSocketAddrPtr addr1, virSocketAddrPtr addr2, virSocketAddrPtr netmask); -int virSocketAddrMask(const virSocketAddrPtr addr, - const virSocketAddrPtr netmask, - virSocketAddrPtr network); -int virSocketAddrMaskByPrefix(const virSocketAddrPtr addr, - unsigned int prefix, - virSocketAddrPtr network); -int virSocketAddrBroadcast(const virSocketAddrPtr addr, - const virSocketAddrPtr netmask, - virSocketAddrPtr broadcast); -int virSocketAddrBroadcastByPrefix(const virSocketAddrPtr addr, - unsigned int prefix, - virSocketAddrPtr broadcast); - -int virSocketAddrGetNumNetmaskBits(const virSocketAddrPtr netmask); +int virSocketAddrMask(const virSocketAddr *addr, + const virSocketAddr *netmask, + virSocketAddrPtr network); +int virSocketAddrMaskByPrefix(const virSocketAddr *addr, + unsigned int prefix, + virSocketAddrPtr network); +int virSocketAddrBroadcast(const virSocketAddr *addr, + const virSocketAddr *netmask, + virSocketAddrPtr broadcast); +int virSocketAddrBroadcastByPrefix(const virSocketAddr *addr, + unsigned int prefix, + virSocketAddrPtr broadcast); + +int virSocketAddrGetNumNetmaskBits(const virSocketAddr *netmask); int virSocketAddrPrefixToNetmask(unsigned int prefix, virSocketAddrPtr netmask, int family); -int virSocketAddrGetIpPrefix(const virSocketAddrPtr address, - const virSocketAddrPtr netmask, +int virSocketAddrGetIpPrefix(const virSocketAddr *address, + const virSocketAddr *netmask, int prefix); -bool virSocketAddrEqual(const virSocketAddrPtr s1, - const virSocketAddrPtr s2); -bool virSocketAddrIsPrivate(const virSocketAddrPtr addr); +bool virSocketAddrEqual(const virSocketAddr *s1, + const virSocketAddr *s2); +bool virSocketAddrIsPrivate(const virSocketAddr *addr); -bool virSocketAddrIsWildcard(const virSocketAddrPtr addr); +bool virSocketAddrIsWildcard(const virSocketAddr *addr); #endif /* __VIR_SOCKETADDR_H__ */ -- 1.8.3.1

On Tue, Oct 08, 2013 at 11:25:00AM -0600, Eric Blake wrote:
'const fooPtr' is the same as 'foo * const' (the pointer won't change, but it's contents can). But in general, if an interface is trying to be const-correct, it should be using 'const foo *' (the pointer is to data that can't be changed).
Fix up offenders in src/util outside of the virnet namespace.
Also, make a few virSocketAddr functions const-correct, for easier conversions in future patches.
* src/util/virbuffer.h (virBufferError, virBufferUse) (virBufferGetIndent): Use intended type. * src/util/virmacaddr.h (virMacAddrCmp, virMacAddrCmpRaw) (virMacAddrSet, virMcAddrFormat, virMacAddrIsUnicast) (virMacAddrIsMulticast): Likewise. * src/util/virebtables.h (ebtablesAddForwardAllowIn) (ebtablesRemoveForwardAllowIn): Likewise. * src/util/virsocketaddr.h (virSocketAddrSetIPv4Addr): Drop incorrect const. (virMacAddrGetRaw, virSocketAddrFormat, virSocketAddrFormatFull): Make const-correct. (virSocketAddrMask, virSocketAddrMaskByPrefix) (virSocketAddrBroadcast, virSocketAddrBroadcastByPrefix) (virSocketAddrGetNumNetmaskBits, virSocketAddrGetIpPrefix) (virSocketAddrEqual, virSocketAddrIsPrivate) (virSocketAddrIsWildcard): Use intended type. * src/util/virbuffer.c (virBufferError, virBufferUse) (virBufferGetIndent): Fix fallout. * src/util/virmacaddr.c (virMacAddrCmp, virMacAddrCmpRaw) (virMacAddrSet, virMcAddrFormat, virMacAddrIsUnicast) (virMacAddrIsMulticast): Likewise. * src/util/virebtables.c (ebtablesAddForwardAllowIn) (ebtablesRemoveForwardAllowIn): Likewise. * src/util/virsocketaddr.c (virSocketAddrMask, virMacAddrGetRaw) (virSocketAddrMaskByPrefix, virSocketAddrBroadcast) (virSocketAddrBroadcastByPrefix, virSocketAddrGetNumNetmaskBits) (virSocketAddrGetIpPrefix, virSocketAddrEqual) (virSocketAddrIsPrivate, virSocketAddrIsWildcard) (virSocketAddrGetIPv4Addr, virSocketAddrGetIPv6Addr) (virSocketAddrFormat, virSocketAddrFormatFull): Likewise.
Signed-off-by: Eric Blake <eblake@redhat.com> --- src/util/virbuffer.c | 8 +++---- src/util/virbuffer.h | 8 +++---- src/util/virebtables.c | 4 ++-- src/util/virebtables.h | 6 +++--- src/util/virmacaddr.c | 16 +++++++------- src/util/virmacaddr.h | 16 +++++++------- src/util/virsocketaddr.c | 54 +++++++++++++++++++++++++++--------------------- src/util/virsocketaddr.h | 52 +++++++++++++++++++++++----------------------- 8 files changed, 85 insertions(+), 79 deletions(-)
AKC Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|

'const fooPtr' is the same as 'foo * const' (the pointer won't change, but it's contents can). But in general, if an interface is trying to be const-correct, it should be using 'const foo *' (the pointer is to data that can't be changed). Fix up remaining offenders in src/util. * src/util/virnetdev.h (virNetDevSetMAC) (virNetDevReplaceMacAddress, virNetDevValidateConfig) (virNetDevReplaceNetConfig): Use intended type. * src/util/virnetdevbandwidth.h (virNetDevBandwidthCopy) (virNetDevBandwidthPlug): Likewise. * src/util/virnetdevmacvlan.h (virNetDevMacVLanCreate) (virNetDevMacVLanCreateWithVPortProfile) (virNetDevMacVLanDeleteWithVPortProfile) (virNetDevMacVLanRestartWithVPortProfile) (virNetDevMacVLanVPortProfileRegisterCallback): Likewise. * src/util/virnetdevopenvswitch.h (virNetDevOpenvswitchAddPort): Likewise. * src/util/virnetdevtap.h (virNetDevTapCreateInBridgePort): Likewise. * src/util/virnetdevvlan.h (virNetDevVlanEqual) (virNetDevVlanCopy): Likewise. * src/util/virnetdevvportprofile.h (virNetDevVPortProfileAssociate) (virNetDevVPortProfileDisassociate): Likewise. * src/util/virnetlink.h (virNetlinkEventRemoveCallback) (virNetlinkEventAddClient, virNetlinkEventRemoveClient): Likewise. * src/util/virnetdev.c (virNetDevSetMAC) (virNetDevReplaceMacAddress, virNetDevValidateConfig) (virNetDevReplaceNetConfig): Fix fallout. * src/util/virnetdevbandwidth.c (virNetDevBandwidthCopy) (virNetDevBandwidthPlug): Likewise. * src/util/virnetdevmacvlan.c (virNetDevMacVLanCreate) (virNetDevMacVLanCreateWithVPortProfile) (virNetDevMacVLanDeleteWithVPortProfile) (virNetDevMacVLanRestartWithVPortProfile) (virNetDevMacVLanVPortProfileRegisterCallback): Likewise. * src/util/virnetdevopenvswitch.c (virNetDevOpenvswitchAddPort): Likewise. * src/util/virnetdevtap.c (virNetDevTapCreateInBridgePort): Likewise. * src/util/virnetdevvlan.c (virNetDevVlanEqual) (virNetDevVlanCopy): Likewise. * src/util/virnetdevvportprofile.c (virNetDevVPortProfileAssociate) (virNetDevVPortProfileDisassociate) (virNetDevVPortProfileOpSetLink, virNetDevVPortProfileOpCommon) (virNetDevVPortProfileOp8021Qbg, virNetDevVPortProfileOp8021Qbh): Likewise. * src/util/virnetlink.c (virNetlinkEventRemoveCallback) (virNetlinkEventAddClient, virNetlinkEventRemoveClient): Likewise. Signed-off-by: Eric Blake <eblake@redhat.com> --- src/util/virnetdev.c | 20 ++++++++++---------- src/util/virnetdev.h | 8 ++++---- src/util/virnetdevbandwidth.c | 6 +++--- src/util/virnetdevbandwidth.h | 7 ++++--- src/util/virnetdevmacvlan.c | 22 +++++++++++----------- src/util/virnetdevmacvlan.h | 12 ++++++------ src/util/virnetdevopenvswitch.c | 3 ++- src/util/virnetdevopenvswitch.h | 3 ++- src/util/virnetdevtap.c | 2 +- src/util/virnetdevtap.h | 4 ++-- src/util/virnetdevvlan.c | 6 +++--- src/util/virnetdevvlan.h | 6 +++--- src/util/virnetdevvportprofile.c | 28 ++++++++++++++-------------- src/util/virnetdevvportprofile.h | 10 +++++----- src/util/virnetlink.c | 10 +++++----- src/util/virnetlink.h | 8 +++++--- 16 files changed, 80 insertions(+), 75 deletions(-) diff --git a/src/util/virnetdev.c b/src/util/virnetdev.c index 8eb4d4c..441b171 100644 --- a/src/util/virnetdev.c +++ b/src/util/virnetdev.c @@ -165,7 +165,7 @@ int virNetDevExists(const char *ifname) * Returns 0 in case of success or -1 on failure */ int virNetDevSetMAC(const char *ifname, - const virMacAddrPtr macaddr) + const virMacAddr *macaddr) { int fd = -1; int ret = -1; @@ -200,7 +200,7 @@ cleanup: #elif defined(SIOCSIFLLADDR) && defined(HAVE_STRUCT_IFREQ) && \ HAVE_DECL_LINK_ADDR int virNetDevSetMAC(const char *ifname, - const virMacAddrPtr macaddr) + const virMacAddr *macaddr) { struct ifreq ifr; struct sockaddr_dl sdl; @@ -233,7 +233,7 @@ cleanup: } #else int virNetDevSetMAC(const char *ifname, - const virMacAddrPtr macaddr ATTRIBUTE_UNUSED) + const virMacAddr *macaddr ATTRIBUTE_UNUSED) { virReportSystemError(ENOSYS, _("Cannot set interface MAC on '%s'"), @@ -302,7 +302,7 @@ int virNetDevGetMAC(const char *ifname, */ int virNetDevReplaceMacAddress(const char *linkdev, - const virMacAddrPtr macaddress, + const virMacAddr *macaddress, const char *stateDir) { virMacAddr oldmac; @@ -1002,7 +1002,7 @@ int virNetDevGetIPv4Address(const char *ifname ATTRIBUTE_UNUSED, */ #if defined(SIOCGIFHWADDR) && defined(HAVE_STRUCT_IFREQ) int virNetDevValidateConfig(const char *ifname, - const virMacAddrPtr macaddr, int ifindex) + const virMacAddr *macaddr, int ifindex) { int fd = -1; int ret = -1; @@ -1056,7 +1056,7 @@ int virNetDevValidateConfig(const char *ifname, } #else int virNetDevValidateConfig(const char *ifname ATTRIBUTE_UNUSED, - const virMacAddrPtr macaddr ATTRIBUTE_UNUSED, + const virMacAddr *macaddr ATTRIBUTE_UNUSED, int ifindex ATTRIBUTE_UNUSED) { virReportSystemError(ENOSYS, "%s", @@ -1461,7 +1461,7 @@ buffer_too_small: static int virNetDevSetVfConfig(const char *ifname, int ifindex, int vf, - bool nltarget_kernel, const virMacAddrPtr macaddr, + bool nltarget_kernel, const virMacAddr *macaddr, int vlanid, uint32_t (*getPidFunc)(void)) { int rc = -1; @@ -1655,7 +1655,7 @@ virNetDevGetVfConfig(const char *ifname, int vf, virMacAddrPtr mac, static int virNetDevReplaceVfConfig(const char *pflinkdev, int vf, - const virMacAddrPtr macaddress, + const virMacAddr *macaddress, int vlanid, const char *stateDir) { @@ -1759,7 +1759,7 @@ cleanup: */ int virNetDevReplaceNetConfig(char *linkdev, int vf, - const virMacAddrPtr macaddress, int vlanid, + const virMacAddr *macaddress, int vlanid, char *stateDir) { if (vf == -1) @@ -1804,7 +1804,7 @@ virNetDevLinkDump(const char *ifname ATTRIBUTE_UNUSED, int virNetDevReplaceNetConfig(char *linkdev ATTRIBUTE_UNUSED, int vf ATTRIBUTE_UNUSED, - const virMacAddrPtr macaddress ATTRIBUTE_UNUSED, + const virMacAddr *macaddress ATTRIBUTE_UNUSED, int vlanid ATTRIBUTE_UNUSED, char *stateDir ATTRIBUTE_UNUSED) { diff --git a/src/util/virnetdev.h b/src/util/virnetdev.h index 44a37ca..8e9ee2d 100644 --- a/src/util/virnetdev.h +++ b/src/util/virnetdev.h @@ -70,14 +70,14 @@ int virNetDevGetIPv4Address(const char *ifname, virSocketAddrPtr addr) int virNetDevSetMAC(const char *ifname, - const virMacAddrPtr macaddr) + const virMacAddr *macaddr) ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK; int virNetDevGetMAC(const char *ifname, virMacAddrPtr macaddr) ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK; int virNetDevReplaceMacAddress(const char *linkdev, - const virMacAddrPtr macaddress, + const virMacAddr *macaddress, const char *stateDir) ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3) ATTRIBUTE_RETURN_CHECK; @@ -107,7 +107,7 @@ int virNetDevGetVLanID(const char *ifname, int *vlanid) ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK; int virNetDevValidateConfig(const char *ifname, - const virMacAddrPtr macaddr, int ifindex) + const virMacAddr *macaddr, int ifindex) ATTRIBUTE_NONNULL(1) ATTRIBUTE_RETURN_CHECK; int virNetDevIsVirtualFunction(const char *ifname) @@ -134,7 +134,7 @@ int virNetDevLinkDump(const char *ifname, int ifindex, ATTRIBUTE_RETURN_CHECK; int virNetDevReplaceNetConfig(char *linkdev, int vf, - const virMacAddrPtr macaddress, int vlanid, + const virMacAddr *macaddress, int vlanid, char *stateDir) ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(3) ATTRIBUTE_NONNULL(5); diff --git a/src/util/virnetdevbandwidth.c b/src/util/virnetdevbandwidth.c index 17f4fa3..317aa21 100644 --- a/src/util/virnetdevbandwidth.c +++ b/src/util/virnetdevbandwidth.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009-2012 Red Hat, Inc. + * Copyright (C) 2009-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -287,7 +287,7 @@ virNetDevBandwidthClear(const char *ifname) */ int virNetDevBandwidthCopy(virNetDevBandwidthPtr *dest, - const virNetDevBandwidthPtr src) + const virNetDevBandwidth *src) { int ret = -1; @@ -386,7 +386,7 @@ virNetDevBandwidthEqual(virNetDevBandwidthPtr a, int virNetDevBandwidthPlug(const char *brname, virNetDevBandwidthPtr net_bandwidth, - const virMacAddrPtr ifmac_ptr, + const virMacAddr *ifmac_ptr, virNetDevBandwidthPtr bandwidth, unsigned int id) { diff --git a/src/util/virnetdevbandwidth.h b/src/util/virnetdevbandwidth.h index 01a2ba5..4606a07 100644 --- a/src/util/virnetdevbandwidth.h +++ b/src/util/virnetdevbandwidth.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009-2012 Red Hat, Inc. + * Copyright (C) 2009-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -49,14 +49,15 @@ int virNetDevBandwidthSet(const char *ifname, ATTRIBUTE_NONNULL(1) ATTRIBUTE_RETURN_CHECK; int virNetDevBandwidthClear(const char *ifname) ATTRIBUTE_NONNULL(1); -int virNetDevBandwidthCopy(virNetDevBandwidthPtr *dest, const virNetDevBandwidthPtr src) +int virNetDevBandwidthCopy(virNetDevBandwidthPtr *dest, + const virNetDevBandwidth *src) ATTRIBUTE_NONNULL(1) ATTRIBUTE_RETURN_CHECK; bool virNetDevBandwidthEqual(virNetDevBandwidthPtr a, virNetDevBandwidthPtr b); int virNetDevBandwidthPlug(const char *brname, virNetDevBandwidthPtr net_bandwidth, - const virMacAddrPtr ifmac_ptr, + const virMacAddr *ifmac_ptr, virNetDevBandwidthPtr bandwidth, unsigned int id) ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) diff --git a/src/util/virnetdevmacvlan.c b/src/util/virnetdevmacvlan.c index d630dff..77cbd6d 100644 --- a/src/util/virnetdevmacvlan.c +++ b/src/util/virnetdevmacvlan.c @@ -104,7 +104,7 @@ VIR_ONCE_GLOBAL_INIT(virNetDevMacVLanCreateMutex); int virNetDevMacVLanCreate(const char *ifname, const char *type, - const virMacAddrPtr macaddress, + const virMacAddr *macaddress, const char *srcdev, uint32_t macvlan_mode, int *retry) @@ -746,7 +746,7 @@ virNetlinkCallbackDataFree(virNetlinkCallbackDataPtr calld) */ static void virNetDevMacVLanVPortProfileDestroyCallback(int watch ATTRIBUTE_UNUSED, - const virMacAddrPtr macaddr ATTRIBUTE_UNUSED, + const virMacAddr *macaddr ATTRIBUTE_UNUSED, void *opaque) { virNetlinkCallbackDataFree((virNetlinkCallbackDataPtr)opaque); @@ -754,7 +754,7 @@ virNetDevMacVLanVPortProfileDestroyCallback(int watch ATTRIBUTE_UNUSED, int virNetDevMacVLanVPortProfileRegisterCallback(const char *ifname, - const virMacAddrPtr macaddress, + const virMacAddr *macaddress, const char *linkdev, const unsigned char *vmuuid, virNetDevVPortProfilePtr virtPortProfile, @@ -811,7 +811,7 @@ error: * otherwise returns 0; returns -1 on error. */ int virNetDevMacVLanCreateWithVPortProfile(const char *tgifname, - const virMacAddrPtr macaddress, + const virMacAddr *macaddress, const char *linkdev, enum virNetDevMacVLanMode mode, bool withTap, @@ -985,7 +985,7 @@ link_del_exit: * were provided. */ int virNetDevMacVLanDeleteWithVPortProfile(const char *ifname, - const virMacAddrPtr macaddr, + const virMacAddr *macaddr, const char *linkdev, int mode, virNetDevVPortProfilePtr virtPortProfile, @@ -1030,7 +1030,7 @@ int virNetDevMacVLanDeleteWithVPortProfile(const char *ifname, * Returns 0; returns -1 on error. */ int virNetDevMacVLanRestartWithVPortProfile(const char *cr_ifname, - const virMacAddrPtr macaddress, + const virMacAddr *macaddress, const char *linkdev, const unsigned char *vmuuid, virNetDevVPortProfilePtr virtPortProfile, @@ -1060,7 +1060,7 @@ error: #else /* ! WITH_MACVTAP */ int virNetDevMacVLanCreate(const char *ifname ATTRIBUTE_UNUSED, const char *type ATTRIBUTE_UNUSED, - const virMacAddrPtr macaddress ATTRIBUTE_UNUSED, + const virMacAddr *macaddress ATTRIBUTE_UNUSED, const char *srcdev ATTRIBUTE_UNUSED, uint32_t macvlan_mode ATTRIBUTE_UNUSED, int *retry ATTRIBUTE_UNUSED) @@ -1078,7 +1078,7 @@ int virNetDevMacVLanDelete(const char *ifname ATTRIBUTE_UNUSED) } int virNetDevMacVLanCreateWithVPortProfile(const char *ifname ATTRIBUTE_UNUSED, - const virMacAddrPtr macaddress ATTRIBUTE_UNUSED, + const virMacAddr *macaddress ATTRIBUTE_UNUSED, const char *linkdev ATTRIBUTE_UNUSED, enum virNetDevMacVLanMode mode ATTRIBUTE_UNUSED, bool withTap ATTRIBUTE_UNUSED, @@ -1096,7 +1096,7 @@ int virNetDevMacVLanCreateWithVPortProfile(const char *ifname ATTRIBUTE_UNUSED, } int virNetDevMacVLanDeleteWithVPortProfile(const char *ifname ATTRIBUTE_UNUSED, - const virMacAddrPtr macaddress ATTRIBUTE_UNUSED, + const virMacAddr *macaddress ATTRIBUTE_UNUSED, const char *linkdev ATTRIBUTE_UNUSED, int mode ATTRIBUTE_UNUSED, virNetDevVPortProfilePtr virtPortProfile ATTRIBUTE_UNUSED, @@ -1108,7 +1108,7 @@ int virNetDevMacVLanDeleteWithVPortProfile(const char *ifname ATTRIBUTE_UNUSED, } int virNetDevMacVLanRestartWithVPortProfile(const char *cr_ifname ATTRIBUTE_UNUSED, - const virMacAddrPtr macaddress ATTRIBUTE_UNUSED, + const virMacAddr *macaddress ATTRIBUTE_UNUSED, const char *linkdev ATTRIBUTE_UNUSED, const unsigned char *vmuuid ATTRIBUTE_UNUSED, virNetDevVPortProfilePtr virtPortProfile ATTRIBUTE_UNUSED, @@ -1120,7 +1120,7 @@ int virNetDevMacVLanRestartWithVPortProfile(const char *cr_ifname ATTRIBUTE_UNUS } int virNetDevMacVLanVPortProfileRegisterCallback(const char *ifname ATTRIBUTE_UNUSED, - const virMacAddrPtr macaddress ATTRIBUTE_UNUSED, + const virMacAddr *macaddress ATTRIBUTE_UNUSED, const char *linkdev ATTRIBUTE_UNUSED, const unsigned char *vmuuid ATTRIBUTE_UNUSED, virNetDevVPortProfilePtr virtPortProfile ATTRIBUTE_UNUSED, diff --git a/src/util/virnetdevmacvlan.h b/src/util/virnetdevmacvlan.h index e44651d..225ddba 100644 --- a/src/util/virnetdevmacvlan.h +++ b/src/util/virnetdevmacvlan.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011 Red Hat, Inc. + * Copyright (C) 2011, 2013 Red Hat, Inc. * Copyright (C) 2010 IBM Corporation * * This library is free software; you can redistribute it and/or @@ -42,7 +42,7 @@ VIR_ENUM_DECL(virNetDevMacVLanMode) int virNetDevMacVLanCreate(const char *ifname, const char *type, - const virMacAddrPtr macaddress, + const virMacAddr *macaddress, const char *srcdev, uint32_t macvlan_mode, int *retry) @@ -53,7 +53,7 @@ int virNetDevMacVLanDelete(const char *ifname) ATTRIBUTE_NONNULL(1) ATTRIBUTE_RETURN_CHECK; int virNetDevMacVLanCreateWithVPortProfile(const char *ifname, - const virMacAddrPtr macaddress, + const virMacAddr *macaddress, const char *linkdev, enum virNetDevMacVLanMode mode, bool withTap, @@ -68,7 +68,7 @@ int virNetDevMacVLanCreateWithVPortProfile(const char *ifname, ATTRIBUTE_NONNULL(9) ATTRIBUTE_NONNULL(11) ATTRIBUTE_RETURN_CHECK; int virNetDevMacVLanDeleteWithVPortProfile(const char *ifname, - const virMacAddrPtr macaddress, + const virMacAddr *macaddress, const char *linkdev, int mode, virNetDevVPortProfilePtr virtPortProfile, @@ -77,7 +77,7 @@ int virNetDevMacVLanDeleteWithVPortProfile(const char *ifname, ATTRIBUTE_NONNULL(6) ATTRIBUTE_RETURN_CHECK; int virNetDevMacVLanRestartWithVPortProfile(const char *cr_ifname, - const virMacAddrPtr macaddress, + const virMacAddr *macaddress, const char *linkdev, const unsigned char *vmuuid, virNetDevVPortProfilePtr virtPortProfile, @@ -86,7 +86,7 @@ int virNetDevMacVLanRestartWithVPortProfile(const char *cr_ifname, ATTRIBUTE_NONNULL(4) ATTRIBUTE_RETURN_CHECK; int virNetDevMacVLanVPortProfileRegisterCallback(const char *ifname, - const virMacAddrPtr macaddress, + const virMacAddr *macaddress, const char *linkdev, const unsigned char *vmuuid, virNetDevVPortProfilePtr virtPortProfile, diff --git a/src/util/virnetdevopenvswitch.c b/src/util/virnetdevopenvswitch.c index daa2bfa..b4feb1e 100644 --- a/src/util/virnetdevopenvswitch.c +++ b/src/util/virnetdevopenvswitch.c @@ -1,4 +1,5 @@ /* + * Copyright (C) 2013 Red Hat, Inc. * Copyright (C) 2012 Nicira, Inc. * * This library is free software; you can redistribute it and/or @@ -45,7 +46,7 @@ * Returns 0 in case of success or -1 in case of failure. */ int virNetDevOpenvswitchAddPort(const char *brname, const char *ifname, - const virMacAddrPtr macaddr, + const virMacAddr *macaddr, const unsigned char *vmuuid, virNetDevVPortProfilePtr ovsport, virNetDevVlanPtr virtVlan) diff --git a/src/util/virnetdevopenvswitch.h b/src/util/virnetdevopenvswitch.h index 0852e4d..131be73 100644 --- a/src/util/virnetdevopenvswitch.h +++ b/src/util/virnetdevopenvswitch.h @@ -1,4 +1,5 @@ /* + * Copyright (C) 2013 Red Hat, Inc. * Copyright (C) 2012 Nicira, Inc. * * This library is free software; you can redistribute it and/or @@ -31,7 +32,7 @@ int virNetDevOpenvswitchAddPort(const char *brname, const char *ifname, - const virMacAddrPtr macaddr, + const virMacAddr *macaddr, const unsigned char *vmuuid, virNetDevVPortProfilePtr ovsport, virNetDevVlanPtr virtVlan) diff --git a/src/util/virnetdevtap.c b/src/util/virnetdevtap.c index fb173e3..ebfc4d4 100644 --- a/src/util/virnetdevtap.c +++ b/src/util/virnetdevtap.c @@ -435,7 +435,7 @@ int virNetDevTapDelete(const char *ifname ATTRIBUTE_UNUSED) */ int virNetDevTapCreateInBridgePort(const char *brname, char **ifname, - const virMacAddrPtr macaddr, + const virMacAddr *macaddr, const unsigned char *vmuuid, int *tapfd, int tapfdSize, diff --git a/src/util/virnetdevtap.h b/src/util/virnetdevtap.h index cb6c284..a762b31 100644 --- a/src/util/virnetdevtap.h +++ b/src/util/virnetdevtap.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007-2011 Red Hat, Inc. + * Copyright (C) 2007-2011, 2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -53,7 +53,7 @@ typedef enum { int virNetDevTapCreateInBridgePort(const char *brname, char **ifname, - const virMacAddrPtr macaddr, + const virMacAddr *macaddr, const unsigned char *vmuuid, int *tapfd, int tapfdSize, diff --git a/src/util/virnetdevvlan.c b/src/util/virnetdevvlan.c index 13ddf36..4c8bce5 100644 --- a/src/util/virnetdevvlan.c +++ b/src/util/virnetdevvlan.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009-2012 Red Hat, Inc. + * Copyright (C) 2009-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -46,7 +46,7 @@ virNetDevVlanFree(virNetDevVlanPtr vlan) } int -virNetDevVlanEqual(const virNetDevVlanPtr a, const virNetDevVlanPtr b) +virNetDevVlanEqual(const virNetDevVlan *a, const virNetDevVlan *b) { int ai, bi; @@ -81,7 +81,7 @@ virNetDevVlanEqual(const virNetDevVlanPtr a, const virNetDevVlanPtr b) * dst is assumed to be empty on entry. */ int -virNetDevVlanCopy(virNetDevVlanPtr dst, const virNetDevVlanPtr src) +virNetDevVlanCopy(virNetDevVlanPtr dst, const virNetDevVlan *src) { if (!src || src->nTags == 0) return 0; diff --git a/src/util/virnetdevvlan.h b/src/util/virnetdevvlan.h index fd1762a..7f63626 100644 --- a/src/util/virnetdevvlan.h +++ b/src/util/virnetdevvlan.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009-2012 Red Hat, Inc. + * Copyright (C) 2009-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -45,7 +45,7 @@ struct _virNetDevVlan { void virNetDevVlanClear(virNetDevVlanPtr vlan); void virNetDevVlanFree(virNetDevVlanPtr vlan); -int virNetDevVlanEqual(const virNetDevVlanPtr a, const virNetDevVlanPtr b); -int virNetDevVlanCopy(virNetDevVlanPtr dst, const virNetDevVlanPtr src); +int virNetDevVlanEqual(const virNetDevVlan *a, const virNetDevVlan *b); +int virNetDevVlanCopy(virNetDevVlanPtr dst, const virNetDevVlan *src); #endif /* __VIR_NETDEV_VLAN_H__ */ diff --git a/src/util/virnetdevvportprofile.c b/src/util/virnetdevvportprofile.c index 07155b9..ecebf66 100644 --- a/src/util/virnetdevvportprofile.c +++ b/src/util/virnetdevvportprofile.c @@ -577,7 +577,7 @@ cleanup: static int virNetDevVPortProfileOpSetLink(const char *ifname, int ifindex, bool nltarget_kernel, - const virMacAddrPtr macaddr, + const virMacAddr *macaddr, int vlanid, const char *profileId, struct ifla_port_vsi *portVsi, @@ -822,7 +822,7 @@ virNetDevVPortProfileGetNthParent(const char *ifname, int ifindex, unsigned int static int virNetDevVPortProfileOpCommon(const char *ifname, int ifindex, bool nltarget_kernel, - const virMacAddrPtr macaddr, + const virMacAddr *macaddr, int vlanid, const char *profileId, struct ifla_port_vsi *portVsi, @@ -936,9 +936,9 @@ virNetDevVPortProfileGetPhysdevAndVlan(const char *ifname, int *root_ifindex, ch /* Returns 0 on success, -1 on general failure, and -2 on timeout */ static int virNetDevVPortProfileOp8021Qbg(const char *ifname, - const virMacAddrPtr macaddr, + const virMacAddr *macaddr, int vf, - const virNetDevVPortProfilePtr virtPort, + const virNetDevVPortProfile *virtPort, enum virNetDevVPortProfileLinkOp virtPortOp, bool setlink_only) { @@ -1004,9 +1004,9 @@ cleanup: /* Returns 0 on success, -1 on general failure, and -2 on timeout */ static int virNetDevVPortProfileOp8021Qbh(const char *ifname, - const virMacAddrPtr macaddr, + const virMacAddr *macaddr, int32_t vf, - const virNetDevVPortProfilePtr virtPort, + const virNetDevVPortProfile *virtPort, const unsigned char *vm_uuid, enum virNetDevVPortProfileLinkOp virtPortOp) { @@ -1125,8 +1125,8 @@ cleanup: */ int virNetDevVPortProfileAssociate(const char *macvtap_ifname, - const virNetDevVPortProfilePtr virtPort, - const virMacAddrPtr macvtap_macaddr, + const virNetDevVPortProfile *virtPort, + const virMacAddr *macvtap_macaddr, const char *linkdev, int vf, const unsigned char *vmuuid, @@ -1189,8 +1189,8 @@ virNetDevVPortProfileAssociate(const char *macvtap_ifname, */ int virNetDevVPortProfileDisassociate(const char *macvtap_ifname, - const virNetDevVPortProfilePtr virtPort, - const virMacAddrPtr macvtap_macaddr, + const virNetDevVPortProfile *virtPort, + const virMacAddr *macvtap_macaddr, const char *linkdev, int vf, enum virNetDevVPortProfileOp vmOp) @@ -1234,8 +1234,8 @@ virNetDevVPortProfileDisassociate(const char *macvtap_ifname, #else /* ! WITH_VIRTUALPORT */ int virNetDevVPortProfileAssociate(const char *macvtap_ifname ATTRIBUTE_UNUSED, - const virNetDevVPortProfilePtr virtPort ATTRIBUTE_UNUSED, - const virMacAddrPtr macvtap_macaddr ATTRIBUTE_UNUSED, + const virNetDevVPortProfile *virtPort ATTRIBUTE_UNUSED, + const virMacAddr *macvtap_macaddr ATTRIBUTE_UNUSED, const char *linkdev ATTRIBUTE_UNUSED, int vf ATTRIBUTE_UNUSED, const unsigned char *vmuuid ATTRIBUTE_UNUSED, @@ -1248,8 +1248,8 @@ int virNetDevVPortProfileAssociate(const char *macvtap_ifname ATTRIBUTE_UNUSED, } int virNetDevVPortProfileDisassociate(const char *macvtap_ifname ATTRIBUTE_UNUSED, - const virNetDevVPortProfilePtr virtPort ATTRIBUTE_UNUSED, - const virMacAddrPtr macvtap_macaddr ATTRIBUTE_UNUSED, + const virNetDevVPortProfile *virtPort ATTRIBUTE_UNUSED, + const virMacAddr *macvtap_macaddr ATTRIBUTE_UNUSED, const char *linkdev ATTRIBUTE_UNUSED, int vf ATTRIBUTE_UNUSED, enum virNetDevVPortProfileOp vmOp ATTRIBUTE_UNUSED) diff --git a/src/util/virnetdevvportprofile.h b/src/util/virnetdevvportprofile.h index 940c0e9..3febf3a 100644 --- a/src/util/virnetdevvportprofile.h +++ b/src/util/virnetdevvportprofile.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009-2012 Red Hat, Inc. + * Copyright (C) 2009-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -93,8 +93,8 @@ int virNetDevVPortProfileMerge3(virNetDevVPortProfilePtr *result, virNetDevVPortProfilePtr fromPortgroup); int virNetDevVPortProfileAssociate(const char *ifname, - const virNetDevVPortProfilePtr virtPort, - const virMacAddrPtr macaddr, + const virNetDevVPortProfile *virtPort, + const virMacAddr *macaddr, const char *linkdev, int vf, const unsigned char *vmuuid, @@ -104,8 +104,8 @@ int virNetDevVPortProfileAssociate(const char *ifname, ATTRIBUTE_RETURN_CHECK; int virNetDevVPortProfileDisassociate(const char *ifname, - const virNetDevVPortProfilePtr virtPort, - const virMacAddrPtr macaddr, + const virNetDevVPortProfile *virtPort, + const virMacAddr *macaddr, const char *linkdev, int vf, enum virNetDevVPortProfileOp vmOp) diff --git a/src/util/virnetlink.c b/src/util/virnetlink.c index 7b0a638..901df6e 100644 --- a/src/util/virnetlink.c +++ b/src/util/virnetlink.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010-2012 Red Hat, Inc. + * Copyright (C) 2010-2013 Red Hat, Inc. * Copyright (C) 2010-2012 IBM Corporation * * This library is free software; you can redistribute it and/or @@ -610,7 +610,7 @@ error_locked: int virNetlinkEventAddClient(virNetlinkEventHandleCallback handleCB, virNetlinkEventRemoveCallback removeCB, - void *opaque, const virMacAddrPtr macaddr, + void *opaque, const virMacAddr *macaddr, unsigned int protocol) { size_t i; @@ -684,7 +684,7 @@ error: * Returns -1 if the file handle was not registered, 0 upon success */ int -virNetlinkEventRemoveClient(int watch, const virMacAddrPtr macaddr, +virNetlinkEventRemoveClient(int watch, const virMacAddr *macaddr, unsigned int protocol) { size_t i; @@ -813,7 +813,7 @@ int virNetlinkEventServiceLocalPid(unsigned int protocol ATTRIBUTE_UNUSED) int virNetlinkEventAddClient(virNetlinkEventHandleCallback handleCB ATTRIBUTE_UNUSED, virNetlinkEventRemoveCallback removeCB ATTRIBUTE_UNUSED, void *opaque ATTRIBUTE_UNUSED, - const virMacAddrPtr macaddr ATTRIBUTE_UNUSED, + const virMacAddr *macaddr ATTRIBUTE_UNUSED, unsigned int protocol ATTRIBUTE_UNUSED) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _(unsupported)); @@ -824,7 +824,7 @@ int virNetlinkEventAddClient(virNetlinkEventHandleCallback handleCB ATTRIBUTE_UN * virNetlinkEventRemoveClient: unregister a callback from a netlink monitor */ int virNetlinkEventRemoveClient(int watch ATTRIBUTE_UNUSED, - const virMacAddrPtr macaddr ATTRIBUTE_UNUSED, + const virMacAddr *macaddr ATTRIBUTE_UNUSED, unsigned int protocol ATTRIBUTE_UNUSED) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _(unsupported)); diff --git a/src/util/virnetlink.h b/src/util/virnetlink.h index 8351000..c478691 100644 --- a/src/util/virnetlink.h +++ b/src/util/virnetlink.h @@ -58,7 +58,9 @@ typedef void (*virNetlinkEventHandleCallback)(struct nlmsghdr *, bool *handled, void *opaque); -typedef void (*virNetlinkEventRemoveCallback)(int watch, const virMacAddrPtr macaddr, void *opaque); +typedef void (*virNetlinkEventRemoveCallback)(int watch, + const virMacAddr *macaddr, + void *opaque); /** * stopNetlinkEventServer: stop the monitor to receive netlink messages for libvirtd @@ -90,13 +92,13 @@ int virNetlinkEventServiceLocalPid(unsigned int protocol); */ int virNetlinkEventAddClient(virNetlinkEventHandleCallback handleCB, virNetlinkEventRemoveCallback removeCB, - void *opaque, const virMacAddrPtr macaddr, + void *opaque, const virMacAddr *macaddr, unsigned int protocol); /** * virNetlinkEventRemoveClient: unregister a callback from a netlink monitor */ -int virNetlinkEventRemoveClient(int watch, const virMacAddrPtr macaddr, +int virNetlinkEventRemoveClient(int watch, const virMacAddr *macaddr, unsigned int protocol); #endif /* __VIR_NETLINK_H__ */ -- 1.8.3.1

On Tue, Oct 08, 2013 at 11:25:01AM -0600, Eric Blake wrote:
'const fooPtr' is the same as 'foo * const' (the pointer won't change, but it's contents can). But in general, if an interface is trying to be const-correct, it should be using 'const foo *' (the pointer is to data that can't be changed).
Fix up remaining offenders in src/util.
* src/util/virnetdev.h (virNetDevSetMAC) (virNetDevReplaceMacAddress, virNetDevValidateConfig) (virNetDevReplaceNetConfig): Use intended type. * src/util/virnetdevbandwidth.h (virNetDevBandwidthCopy) (virNetDevBandwidthPlug): Likewise. * src/util/virnetdevmacvlan.h (virNetDevMacVLanCreate) (virNetDevMacVLanCreateWithVPortProfile) (virNetDevMacVLanDeleteWithVPortProfile) (virNetDevMacVLanRestartWithVPortProfile) (virNetDevMacVLanVPortProfileRegisterCallback): Likewise. * src/util/virnetdevopenvswitch.h (virNetDevOpenvswitchAddPort): Likewise. * src/util/virnetdevtap.h (virNetDevTapCreateInBridgePort): Likewise. * src/util/virnetdevvlan.h (virNetDevVlanEqual) (virNetDevVlanCopy): Likewise. * src/util/virnetdevvportprofile.h (virNetDevVPortProfileAssociate) (virNetDevVPortProfileDisassociate): Likewise. * src/util/virnetlink.h (virNetlinkEventRemoveCallback) (virNetlinkEventAddClient, virNetlinkEventRemoveClient): Likewise. * src/util/virnetdev.c (virNetDevSetMAC) (virNetDevReplaceMacAddress, virNetDevValidateConfig) (virNetDevReplaceNetConfig): Fix fallout. * src/util/virnetdevbandwidth.c (virNetDevBandwidthCopy) (virNetDevBandwidthPlug): Likewise. * src/util/virnetdevmacvlan.c (virNetDevMacVLanCreate) (virNetDevMacVLanCreateWithVPortProfile) (virNetDevMacVLanDeleteWithVPortProfile) (virNetDevMacVLanRestartWithVPortProfile) (virNetDevMacVLanVPortProfileRegisterCallback): Likewise. * src/util/virnetdevopenvswitch.c (virNetDevOpenvswitchAddPort): Likewise. * src/util/virnetdevtap.c (virNetDevTapCreateInBridgePort): Likewise. * src/util/virnetdevvlan.c (virNetDevVlanEqual) (virNetDevVlanCopy): Likewise. * src/util/virnetdevvportprofile.c (virNetDevVPortProfileAssociate) (virNetDevVPortProfileDisassociate) (virNetDevVPortProfileOpSetLink, virNetDevVPortProfileOpCommon) (virNetDevVPortProfileOp8021Qbg, virNetDevVPortProfileOp8021Qbh): Likewise. * src/util/virnetlink.c (virNetlinkEventRemoveCallback) (virNetlinkEventAddClient, virNetlinkEventRemoveClient): Likewise.
Signed-off-by: Eric Blake <eblake@redhat.com> --- src/util/virnetdev.c | 20 ++++++++++---------- src/util/virnetdev.h | 8 ++++---- src/util/virnetdevbandwidth.c | 6 +++--- src/util/virnetdevbandwidth.h | 7 ++++--- src/util/virnetdevmacvlan.c | 22 +++++++++++----------- src/util/virnetdevmacvlan.h | 12 ++++++------ src/util/virnetdevopenvswitch.c | 3 ++- src/util/virnetdevopenvswitch.h | 3 ++- src/util/virnetdevtap.c | 2 +- src/util/virnetdevtap.h | 4 ++-- src/util/virnetdevvlan.c | 6 +++--- src/util/virnetdevvlan.h | 6 +++--- src/util/virnetdevvportprofile.c | 28 ++++++++++++++-------------- src/util/virnetdevvportprofile.h | 10 +++++----- src/util/virnetlink.c | 10 +++++----- src/util/virnetlink.h | 8 +++++--- 16 files changed, 80 insertions(+), 75 deletions(-)
ACK Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|

'const fooPtr' is the same as 'foo * const' (the pointer won't change, but it's contents can). But in general, if an interface is trying to be const-correct, it should be using 'const foo *' (the pointer is to data that can't be changed). Fix up offenders in src/cpu. * src/cpu/cpu.h (cpuArchDecode, cpuArchEncode, cpuArchUpdate) (cpuArchHasFeature, cpuDecode, cpuEncode, cpuUpdate) (cpuHasFeature): Use intended type. * src/conf/cpu_conf.h (virCPUDefCopyModel, virCPUDefCopy): Likewise. (virCPUDefParseXML): Drop const. * src/cpu/cpu.c (cpuDecode, cpuEncode, cpuUpdate, cpuHasFeature): Fix fallout. * src/cpu/cpu_x86.c (x86ModelFromCPU, x86ModelSubtractCPU) (x86DecodeCPUData, x86EncodePolicy, x86Encode, x86UpdateCustom) (x86UpdateHostModel, x86Update, x86HasFeature): Likewise. * src/cpu/cpu_s390.c (s390Decode): Likewise. * src/cpu/cpu_arm.c (ArmDecode): Likewise. * src/cpu/cpu_powerpc.c (ppcModelFromCPU, ppcCompute, ppcDecode) (ppcUpdate): Likewise. * src/conf/cpu_conf.c (virCPUDefCopyModel, virCPUDefCopy) (virCPUDefParseXML): Likewise. Signed-off-by: Eric Blake <eblake@redhat.com> --- src/conf/cpu_conf.c | 6 +++--- src/conf/cpu_conf.h | 8 ++++---- src/cpu/cpu.c | 8 ++++---- src/cpu/cpu.h | 16 ++++++++-------- src/cpu/cpu_arm.c | 3 ++- src/cpu/cpu_powerpc.c | 9 +++++---- src/cpu/cpu_s390.c | 3 ++- src/cpu/cpu_x86.c | 18 +++++++++--------- 8 files changed, 37 insertions(+), 34 deletions(-) diff --git a/src/conf/cpu_conf.c b/src/conf/cpu_conf.c index d3fbeba..5deb325 100644 --- a/src/conf/cpu_conf.c +++ b/src/conf/cpu_conf.c @@ -94,7 +94,7 @@ virCPUDefFree(virCPUDefPtr def) int ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) virCPUDefCopyModel(virCPUDefPtr dst, - const virCPUDefPtr src, + const virCPUDef *src, bool resetPolicy) { size_t i; @@ -126,7 +126,7 @@ virCPUDefCopyModel(virCPUDefPtr dst, } virCPUDefPtr -virCPUDefCopy(const virCPUDefPtr cpu) +virCPUDefCopy(const virCPUDef *cpu) { virCPUDefPtr copy; size_t i; @@ -174,7 +174,7 @@ error: } virCPUDefPtr -virCPUDefParseXML(const xmlNodePtr node, +virCPUDefParseXML(xmlNodePtr node, xmlXPathContextPtr ctxt, enum virCPUType mode) { diff --git a/src/conf/cpu_conf.h b/src/conf/cpu_conf.h index 2d1854f..dbe7103 100644 --- a/src/conf/cpu_conf.h +++ b/src/conf/cpu_conf.h @@ -1,7 +1,7 @@ /* * cpu_conf.h: CPU XML handling * - * Copyright (C) 2009-2011 Red Hat, Inc. + * Copyright (C) 2009-2011, 2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -131,14 +131,14 @@ virCPUDefFree(virCPUDefPtr def); int ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) virCPUDefCopyModel(virCPUDefPtr dst, - const virCPUDefPtr src, + const virCPUDef *src, bool resetPolicy); virCPUDefPtr -virCPUDefCopy(const virCPUDefPtr cpu); +virCPUDefCopy(const virCPUDef *cpu); virCPUDefPtr -virCPUDefParseXML(const xmlNodePtr node, +virCPUDefParseXML(xmlNodePtr node, xmlXPathContextPtr ctxt, enum virCPUType mode); diff --git a/src/cpu/cpu.c b/src/cpu/cpu.c index 31de857..9eb7df5 100644 --- a/src/cpu/cpu.c +++ b/src/cpu/cpu.c @@ -132,7 +132,7 @@ cpuCompare(virCPUDefPtr host, int cpuDecode(virCPUDefPtr cpu, - const virCPUDataPtr data, + const virCPUData *data, const char **models, unsigned int nmodels, const char *preferred) @@ -175,7 +175,7 @@ cpuDecode(virCPUDefPtr cpu, int cpuEncode(virArch arch, - const virCPUDefPtr cpu, + const virCPUDef *cpu, virCPUDataPtr *forced, virCPUDataPtr *required, virCPUDataPtr *optional, @@ -402,7 +402,7 @@ cpuBaseline(virCPUDefPtr *cpus, int cpuUpdate(virCPUDefPtr guest, - const virCPUDefPtr host) + const virCPUDef *host) { struct cpuArchDriver *driver; @@ -422,7 +422,7 @@ cpuUpdate(virCPUDefPtr guest, } int -cpuHasFeature(const virCPUDataPtr data, +cpuHasFeature(const virCPUData *data, const char *feature) { struct cpuArchDriver *driver; diff --git a/src/cpu/cpu.h b/src/cpu/cpu.h index 2f0c8c7..967b481 100644 --- a/src/cpu/cpu.h +++ b/src/cpu/cpu.h @@ -50,7 +50,7 @@ typedef virCPUCompareResult typedef int (*cpuArchDecode) (virCPUDefPtr cpu, - const virCPUDataPtr data, + const virCPUData *data, const char **models, unsigned int nmodels, const char *preferred, @@ -58,7 +58,7 @@ typedef int typedef int (*cpuArchEncode) (virArch arch, - const virCPUDefPtr cpu, + const virCPUDef *cpu, virCPUDataPtr *forced, virCPUDataPtr *required, virCPUDataPtr *optional, @@ -87,10 +87,10 @@ typedef virCPUDefPtr typedef int (*cpuArchUpdate) (virCPUDefPtr guest, - const virCPUDefPtr host); + const virCPUDef *host); typedef int -(*cpuArchHasFeature) (const virCPUDataPtr data, +(*cpuArchHasFeature) (const virCPUData *data, const char *feature); @@ -120,14 +120,14 @@ cpuCompare (virCPUDefPtr host, extern int cpuDecode (virCPUDefPtr cpu, - const virCPUDataPtr data, + const virCPUData *data, const char **models, unsigned int nmodels, const char *preferred); extern int cpuEncode (virArch arch, - const virCPUDefPtr cpu, + const virCPUDef *cpu, virCPUDataPtr *forced, virCPUDataPtr *required, virCPUDataPtr *optional, @@ -163,10 +163,10 @@ cpuBaseline (virCPUDefPtr *cpus, extern int cpuUpdate (virCPUDefPtr guest, - const virCPUDefPtr host); + const virCPUDef *host); extern int -cpuHasFeature(const virCPUDataPtr data, +cpuHasFeature(const virCPUData *data, const char *feature); diff --git a/src/cpu/cpu_arm.c b/src/cpu/cpu_arm.c index 06c5dc0..1853810 100644 --- a/src/cpu/cpu_arm.c +++ b/src/cpu/cpu_arm.c @@ -1,6 +1,7 @@ /* * cpu_arm.c: CPU driver for arm CPUs * + * Copyright (C) 2013 Red Hat, Inc. * Copyright (C) Canonical Ltd. 2012 * * This library is free software; you can redistribute it and/or @@ -45,7 +46,7 @@ ArmNodeData(virArch arch) static int ArmDecode(virCPUDefPtr cpu ATTRIBUTE_UNUSED, - const virCPUDataPtr data ATTRIBUTE_UNUSED, + const virCPUData *data ATTRIBUTE_UNUSED, const char **models ATTRIBUTE_UNUSED, unsigned int nmodels ATTRIBUTE_UNUSED, const char *preferred ATTRIBUTE_UNUSED, diff --git a/src/cpu/cpu_powerpc.c b/src/cpu/cpu_powerpc.c index 4e90672..77ffa52 100644 --- a/src/cpu/cpu_powerpc.c +++ b/src/cpu/cpu_powerpc.c @@ -1,6 +1,7 @@ /* * cpu_powerpc.c: CPU driver for PowerPC CPUs * + * Copyright (C) 2013 Red Hat, Inc. * Copyright (C) IBM Corporation, 2010 * * This library is free software; you can redistribute it and/or @@ -144,7 +145,7 @@ ppcVendorFree(struct ppc_vendor *vendor) } static struct ppc_model * -ppcModelFromCPU(const virCPUDefPtr cpu, +ppcModelFromCPU(const virCPUDef *cpu, const struct ppc_map *map) { struct ppc_model *model = NULL; @@ -345,7 +346,7 @@ ppcMakeCPUData(virArch arch, struct cpuPPCData *data) static virCPUCompareResult ppcCompute(virCPUDefPtr host, - const virCPUDefPtr cpu, + const virCPUDef *cpu, virCPUDataPtr *guestData, char **message) @@ -448,7 +449,7 @@ ppcCompare(virCPUDefPtr host, static int ppcDecode(virCPUDefPtr cpu, - const virCPUDataPtr data, + const virCPUData *data, const char **models, unsigned int nmodels, const char *preferred ATTRIBUTE_UNUSED, @@ -529,7 +530,7 @@ ppcGuestData(virCPUDefPtr host, static int ppcUpdate(virCPUDefPtr guest, - const virCPUDefPtr host) + const virCPUDef *host) { switch ((enum virCPUMode) guest->mode) { case VIR_CPU_MODE_HOST_MODEL: diff --git a/src/cpu/cpu_s390.c b/src/cpu/cpu_s390.c index de33e4a..f9d7e21 100644 --- a/src/cpu/cpu_s390.c +++ b/src/cpu/cpu_s390.c @@ -1,6 +1,7 @@ /* * cpu_s390.c: CPU driver for s390(x) CPUs * + * Copyright (C) 2013 Red Hat, Inc. * Copyright IBM Corp. 2012 * * This library is free software; you can redistribute it and/or @@ -47,7 +48,7 @@ s390NodeData(virArch arch) static int s390Decode(virCPUDefPtr cpu ATTRIBUTE_UNUSED, - const virCPUDataPtr data ATTRIBUTE_UNUSED, + const virCPUData *data ATTRIBUTE_UNUSED, const char **models ATTRIBUTE_UNUSED, unsigned int nmodels ATTRIBUTE_UNUSED, const char *preferred ATTRIBUTE_UNUSED, diff --git a/src/cpu/cpu_x86.c b/src/cpu/cpu_x86.c index 3d5e16f..7486757 100644 --- a/src/cpu/cpu_x86.c +++ b/src/cpu/cpu_x86.c @@ -814,7 +814,7 @@ x86ModelFind(const struct x86_map *map, static struct x86_model * -x86ModelFromCPU(const virCPUDefPtr cpu, +x86ModelFromCPU(const virCPUDef *cpu, const struct x86_map *map, int policy) { @@ -863,7 +863,7 @@ error: static int x86ModelSubtractCPU(struct x86_model *model, - const virCPUDefPtr cpu, + const virCPUDef *cpu, const struct x86_map *map) { const struct x86_model *cpu_model; @@ -1457,7 +1457,7 @@ out: static int x86DecodeCPUData(virCPUDefPtr cpu, - const virCPUDataPtr data, + const virCPUData *data, const char **models, unsigned int nmodels, const char *preferred, @@ -1468,7 +1468,7 @@ x86DecodeCPUData(virCPUDefPtr cpu, static struct cpuX86Data * -x86EncodePolicy(const virCPUDefPtr cpu, +x86EncodePolicy(const virCPUDef *cpu, const struct x86_map *map, enum virCPUFeaturePolicy policy) { @@ -1488,7 +1488,7 @@ x86EncodePolicy(const virCPUDefPtr cpu, static int x86Encode(virArch arch, - const virCPUDefPtr cpu, + const virCPUDef *cpu, virCPUDataPtr *forced, virCPUDataPtr *required, virCPUDataPtr *optional, @@ -1815,7 +1815,7 @@ error: static int x86UpdateCustom(virCPUDefPtr guest, - const virCPUDefPtr host) + const virCPUDef *host) { int ret = -1; size_t i; @@ -1862,7 +1862,7 @@ cleanup: static int x86UpdateHostModel(virCPUDefPtr guest, - const virCPUDefPtr host) + const virCPUDef *host) { virCPUDefPtr oldguest; size_t i; @@ -1896,7 +1896,7 @@ x86UpdateHostModel(virCPUDefPtr guest, static int x86Update(virCPUDefPtr guest, - const virCPUDefPtr host) + const virCPUDef *host) { switch ((enum virCPUMode) guest->mode) { case VIR_CPU_MODE_CUSTOM: @@ -1919,7 +1919,7 @@ x86Update(virCPUDefPtr guest, return -1; } -static int x86HasFeature(const virCPUDataPtr data, +static int x86HasFeature(const virCPUData *data, const char *name) { struct x86_map *map; -- 1.8.3.1

On Tue, Oct 08, 2013 at 11:25:02AM -0600, Eric Blake wrote:
'const fooPtr' is the same as 'foo * const' (the pointer won't change, but it's contents can). But in general, if an interface is trying to be const-correct, it should be using 'const foo *' (the pointer is to data that can't be changed).
Fix up offenders in src/cpu.
* src/cpu/cpu.h (cpuArchDecode, cpuArchEncode, cpuArchUpdate) (cpuArchHasFeature, cpuDecode, cpuEncode, cpuUpdate) (cpuHasFeature): Use intended type. * src/conf/cpu_conf.h (virCPUDefCopyModel, virCPUDefCopy): Likewise. (virCPUDefParseXML): Drop const. * src/cpu/cpu.c (cpuDecode, cpuEncode, cpuUpdate, cpuHasFeature): Fix fallout. * src/cpu/cpu_x86.c (x86ModelFromCPU, x86ModelSubtractCPU) (x86DecodeCPUData, x86EncodePolicy, x86Encode, x86UpdateCustom) (x86UpdateHostModel, x86Update, x86HasFeature): Likewise. * src/cpu/cpu_s390.c (s390Decode): Likewise. * src/cpu/cpu_arm.c (ArmDecode): Likewise. * src/cpu/cpu_powerpc.c (ppcModelFromCPU, ppcCompute, ppcDecode) (ppcUpdate): Likewise. * src/conf/cpu_conf.c (virCPUDefCopyModel, virCPUDefCopy) (virCPUDefParseXML): Likewise.
Signed-off-by: Eric Blake <eblake@redhat.com> --- src/conf/cpu_conf.c | 6 +++--- src/conf/cpu_conf.h | 8 ++++---- src/cpu/cpu.c | 8 ++++---- src/cpu/cpu.h | 16 ++++++++-------- src/cpu/cpu_arm.c | 3 ++- src/cpu/cpu_powerpc.c | 9 +++++---- src/cpu/cpu_s390.c | 3 ++- src/cpu/cpu_x86.c | 18 +++++++++--------- 8 files changed, 37 insertions(+), 34 deletions(-)
ACK Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|

'const fooPtr' is the same as 'foo * const' (the pointer won't change, but it's contents can). But in general, if an interface is trying to be const-correct, it should be using 'const foo *' (the pointer is to data that can't be changed). Fix up offenders in nwfilter code. This patch does nothing about the stupidity evident in having __virNWFilterInstantiateFilter, _virNWFilterInstantiateFilter, and virNWFilterInstantiateFilter, which differ only by leading underscores, and which infringes on the namespace reserved to the implementation - that would need to be a separate cleanup. * src/nwfilter/nwfilter_dhcpsnoop.h (virNWFilterDHCPSnoopReq): Use intended type. * src/nwfilter/nwfilter_gentech_driver.h (virNWFilterInstantiateFilter) (virNWFilterUpdateInstantiateFilter) (virNWFilterInstantiataeFilterLate, virNWFilterTeardownFilter) (virNWFilterCreateVarHashmap): Likewise. * src/nwfilter/nwfilter_learnipaddr.h (virNWFilterLearnIPAddress): Likewise. * src/conf/nwfilter_conf.h (virNWFilterApplyBasicRules) (virNWFilterApplyDHCPOnlyRules): Likewise. (virNWFilterDefFormat): Make const-correct. * src/conf/nwfilter_params.h (virNWFilterVarValueCopy) (virNWFilterVarValueGetSimple, virNWFilterVarValueGetCardinality) (virNWFilterVarValueEqual, virNWFilterVarAccessEqual) (virNWFilterVarAccessGetVarName, virNWFilterVarAccessGetType) (virNWFilterVarAccessGetIterId, virNWFilterVarAccessGetIndex) (virNWFilterVarAccessIsAvailable) (virNWFilterVarCombIterGetVarValue): Use intended type. (virNWFilterVarValueGetNthValue): Make const-correct. * src/nwfilter/nwfilter_dhcpsnoop.c (virNWFilterSnoopReqLeaseDel) (virNWFilterSnoopIFKeyFMT, virNWFilterDHCPSnoopReq) (virNWFilterSnoopPruneIter, virNWFilterSnoopRemAllReqIter) (virNWFilterDHCPSnoopReq): Fix fallout. * src/nwfilter/nwfilter_gentech_driver.c (virNWFilterVarHashmapAddStdValues, virNWFilterCreateVarHashmap) (virNWFilterInstantiate, __virNWFilterInstantiateFilter) (_virNWFilterInstantiateFilter, virNWFilterInstantiateFilterLate) (virNWFilterInstantiateFilter) (virNWFilterUpdateInstantiateFilter) (virNWFilterRollbackUpdateFilter, virNWFilterTeardownFilter): Likewise. * src/nwfilter/nwfilter_learnipaddr.c (virNWFilterLearnIPAddress): Likewise. * src/conf/nwfilter_params.c (virNWFilterVarValueCopy) (virNWFilterVarValueGetSimple) (virNWFilterVarValueGetCardinality, virNWFilterVarValueEqual) (virNWFilterVarCombIterAddVariable) (virNWFilterVarCombIterGetVarValue, virNWFilterVarValueCompare) (virNWFilterFormatParamAttributes, virNWFilterVarAccessEqual) (virNWFilterVarAccessGetVarName, virNWFilterVarAccessGetType) (virNWFilterVarAccessGetIterId, virNWFilterVarAccessGetIndex) (virNWFilterVarAccessGetIntIterId) (virNWFilterVarAccessIsAvailable) (virNWFilterVarValueGetNthValue): Likewise. * src/nwfilter/nwfilter_ebiptables_driver.c (ebtablesApplyBasicRules) (ebtablesApplyDHCPOnlyRules, ebiptablesRuleOrderSort) (ebiptablesRuleOrderSortPtr): Likewise. * src/conf/nwfilter_conf.c (virNWFilterDefEqual) (virNWFilterDefFormat): Likewise. Signed-off-by: Eric Blake <eblake@redhat.com> --- src/conf/nwfilter_conf.c | 6 ++--- src/conf/nwfilter_conf.h | 8 +++--- src/conf/nwfilter_params.c | 44 +++++++++++++++---------------- src/conf/nwfilter_params.h | 32 +++++++++++----------- src/nwfilter/nwfilter_dhcpsnoop.c | 12 ++++----- src/nwfilter/nwfilter_dhcpsnoop.h | 3 ++- src/nwfilter/nwfilter_ebiptables_driver.c | 12 ++++----- src/nwfilter/nwfilter_gentech_driver.c | 23 ++++++++-------- src/nwfilter/nwfilter_gentech_driver.h | 11 ++++---- src/nwfilter/nwfilter_learnipaddr.c | 9 ++++--- src/nwfilter/nwfilter_learnipaddr.h | 4 +-- 11 files changed, 83 insertions(+), 81 deletions(-) diff --git a/src/conf/nwfilter_conf.c b/src/conf/nwfilter_conf.c index 7152aae..4c48411 100644 --- a/src/conf/nwfilter_conf.c +++ b/src/conf/nwfilter_conf.c @@ -2,7 +2,7 @@ * nwfilter_conf.c: network filter XML processing * (derived from storage_conf.c) * - * Copyright (C) 2006-2012 Red Hat, Inc. + * Copyright (C) 2006-2013 Red Hat, Inc. * Copyright (C) 2006-2008 Daniel P. Berrange * * Copyright (C) 2010-2011 IBM Corporation @@ -2927,7 +2927,7 @@ virNWFilterTestUnassignDef(virNWFilterObjPtr nwfilter) } static bool -virNWFilterDefEqual(const virNWFilterDefPtr def1, virNWFilterDefPtr def2, +virNWFilterDefEqual(const virNWFilterDef *def1, virNWFilterDefPtr def2, bool cmpUUIDs) { bool ret = false; @@ -3412,7 +3412,7 @@ virNWFilterEntryFormat(virNWFilterEntryPtr entry) char * -virNWFilterDefFormat(virNWFilterDefPtr def) +virNWFilterDefFormat(const virNWFilterDef *def) { virBuffer buf = VIR_BUFFER_INITIALIZER; char uuid[VIR_UUID_STRING_BUFLEN]; diff --git a/src/conf/nwfilter_conf.h b/src/conf/nwfilter_conf.h index 29906f1..6b8b515 100644 --- a/src/conf/nwfilter_conf.h +++ b/src/conf/nwfilter_conf.h @@ -2,7 +2,7 @@ * nwfilter_conf.h: network filter XML processing * (derived from storage_conf.h) * - * Copyright (C) 2006-2010, 2012 Red Hat, Inc. + * Copyright (C) 2006-2010, 2012-2013 Red Hat, Inc. * Copyright (C) 2006-2008 Daniel P. Berrange * * Copyright (C) 2010 IBM Corporation @@ -625,10 +625,10 @@ typedef int (*virNWFilterRuleDisplayInstanceData)(void *_inst); typedef int (*virNWFilterCanApplyBasicRules)(void); typedef int (*virNWFilterApplyBasicRules)(const char *ifname, - const virMacAddrPtr macaddr); + const virMacAddr *macaddr); typedef int (*virNWFilterApplyDHCPOnlyRules)(const char *ifname, - const virMacAddrPtr macaddr, + const virMacAddr *macaddr, virNWFilterVarValuePtr dhcpsrvs, bool leaveTemporary); @@ -695,7 +695,7 @@ int virNWFilterTestUnassignDef(virNWFilterObjPtr nwfilter); virNWFilterDefPtr virNWFilterDefParseNode(xmlDocPtr xml, xmlNodePtr root); -char *virNWFilterDefFormat(virNWFilterDefPtr def); +char *virNWFilterDefFormat(const virNWFilterDef *def); int virNWFilterSaveXML(const char *configDir, virNWFilterDefPtr def, diff --git a/src/conf/nwfilter_params.c b/src/conf/nwfilter_params.c index c23de65..589fcf8 100644 --- a/src/conf/nwfilter_params.c +++ b/src/conf/nwfilter_params.c @@ -38,8 +38,7 @@ static bool isValidVarValue(const char *value); static void virNWFilterVarAccessSetIntIterId(virNWFilterVarAccessPtr, unsigned int); -static unsigned int virNWFilterVarAccessGetIntIterId( - const virNWFilterVarAccessPtr); +static unsigned int virNWFilterVarAccessGetIntIterId(const virNWFilterVarAccess *); void virNWFilterVarValueFree(virNWFilterVarValuePtr val) @@ -65,7 +64,7 @@ virNWFilterVarValueFree(virNWFilterVarValuePtr val) } virNWFilterVarValuePtr -virNWFilterVarValueCopy(const virNWFilterVarValuePtr val) +virNWFilterVarValueCopy(const virNWFilterVarValue *val) { virNWFilterVarValuePtr res; size_t i; @@ -132,7 +131,7 @@ virNWFilterVarValueCreateSimpleCopyValue(const char *value) } const char * -virNWFilterVarValueGetSimple(const virNWFilterVarValuePtr val) +virNWFilterVarValueGetSimple(const virNWFilterVarValue *val) { if (val->valType == NWFILTER_VALUE_TYPE_SIMPLE) return val->u.simple.value; @@ -140,7 +139,7 @@ virNWFilterVarValueGetSimple(const virNWFilterVarValuePtr val) } const char * -virNWFilterVarValueGetNthValue(virNWFilterVarValuePtr val, unsigned int idx) +virNWFilterVarValueGetNthValue(const virNWFilterVarValue* val, unsigned int idx) { const char *res = NULL; @@ -164,7 +163,7 @@ virNWFilterVarValueGetNthValue(virNWFilterVarValuePtr val, unsigned int idx) } unsigned int -virNWFilterVarValueGetCardinality(const virNWFilterVarValuePtr val) +virNWFilterVarValueGetCardinality(const virNWFilterVarValue *val) { switch (val->valType) { case NWFILTER_VALUE_TYPE_SIMPLE: @@ -180,8 +179,8 @@ virNWFilterVarValueGetCardinality(const virNWFilterVarValuePtr val) } bool -virNWFilterVarValueEqual(const virNWFilterVarValuePtr a, - const virNWFilterVarValuePtr b) +virNWFilterVarValueEqual(const virNWFilterVarValue *a, + const virNWFilterVarValue *b) { unsigned int card; size_t i, j; @@ -335,7 +334,7 @@ virNWFilterVarCombIterEntryInit(virNWFilterVarCombIterEntryPtr cie, static int virNWFilterVarCombIterAddVariable(virNWFilterVarCombIterEntryPtr cie, virNWFilterHashTablePtr hash, - const virNWFilterVarAccessPtr varAccess) + const virNWFilterVarAccess *varAccess) { virNWFilterVarValuePtr varValue; unsigned int maxValue = 0, minValue = 0; @@ -543,7 +542,7 @@ next: const char * virNWFilterVarCombIterGetVarValue(virNWFilterVarCombIterPtr ci, - const virNWFilterVarAccessPtr vap) + const virNWFilterVarAccess *vap) { size_t i; unsigned int iterId; @@ -783,8 +782,8 @@ err_exit: static int virNWFilterVarValueCompare(const void *a, const void *b) { - return virNWFilterVarValueEqual((const virNWFilterVarValuePtr) a, - (const virNWFilterVarValuePtr) b) ? 0 : 1; + return virNWFilterVarValueEqual((const virNWFilterVarValue *) a, + (const virNWFilterVarValue *) b) ? 0 : 1; } bool @@ -909,8 +908,7 @@ virNWFilterFormatParamAttributes(virBufferPtr buf, if (numKeys) { virBufferAddLit(buf, ">\n"); for (i = 0; i < numKeys; i++) { - const virNWFilterVarValuePtr value = - (const virNWFilterVarValuePtr)items[i].value; + const virNWFilterVarValue *value = items[i].value; card = virNWFilterVarValueGetCardinality(value); @@ -942,8 +940,8 @@ virNWFilterVarAccessFree(virNWFilterVarAccessPtr varAccess) } bool -virNWFilterVarAccessEqual(const virNWFilterVarAccessPtr a, - const virNWFilterVarAccessPtr b) +virNWFilterVarAccessEqual(const virNWFilterVarAccess *a, + const virNWFilterVarAccess *b) { if (a->accessType != b->accessType) return false; @@ -1078,25 +1076,25 @@ virNWFilterVarAccessPrint(virNWFilterVarAccessPtr vap, virBufferPtr buf) } const char * -virNWFilterVarAccessGetVarName(const virNWFilterVarAccessPtr vap) +virNWFilterVarAccessGetVarName(const virNWFilterVarAccess *vap) { return vap->varName; } enum virNWFilterVarAccessType -virNWFilterVarAccessGetType(const virNWFilterVarAccessPtr vap) +virNWFilterVarAccessGetType(const virNWFilterVarAccess *vap) { return vap->accessType; } unsigned int -virNWFilterVarAccessGetIterId(const virNWFilterVarAccessPtr vap) +virNWFilterVarAccessGetIterId(const virNWFilterVarAccess *vap) { return vap->u.iterId; } unsigned int -virNWFilterVarAccessGetIndex(const virNWFilterVarAccessPtr vap) +virNWFilterVarAccessGetIndex(const virNWFilterVarAccess *vap) { return vap->u.index.index; } @@ -1109,14 +1107,14 @@ virNWFilterVarAccessSetIntIterId(virNWFilterVarAccessPtr vap, } static unsigned int -virNWFilterVarAccessGetIntIterId(const virNWFilterVarAccessPtr vap) +virNWFilterVarAccessGetIntIterId(const virNWFilterVarAccess *vap) { return vap->u.index.intIterId; } bool -virNWFilterVarAccessIsAvailable(const virNWFilterVarAccessPtr varAccess, - const virNWFilterHashTablePtr hash) +virNWFilterVarAccessIsAvailable(const virNWFilterVarAccess *varAccess, + const virNWFilterHashTable *hash) { const char *varName = virNWFilterVarAccessGetVarName(varAccess); const char *res; diff --git a/src/conf/nwfilter_params.h b/src/conf/nwfilter_params.h index ac57796..6b0b1a1 100644 --- a/src/conf/nwfilter_params.h +++ b/src/conf/nwfilter_params.h @@ -1,7 +1,7 @@ /* * nwfilter_params.h: parsing and data maintenance of filter parameters * - * Copyright (C) 2011-2012 Red Hat, Inc. + * Copyright (C) 2011-2013 Red Hat, Inc. * Copyright (C) 2010 IBM Corporation * * This library is free software; you can redistribute it and/or @@ -51,14 +51,14 @@ struct _virNWFilterVarValue { virNWFilterVarValuePtr virNWFilterVarValueCreateSimple(char *); virNWFilterVarValuePtr virNWFilterVarValueCreateSimpleCopyValue(const char *); -virNWFilterVarValuePtr virNWFilterVarValueCopy(const virNWFilterVarValuePtr); +virNWFilterVarValuePtr virNWFilterVarValueCopy(const virNWFilterVarValue *); void virNWFilterVarValueFree(virNWFilterVarValuePtr val); -const char *virNWFilterVarValueGetSimple(const virNWFilterVarValuePtr val); -const char *virNWFilterVarValueGetNthValue(virNWFilterVarValuePtr val, +const char *virNWFilterVarValueGetSimple(const virNWFilterVarValue *val); +const char *virNWFilterVarValueGetNthValue(const virNWFilterVarValue *val, unsigned int idx); -unsigned int virNWFilterVarValueGetCardinality(const virNWFilterVarValuePtr); -bool virNWFilterVarValueEqual(const virNWFilterVarValuePtr a, - const virNWFilterVarValuePtr b); +unsigned int virNWFilterVarValueGetCardinality(const virNWFilterVarValue *); +bool virNWFilterVarValueEqual(const virNWFilterVarValue *a, + const virNWFilterVarValue *b); int virNWFilterVarValueAddValue(virNWFilterVarValuePtr val, char *value); int virNWFilterVarValueDelValue(virNWFilterVarValuePtr val, const char *value); @@ -125,18 +125,18 @@ struct _virNWFilterVarAccess { # define VIR_NWFILTER_MAX_ITERID 1000 void virNWFilterVarAccessFree(virNWFilterVarAccessPtr varAccess); -bool virNWFilterVarAccessEqual(const virNWFilterVarAccessPtr a, - const virNWFilterVarAccessPtr b); +bool virNWFilterVarAccessEqual(const virNWFilterVarAccess *a, + const virNWFilterVarAccess *b); virNWFilterVarAccessPtr virNWFilterVarAccessParse(const char *varAccess); void virNWFilterVarAccessPrint(virNWFilterVarAccessPtr vap, virBufferPtr buf); -const char *virNWFilterVarAccessGetVarName(const virNWFilterVarAccessPtr vap); +const char *virNWFilterVarAccessGetVarName(const virNWFilterVarAccess *vap); enum virNWFilterVarAccessType virNWFilterVarAccessGetType( - const virNWFilterVarAccessPtr vap); -unsigned int virNWFilterVarAccessGetIterId(const virNWFilterVarAccessPtr vap); -unsigned int virNWFilterVarAccessGetIndex(const virNWFilterVarAccessPtr vap); -bool virNWFilterVarAccessIsAvailable(const virNWFilterVarAccessPtr vap, - const virNWFilterHashTablePtr hash); + const virNWFilterVarAccess *vap); +unsigned int virNWFilterVarAccessGetIterId(const virNWFilterVarAccess *vap); +unsigned int virNWFilterVarAccessGetIndex(const virNWFilterVarAccess *vap); +bool virNWFilterVarAccessIsAvailable(const virNWFilterVarAccess *vap, + const virNWFilterHashTable *hash); typedef struct _virNWFilterVarCombIterEntry virNWFilterVarCombIterEntry; typedef virNWFilterVarCombIterEntry *virNWFilterVarCombIterEntryPtr; @@ -165,7 +165,7 @@ void virNWFilterVarCombIterFree(virNWFilterVarCombIterPtr ci); virNWFilterVarCombIterPtr virNWFilterVarCombIterNext( virNWFilterVarCombIterPtr ci); const char *virNWFilterVarCombIterGetVarValue(virNWFilterVarCombIterPtr ci, - const virNWFilterVarAccessPtr); + const virNWFilterVarAccess *); #endif /* NWFILTER_PARAMS_H */ diff --git a/src/nwfilter/nwfilter_dhcpsnoop.c b/src/nwfilter/nwfilter_dhcpsnoop.c index 2bc1686..e8fcfef 100644 --- a/src/nwfilter/nwfilter_dhcpsnoop.c +++ b/src/nwfilter/nwfilter_dhcpsnoop.c @@ -877,7 +877,7 @@ virNWFilterSnoopReqLeaseDel(virNWFilterSnoopReqPtr req, req->filtername, req->vars); } else { - const virNWFilterVarValuePtr dhcpsrvrs = + virNWFilterVarValuePtr dhcpsrvrs = virHashLookup(req->vars->hashTable, NWFILTER_VARNAME_DHCPSERVER); if (req->techdriver && @@ -1569,7 +1569,7 @@ exit: static void virNWFilterSnoopIFKeyFMT(char *ifkey, const unsigned char *vmuuid, - const virMacAddrPtr macaddr) + const virMacAddr *macaddr) { virUUIDFormat(vmuuid, ifkey); ifkey[VIR_UUID_STRING_BUFLEN - 1] = '-'; @@ -1582,7 +1582,7 @@ virNWFilterDHCPSnoopReq(virNWFilterTechDriverPtr techdriver, const char *linkdev, enum virDomainNetType nettype, const unsigned char *vmuuid, - const virMacAddrPtr macaddr, + const virMacAddr *macaddr, const char *filtername, virNWFilterHashTablePtr filterparams, virNWFilterDriverStatePtr driver) @@ -1829,7 +1829,7 @@ virNWFilterSnoopPruneIter(const void *payload, const void *name ATTRIBUTE_UNUSED, const void *data ATTRIBUTE_UNUSED) { - const virNWFilterSnoopReqPtr req = (virNWFilterSnoopReqPtr)payload; + virNWFilterSnoopReqPtr req = (virNWFilterSnoopReqPtr)payload; bool del_req; /* clean up orphaned, expired leases */ @@ -2025,7 +2025,7 @@ virNWFilterSnoopRemAllReqIter(const void *payload, const void *name ATTRIBUTE_UNUSED, const void *data ATTRIBUTE_UNUSED) { - const virNWFilterSnoopReqPtr req = (virNWFilterSnoopReqPtr)payload; + virNWFilterSnoopReqPtr req = (virNWFilterSnoopReqPtr)payload; /* protect req->ifname */ virNWFilterSnoopReqLock(req); @@ -2216,7 +2216,7 @@ virNWFilterDHCPSnoopReq(virNWFilterTechDriverPtr techdriver ATTRIBUTE_UNUSED, const char *linkdev ATTRIBUTE_UNUSED, enum virDomainNetType nettype ATTRIBUTE_UNUSED, const unsigned char *vmuuid ATTRIBUTE_UNUSED, - const virMacAddrPtr macaddr ATTRIBUTE_UNUSED, + const virMacAddr *macaddr ATTRIBUTE_UNUSED, const char *filtername ATTRIBUTE_UNUSED, virNWFilterHashTablePtr filterparams ATTRIBUTE_UNUSED, virNWFilterDriverStatePtr driver ATTRIBUTE_UNUSED) diff --git a/src/nwfilter/nwfilter_dhcpsnoop.h b/src/nwfilter/nwfilter_dhcpsnoop.h index d075f83..c6b45d1 100644 --- a/src/nwfilter/nwfilter_dhcpsnoop.h +++ b/src/nwfilter/nwfilter_dhcpsnoop.h @@ -1,6 +1,7 @@ /* * nwfilter_dhcpsnoop.h: support DHCP snooping for a VM on an interface * + * Copyright (C) 2013 Red Hat, Inc. * Copyright (C) 2010-2012 IBM Corp. * Copyright (C) 2010-2012 David L Stevens * @@ -31,7 +32,7 @@ int virNWFilterDHCPSnoopReq(virNWFilterTechDriverPtr techdriver, const char *linkdev, enum virDomainNetType nettype, const unsigned char *vmuuid, - const virMacAddrPtr macaddr, + const virMacAddr *macaddr, const char *filtername, virNWFilterHashTablePtr filterparams, virNWFilterDriverStatePtr driver); diff --git a/src/nwfilter/nwfilter_ebiptables_driver.c b/src/nwfilter/nwfilter_ebiptables_driver.c index 2fd8afb..4962ddd 100644 --- a/src/nwfilter/nwfilter_ebiptables_driver.c +++ b/src/nwfilter/nwfilter_ebiptables_driver.c @@ -3235,7 +3235,7 @@ ebiptablesCanApplyBasicRules(void) { */ static int ebtablesApplyBasicRules(const char *ifname, - const virMacAddrPtr macaddr) + const virMacAddr *macaddr) { virBuffer buf = VIR_BUFFER_INITIALIZER; char chain[MAX_CHAINNAME_LENGTH]; @@ -3328,7 +3328,7 @@ tear_down_tmpebchains: */ static int ebtablesApplyDHCPOnlyRules(const char *ifname, - const virMacAddrPtr macaddr, + const virMacAddr *macaddr, virNWFilterVarValuePtr dhcpsrvrs, bool leaveTemporary) { @@ -3564,8 +3564,8 @@ static int ebtablesCleanAll(const char *ifname) static int ebiptablesRuleOrderSort(const void *a, const void *b) { - const ebiptablesRuleInstPtr insta = (const ebiptablesRuleInstPtr)a; - const ebiptablesRuleInstPtr instb = (const ebiptablesRuleInstPtr)b; + const ebiptablesRuleInst *insta = a; + const ebiptablesRuleInst *instb = b; const char *root = virNWFilterChainSuffixTypeToString( VIR_NWFILTER_CHAINSUFFIX_ROOT); bool root_a = STREQ(insta->neededProtocolChain, root); @@ -3590,8 +3590,8 @@ normal: static int ebiptablesRuleOrderSortPtr(const void *a, const void *b) { - const ebiptablesRuleInstPtr *insta = a; - const ebiptablesRuleInstPtr *instb = b; + ebiptablesRuleInst * const *insta = a; + ebiptablesRuleInst * const *instb = b; return ebiptablesRuleOrderSort(*insta, *instb); } diff --git a/src/nwfilter/nwfilter_gentech_driver.c b/src/nwfilter/nwfilter_gentech_driver.c index 5961165..9508bf5 100644 --- a/src/nwfilter/nwfilter_gentech_driver.c +++ b/src/nwfilter/nwfilter_gentech_driver.c @@ -1,7 +1,7 @@ /* * nwfilter_gentech_driver.c: generic technology driver * - * Copyright (C) 2011 Red Hat, Inc. + * Copyright (C) 2011, 2013 Red Hat, Inc. * Copyright (C) 2010 IBM Corp. * Copyright (C) 2010 Stefan Berger * @@ -148,7 +148,7 @@ virNWFilterRuleInstFree(virNWFilterRuleInstPtr inst) static int virNWFilterVarHashmapAddStdValues(virNWFilterHashTablePtr table, char *macaddr, - const virNWFilterVarValuePtr ipaddr) + const virNWFilterVarValue *ipaddr) { virNWFilterVarValue *val; @@ -197,7 +197,8 @@ virNWFilterVarHashmapAddStdValues(virNWFilterHashTablePtr table, */ virNWFilterHashTablePtr virNWFilterCreateVarHashmap(char *macaddr, - const virNWFilterVarValuePtr ipaddr) { + const virNWFilterVarValue *ipaddr) +{ virNWFilterHashTablePtr table = virNWFilterHashTableCreate(0); if (!table) return NULL; @@ -644,7 +645,7 @@ virNWFilterInstantiate(const unsigned char *vmuuid ATTRIBUTE_UNUSED, virNWFilterHashTablePtr vars, enum instCase useNewFilter, bool *foundNewFilter, bool teardownOld, - const virMacAddrPtr macaddr, + const virMacAddr *macaddr, virNWFilterDriverStatePtr driver, bool forceWithPendingReq) { @@ -807,7 +808,7 @@ __virNWFilterInstantiateFilter(virNWFilterDriverStatePtr driver, int ifindex, const char *linkdev, enum virDomainNetType nettype, - const virMacAddrPtr macaddr, + const virMacAddr *macaddr, const char *filtername, virNWFilterHashTablePtr filterparams, enum instCase useNewFilter, @@ -923,7 +924,7 @@ err_exit: static int _virNWFilterInstantiateFilter(virNWFilterDriverStatePtr driver, const unsigned char *vmuuid, - const virDomainNetDefPtr net, + const virDomainNetDef *net, bool teardownOld, enum instCase useNewFilter, bool *foundNewFilter) @@ -976,7 +977,7 @@ virNWFilterInstantiateFilterLate(virNWFilterDriverStatePtr driver, int ifindex, const char *linkdev, enum virDomainNetType nettype, - const virMacAddrPtr macaddr, + const virMacAddr *macaddr, const char *filtername, virNWFilterHashTablePtr filterparams) { @@ -1017,7 +1018,7 @@ virNWFilterInstantiateFilterLate(virNWFilterDriverStatePtr driver, int virNWFilterInstantiateFilter(virNWFilterDriverStatePtr driver, const unsigned char *vmuuid, - const virDomainNetDefPtr net) + const virDomainNetDef *net) { bool foundNewFilter = false; @@ -1031,7 +1032,7 @@ virNWFilterInstantiateFilter(virNWFilterDriverStatePtr driver, int virNWFilterUpdateInstantiateFilter(virNWFilterDriverStatePtr driver, const unsigned char *vmuuid, - const virDomainNetDefPtr net, + const virDomainNetDef *net, bool *skipIface) { bool foundNewFilter = false; @@ -1046,7 +1047,7 @@ virNWFilterUpdateInstantiateFilter(virNWFilterDriverStatePtr driver, } static int -virNWFilterRollbackUpdateFilter(const virDomainNetDefPtr net) +virNWFilterRollbackUpdateFilter(const virDomainNetDef *net) { const char *drvname = EBIPTABLES_DRIVER_ID; int ifindex; @@ -1130,7 +1131,7 @@ _virNWFilterTeardownFilter(const char *ifname) int -virNWFilterTeardownFilter(const virDomainNetDefPtr net) +virNWFilterTeardownFilter(const virDomainNetDef *net) { return _virNWFilterTeardownFilter(net->ifname); } diff --git a/src/nwfilter/nwfilter_gentech_driver.h b/src/nwfilter/nwfilter_gentech_driver.h index 8528e2a..f4789e1 100644 --- a/src/nwfilter/nwfilter_gentech_driver.h +++ b/src/nwfilter/nwfilter_gentech_driver.h @@ -1,6 +1,7 @@ /* * nwfilter_gentech_driver.h: generic technology driver include file * + * Copyright (C) 2013 Red Hat, Inc. * Copyright (C) 2010 IBM Corp. * Copyright (C) 2010 Stefan Berger * @@ -41,10 +42,10 @@ enum instCase { int virNWFilterInstantiateFilter(virNWFilterDriverStatePtr driver, const unsigned char *vmuuid, - const virDomainNetDefPtr net); + const virDomainNetDef *net); int virNWFilterUpdateInstantiateFilter(virNWFilterDriverStatePtr driver, const unsigned char *vmuuid, - const virDomainNetDefPtr net, + const virDomainNetDef *net, bool *skipIface); int virNWFilterInstantiateFilterLate(virNWFilterDriverStatePtr driver, @@ -53,14 +54,14 @@ int virNWFilterInstantiateFilterLate(virNWFilterDriverStatePtr driver, int ifindex, const char *linkdev, enum virDomainNetType nettype, - const virMacAddrPtr macaddr, + const virMacAddr *macaddr, const char *filtername, virNWFilterHashTablePtr filterparams); -int virNWFilterTeardownFilter(const virDomainNetDefPtr net); +int virNWFilterTeardownFilter(const virDomainNetDef *net); virNWFilterHashTablePtr virNWFilterCreateVarHashmap(char *macaddr, - const virNWFilterVarValuePtr); + const virNWFilterVarValue *value); int virNWFilterDomainFWUpdateCB(virDomainObjPtr vm, void *data); diff --git a/src/nwfilter/nwfilter_learnipaddr.c b/src/nwfilter/nwfilter_learnipaddr.c index 093158a..4fc851e 100644 --- a/src/nwfilter/nwfilter_learnipaddr.c +++ b/src/nwfilter/nwfilter_learnipaddr.c @@ -2,7 +2,7 @@ * nwfilter_learnipaddr.c: support for learning IP address used by a VM * on an interface * - * Copyright (C) 2011 Red Hat, Inc. + * Copyright (C) 2011, 2013 Red Hat, Inc. * Copyright (C) 2010 IBM Corp. * Copyright (C) 2010 Stefan Berger * @@ -677,7 +677,7 @@ virNWFilterLearnIPAddress(virNWFilterTechDriverPtr techdriver, int ifindex, const char *linkdev, enum virDomainNetType nettype, - const virMacAddrPtr macaddr, + const virMacAddr *macaddr, const char *filtername, virNWFilterHashTablePtr filterparams, virNWFilterDriverStatePtr driver, @@ -766,11 +766,12 @@ virNWFilterLearnIPAddress(virNWFilterTechDriverPtr techdriver ATTRIBUTE_UNUSED, int ifindex ATTRIBUTE_UNUSED, const char *linkdev ATTRIBUTE_UNUSED, enum virDomainNetType nettype ATTRIBUTE_UNUSED, - const virMacAddrPtr macaddr ATTRIBUTE_UNUSED, + const virMacAddr *macaddr ATTRIBUTE_UNUSED, const char *filtername ATTRIBUTE_UNUSED, virNWFilterHashTablePtr filterparams ATTRIBUTE_UNUSED, virNWFilterDriverStatePtr driver ATTRIBUTE_UNUSED, - enum howDetect howDetect ATTRIBUTE_UNUSED) { + enum howDetect howDetect ATTRIBUTE_UNUSED) +{ virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("IP parameter must be given since libvirt " "was not compiled with IP address learning " diff --git a/src/nwfilter/nwfilter_learnipaddr.h b/src/nwfilter/nwfilter_learnipaddr.h index 5106e92..783dc16 100644 --- a/src/nwfilter/nwfilter_learnipaddr.h +++ b/src/nwfilter/nwfilter_learnipaddr.h @@ -2,7 +2,7 @@ * nwfilter_learnipaddr.h: support for learning IP address used by a VM * on an interface * - * Copyright (C) 2012 Red Hat, Inc. + * Copyright (C) 2012-2013 Red Hat, Inc. * Copyright (C) 2010 IBM Corp. * Copyright (C) 2010 Stefan Berger * @@ -58,7 +58,7 @@ int virNWFilterLearnIPAddress(virNWFilterTechDriverPtr techdriver, int ifindex, const char *linkdev, enum virDomainNetType nettype, - const virMacAddrPtr macaddr, + const virMacAddr *macaddr, const char *filtername, virNWFilterHashTablePtr filterparams, virNWFilterDriverStatePtr driver, -- 1.8.3.1

On Tue, Oct 08, 2013 at 11:25:03AM -0600, Eric Blake wrote:
'const fooPtr' is the same as 'foo * const' (the pointer won't change, but it's contents can). But in general, if an interface is trying to be const-correct, it should be using 'const foo *' (the pointer is to data that can't be changed).
Fix up offenders in nwfilter code.
This patch does nothing about the stupidity evident in having __virNWFilterInstantiateFilter, _virNWFilterInstantiateFilter, and virNWFilterInstantiateFilter, which differ only by leading underscores, and which infringes on the namespace reserved to the implementation - that would need to be a separate cleanup.
* src/nwfilter/nwfilter_dhcpsnoop.h (virNWFilterDHCPSnoopReq): Use intended type. * src/nwfilter/nwfilter_gentech_driver.h (virNWFilterInstantiateFilter) (virNWFilterUpdateInstantiateFilter) (virNWFilterInstantiataeFilterLate, virNWFilterTeardownFilter) (virNWFilterCreateVarHashmap): Likewise. * src/nwfilter/nwfilter_learnipaddr.h (virNWFilterLearnIPAddress): Likewise. * src/conf/nwfilter_conf.h (virNWFilterApplyBasicRules) (virNWFilterApplyDHCPOnlyRules): Likewise. (virNWFilterDefFormat): Make const-correct. * src/conf/nwfilter_params.h (virNWFilterVarValueCopy) (virNWFilterVarValueGetSimple, virNWFilterVarValueGetCardinality) (virNWFilterVarValueEqual, virNWFilterVarAccessEqual) (virNWFilterVarAccessGetVarName, virNWFilterVarAccessGetType) (virNWFilterVarAccessGetIterId, virNWFilterVarAccessGetIndex) (virNWFilterVarAccessIsAvailable) (virNWFilterVarCombIterGetVarValue): Use intended type. (virNWFilterVarValueGetNthValue): Make const-correct. * src/nwfilter/nwfilter_dhcpsnoop.c (virNWFilterSnoopReqLeaseDel) (virNWFilterSnoopIFKeyFMT, virNWFilterDHCPSnoopReq) (virNWFilterSnoopPruneIter, virNWFilterSnoopRemAllReqIter) (virNWFilterDHCPSnoopReq): Fix fallout. * src/nwfilter/nwfilter_gentech_driver.c (virNWFilterVarHashmapAddStdValues, virNWFilterCreateVarHashmap) (virNWFilterInstantiate, __virNWFilterInstantiateFilter) (_virNWFilterInstantiateFilter, virNWFilterInstantiateFilterLate) (virNWFilterInstantiateFilter) (virNWFilterUpdateInstantiateFilter) (virNWFilterRollbackUpdateFilter, virNWFilterTeardownFilter): Likewise. * src/nwfilter/nwfilter_learnipaddr.c (virNWFilterLearnIPAddress): Likewise. * src/conf/nwfilter_params.c (virNWFilterVarValueCopy) (virNWFilterVarValueGetSimple) (virNWFilterVarValueGetCardinality, virNWFilterVarValueEqual) (virNWFilterVarCombIterAddVariable) (virNWFilterVarCombIterGetVarValue, virNWFilterVarValueCompare) (virNWFilterFormatParamAttributes, virNWFilterVarAccessEqual) (virNWFilterVarAccessGetVarName, virNWFilterVarAccessGetType) (virNWFilterVarAccessGetIterId, virNWFilterVarAccessGetIndex) (virNWFilterVarAccessGetIntIterId) (virNWFilterVarAccessIsAvailable) (virNWFilterVarValueGetNthValue): Likewise. * src/nwfilter/nwfilter_ebiptables_driver.c (ebtablesApplyBasicRules) (ebtablesApplyDHCPOnlyRules, ebiptablesRuleOrderSort) (ebiptablesRuleOrderSortPtr): Likewise. * src/conf/nwfilter_conf.c (virNWFilterDefEqual) (virNWFilterDefFormat): Likewise.
Signed-off-by: Eric Blake <eblake@redhat.com> --- src/conf/nwfilter_conf.c | 6 ++--- src/conf/nwfilter_conf.h | 8 +++--- src/conf/nwfilter_params.c | 44 +++++++++++++++---------------- src/conf/nwfilter_params.h | 32 +++++++++++----------- src/nwfilter/nwfilter_dhcpsnoop.c | 12 ++++----- src/nwfilter/nwfilter_dhcpsnoop.h | 3 ++- src/nwfilter/nwfilter_ebiptables_driver.c | 12 ++++----- src/nwfilter/nwfilter_gentech_driver.c | 23 ++++++++-------- src/nwfilter/nwfilter_gentech_driver.h | 11 ++++---- src/nwfilter/nwfilter_learnipaddr.c | 9 ++++--- src/nwfilter/nwfilter_learnipaddr.h | 4 +-- 11 files changed, 83 insertions(+), 81 deletions(-)
ACK Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|

'const fooPtr' is the same as 'foo * const' (the pointer won't change, but it's contents can). But in general, if an interface is trying to be const-correct, it should be using 'const foo *' (the pointer is to data that can't be changed). Fix up offenders in the testsuite. * tests/cputest.c (cpuTestCompareXML): Use intended type. * tests/qemucapabilitiestest.c (testQemuCaps): Likewise. * tests/qemumonitorjsontest.c: Drop const. Signed-off-by: Eric Blake <eblake@redhat.com> --- tests/cputest.c | 4 ++-- tests/qemucapabilitiestest.c | 2 +- tests/qemumonitorjsontest.c | 21 +++++++++++---------- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/tests/cputest.c b/tests/cputest.c index 8e3640b..b80fac7 100644 --- a/tests/cputest.c +++ b/tests/cputest.c @@ -1,7 +1,7 @@ /* * cputest.c: Test the libvirtd internal CPU APIs * - * Copyright (C) 2010-2012 Red Hat, Inc. + * Copyright (C) 2010-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -153,7 +153,7 @@ cleanup_cpus: static int cpuTestCompareXML(const char *arch, - const virCPUDefPtr cpu, + virCPUDef *cpu, const char *name, unsigned int flags) { diff --git a/tests/qemucapabilitiestest.c b/tests/qemucapabilitiestest.c index 9902fc5..28f12e7 100644 --- a/tests/qemucapabilitiestest.c +++ b/tests/qemucapabilitiestest.c @@ -163,7 +163,7 @@ static int testQemuCaps(const void *opaque) { int ret = -1; - const testQemuDataPtr data = (const testQemuDataPtr) opaque; + const testQemuData *data = opaque; char *repliesFile = NULL, *capsFile = NULL; char *replies = NULL, *caps = NULL; qemuMonitorTestPtr mon = NULL; diff --git a/tests/qemumonitorjsontest.c b/tests/qemumonitorjsontest.c index 6ef877c..3e9348e 100644 --- a/tests/qemumonitorjsontest.c +++ b/tests/qemumonitorjsontest.c @@ -524,7 +524,7 @@ cleanup: static int testQemuMonitorJSONGetTPMModels(const void *data) { - const virDomainXMLOptionPtr xmlopt = (virDomainXMLOptionPtr)data; + virDomainXMLOptionPtr xmlopt = (virDomainXMLOptionPtr)data; qemuMonitorTestPtr test = qemuMonitorTestNewSimple(true, xmlopt); int ret = -1; char **tpmmodels = NULL; @@ -577,7 +577,7 @@ cleanup: static int testQemuMonitorJSONGetCommandLineOptionParameters(const void *data) { - const virDomainXMLOptionPtr xmlopt = (virDomainXMLOptionPtr)data; + virDomainXMLOptionPtr xmlopt = (virDomainXMLOptionPtr)data; qemuMonitorTestPtr test = qemuMonitorTestNewSimple(true, xmlopt); int ret = -1; char **params = NULL; @@ -678,7 +678,7 @@ cleanup: static int testQemuMonitorJSONAttachChardev(const void *data) { - const virDomainXMLOptionPtr xmlopt = (virDomainXMLOptionPtr)data; + virDomainXMLOptionPtr xmlopt = (virDomainXMLOptionPtr)data; qemuMonitorTestPtr test = qemuMonitorTestNewSimple(true, xmlopt); virDomainChrSourceDef chr; int ret = 0; @@ -759,7 +759,7 @@ cleanup: static int testQemuMonitorJSONDetachChardev(const void *data) { - const virDomainXMLOptionPtr xmlopt = (virDomainXMLOptionPtr)data; + virDomainXMLOptionPtr xmlopt = (virDomainXMLOptionPtr)data; qemuMonitorTestPtr test = qemuMonitorTestNewSimple(true, xmlopt); int ret = -1; @@ -792,7 +792,7 @@ cleanup: static int testQemuMonitorJSONGetListPaths(const void *data) { - const virDomainXMLOptionPtr xmlopt = (virDomainXMLOptionPtr)data; + virDomainXMLOptionPtr xmlopt = (virDomainXMLOptionPtr)data; qemuMonitorTestPtr test = qemuMonitorTestNewSimple(true, xmlopt); int ret = -1; qemuMonitorJSONListPathPtr *paths; @@ -870,7 +870,7 @@ cleanup: static int testQemuMonitorJSONGetObjectProperty(const void *data) { - const virDomainXMLOptionPtr xmlopt = (virDomainXMLOptionPtr)data; + virDomainXMLOptionPtr xmlopt = (virDomainXMLOptionPtr)data; qemuMonitorTestPtr test = qemuMonitorTestNewSimple(true, xmlopt); int ret = -1; qemuMonitorJSONObjectProperty prop; @@ -913,7 +913,7 @@ cleanup: static int testQemuMonitorJSONSetObjectProperty(const void *data) { - const virDomainXMLOptionPtr xmlopt = (virDomainXMLOptionPtr)data; + virDomainXMLOptionPtr xmlopt = (virDomainXMLOptionPtr)data; qemuMonitorTestPtr test = qemuMonitorTestNewSimple(true, xmlopt); int ret = -1; qemuMonitorJSONObjectProperty prop; @@ -965,7 +965,7 @@ cleanup: static int testQemuMonitorJSONGetDeviceAliases(const void *data) { - const virDomainXMLOptionPtr xmlopt = (virDomainXMLOptionPtr)data; + virDomainXMLOptionPtr xmlopt = (virDomainXMLOptionPtr)data; qemuMonitorTestPtr test = qemuMonitorTestNewSimple(true, xmlopt); int ret = -1; char **aliases = NULL; @@ -1025,7 +1025,7 @@ cleanup: static int testQemuMonitorJSONCPU(const void *data) { - const virDomainXMLOptionPtr xmlopt = (virDomainXMLOptionPtr)data; + virDomainXMLOptionPtr xmlopt = (virDomainXMLOptionPtr)data; qemuMonitorTestPtr test = qemuMonitorTestNewSimple(true, xmlopt); int ret = -1; bool running = false; @@ -1084,7 +1084,8 @@ cleanup: static int testQemuMonitorJSONSimpleFunc(const void *opaque) { - const testQemuMonitorJSONSimpleFuncDataPtr data = (const testQemuMonitorJSONSimpleFuncDataPtr) opaque; + testQemuMonitorJSONSimpleFuncDataPtr data = + (testQemuMonitorJSONSimpleFuncDataPtr) opaque; virDomainXMLOptionPtr xmlopt = data->xmlopt; qemuMonitorTestPtr test = qemuMonitorTestNewSimple(true, xmlopt); const char *reply = data->reply; -- 1.8.3.1

On Tue, Oct 08, 2013 at 11:25:04AM -0600, Eric Blake wrote:
'const fooPtr' is the same as 'foo * const' (the pointer won't change, but it's contents can). But in general, if an interface is trying to be const-correct, it should be using 'const foo *' (the pointer is to data that can't be changed).
Fix up offenders in the testsuite.
* tests/cputest.c (cpuTestCompareXML): Use intended type. * tests/qemucapabilitiestest.c (testQemuCaps): Likewise. * tests/qemumonitorjsontest.c: Drop const.
Signed-off-by: Eric Blake <eblake@redhat.com> --- tests/cputest.c | 4 ++-- tests/qemucapabilitiestest.c | 2 +- tests/qemumonitorjsontest.c | 21 +++++++++++---------- 3 files changed, 14 insertions(+), 13 deletions(-)
ACK Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|

'const fooPtr' is the same as 'foo * const' (the pointer won't change, but it's contents can). But in general, if an interface is trying to be const-correct, it should be using 'const foo *' (the pointer is to data that can't be changed). Fix up offenders in the python bindings. * python/generator.py (py_types): Drop useless conversions. * python/libvirt-override.c (getPyVirTypedParameter) (setPyVirTypedParameter): Use intended type. Signed-off-by: Eric Blake <eblake@redhat.com> --- python/generator.py | 11 ----------- python/libvirt-override.c | 4 ++-- 2 files changed, 2 insertions(+), 13 deletions(-) diff --git a/python/generator.py b/python/generator.py index 12c14f1..87ecf5a 100755 --- a/python/generator.py +++ b/python/generator.py @@ -294,57 +294,46 @@ py_types = { 'size_t': ('n', None, "size_t", "size_t"), 'virDomainPtr': ('O', "virDomain", "virDomainPtr", "virDomainPtr"), - 'const virDomainPtr': ('O', "virDomain", "virDomainPtr", "virDomainPtr"), 'virDomain *': ('O', "virDomain", "virDomainPtr", "virDomainPtr"), 'const virDomain *': ('O', "virDomain", "virDomainPtr", "virDomainPtr"), 'virNetworkPtr': ('O', "virNetwork", "virNetworkPtr", "virNetworkPtr"), - 'const virNetworkPtr': ('O', "virNetwork", "virNetworkPtr", "virNetworkPtr"), 'virNetwork *': ('O', "virNetwork", "virNetworkPtr", "virNetworkPtr"), 'const virNetwork *': ('O', "virNetwork", "virNetworkPtr", "virNetworkPtr"), 'virInterfacePtr': ('O', "virInterface", "virInterfacePtr", "virInterfacePtr"), - 'const virInterfacePtr': ('O', "virInterface", "virInterfacePtr", "virInterfacePtr"), 'virInterface *': ('O', "virInterface", "virInterfacePtr", "virInterfacePtr"), 'const virInterface *': ('O', "virInterface", "virInterfacePtr", "virInterfacePtr"), 'virStoragePoolPtr': ('O', "virStoragePool", "virStoragePoolPtr", "virStoragePoolPtr"), - 'const virStoragePoolPtr': ('O', "virStoragePool", "virStoragePoolPtr", "virStoragePoolPtr"), 'virStoragePool *': ('O', "virStoragePool", "virStoragePoolPtr", "virStoragePoolPtr"), 'const virStoragePool *': ('O', "virStoragePool", "virStoragePoolPtr", "virStoragePoolPtr"), 'virStorageVolPtr': ('O', "virStorageVol", "virStorageVolPtr", "virStorageVolPtr"), - 'const virStorageVolPtr': ('O', "virStorageVol", "virStorageVolPtr", "virStorageVolPtr"), 'virStorageVol *': ('O', "virStorageVol", "virStorageVolPtr", "virStorageVolPtr"), 'const virStorageVol *': ('O', "virStorageVol", "virStorageVolPtr", "virStorageVolPtr"), 'virConnectPtr': ('O', "virConnect", "virConnectPtr", "virConnectPtr"), - 'const virConnectPtr': ('O', "virConnect", "virConnectPtr", "virConnectPtr"), 'virConnect *': ('O', "virConnect", "virConnectPtr", "virConnectPtr"), 'const virConnect *': ('O', "virConnect", "virConnectPtr", "virConnectPtr"), 'virNodeDevicePtr': ('O', "virNodeDevice", "virNodeDevicePtr", "virNodeDevicePtr"), - 'const virNodeDevicePtr': ('O', "virNodeDevice", "virNodeDevicePtr", "virNodeDevicePtr"), 'virNodeDevice *': ('O', "virNodeDevice", "virNodeDevicePtr", "virNodeDevicePtr"), 'const virNodeDevice *': ('O', "virNodeDevice", "virNodeDevicePtr", "virNodeDevicePtr"), 'virSecretPtr': ('O', "virSecret", "virSecretPtr", "virSecretPtr"), - 'const virSecretPtr': ('O', "virSecret", "virSecretPtr", "virSecretPtr"), 'virSecret *': ('O', "virSecret", "virSecretPtr", "virSecretPtr"), 'const virSecret *': ('O', "virSecret", "virSecretPtr", "virSecretPtr"), 'virNWFilterPtr': ('O', "virNWFilter", "virNWFilterPtr", "virNWFilterPtr"), - 'const virNWFilterPtr': ('O', "virNWFilter", "virNWFilterPtr", "virNWFilterPtr"), 'virNWFilter *': ('O', "virNWFilter", "virNWFilterPtr", "virNWFilterPtr"), 'const virNWFilter *': ('O', "virNWFilter", "virNWFilterPtr", "virNWFilterPtr"), 'virStreamPtr': ('O', "virStream", "virStreamPtr", "virStreamPtr"), - 'const virStreamPtr': ('O', "virStream", "virStreamPtr", "virStreamPtr"), 'virStream *': ('O', "virStream", "virStreamPtr", "virStreamPtr"), 'const virStream *': ('O', "virStream", "virStreamPtr", "virStreamPtr"), 'virDomainSnapshotPtr': ('O', "virDomainSnapshot", "virDomainSnapshotPtr", "virDomainSnapshotPtr"), - 'const virDomainSnapshotPtr': ('O', "virDomainSnapshot", "virDomainSnapshotPtr", "virDomainSnapshotPtr"), 'virDomainSnapshot *': ('O', "virDomainSnapshot", "virDomainSnapshotPtr", "virDomainSnapshotPtr"), 'const virDomainSnapshot *': ('O', "virDomainSnapshot", "virDomainSnapshotPtr", "virDomainSnapshotPtr"), } diff --git a/python/libvirt-override.c b/python/libvirt-override.c index e659bae..4800d1d 100644 --- a/python/libvirt-override.c +++ b/python/libvirt-override.c @@ -73,7 +73,7 @@ static char *py_str(PyObject *obj) * Python dictionary for return to the user. Return NULL on failure, * after raising a python exception. */ static PyObject * -getPyVirTypedParameter(const virTypedParameterPtr params, int nparams) +getPyVirTypedParameter(const virTypedParameter *params, int nparams) { PyObject *key, *val, *info; size_t i; @@ -149,7 +149,7 @@ cleanup: * raising a python exception. */ static virTypedParameterPtr ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) setPyVirTypedParameter(PyObject *info, - const virTypedParameterPtr params, int nparams) + const virTypedParameter *params, int nparams) { PyObject *key, *value; #if PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION <= 4 -- 1.8.3.1

On Tue, Oct 08, 2013 at 11:25:05AM -0600, Eric Blake wrote:
'const fooPtr' is the same as 'foo * const' (the pointer won't change, but it's contents can). But in general, if an interface is trying to be const-correct, it should be using 'const foo *' (the pointer is to data that can't be changed).
Fix up offenders in the python bindings.
* python/generator.py (py_types): Drop useless conversions. * python/libvirt-override.c (getPyVirTypedParameter) (setPyVirTypedParameter): Use intended type.
Signed-off-by: Eric Blake <eblake@redhat.com> --- python/generator.py | 11 ----------- python/libvirt-override.c | 4 ++-- 2 files changed, 2 insertions(+), 13 deletions(-)
ACK Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|

virDomainChrGetDomainPtrs() required 4 levels of pointers (taking a parameter that will be used as an output variable to return the address of another variable that contains an array of pointers). This is rather complex to reason about, especially when outside of the domain_conf file, no other caller should be modifying the resulting array of pointers directly. Changing the public signature gives something is easier to reason with, and actually make const-correct; which is important as it was the only function that was blocking virDomainDeviceDefCopy from treating its source as const. * src/conf/domain_conf.h (virDomainChrGetDomainPtrs): Use simpler types, and make const-correct for external users. * src/conf/domain_conf.c (virDomainChrGetDomainPtrs): Split... (virDomainChrGetDomainPtrsInternal): ...into an internal version that lets us modify terms, vs. external form that is read-only. (virDomainDeviceDefPostParseInternal, virDomainChrFind) (virDomainChrInsert): Adjust callers. * src/qemu/qemu_command.c (qemuGetNextChrDevIndex): Adjust caller. (qemuDomainDeviceAliasIndex): Make const-correct. Signed-off-by: Eric Blake <eblake@redhat.com> --- src/conf/domain_conf.c | 70 ++++++++++++++++++++++++++++++++++--------------- src/conf/domain_conf.h | 9 ++++--- src/qemu/qemu_command.c | 14 +++++----- 3 files changed, 61 insertions(+), 32 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 0d63845..8e1e644 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -2807,10 +2807,10 @@ virDomainDeviceDefPostParseInternal(virDomainDeviceDefPtr dev, { if (dev->type == VIR_DOMAIN_DEVICE_CHR) { virDomainChrDefPtr chr = dev->data.chr; - virDomainChrDefPtr **arrPtr; - size_t i, *cnt; + const virDomainChrDef **arrPtr; + size_t i, cnt; - virDomainChrGetDomainPtrs(def, chr, &arrPtr, &cnt); + virDomainChrGetDomainPtrs(def, chr->deviceType, &arrPtr, &cnt); if (chr->deviceType == VIR_DOMAIN_CHR_DEVICE_TYPE_CONSOLE && chr->targetType == VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_NONE) @@ -2822,9 +2822,9 @@ virDomainDeviceDefPostParseInternal(virDomainDeviceDefPtr dev, chr->deviceType == VIR_DOMAIN_CHR_DEVICE_TYPE_CONSOLE)) { int maxport = -1; - for (i = 0; i < *cnt; i++) { - if ((*arrPtr)[i]->target.port > maxport) - maxport = (*arrPtr)[i]->target.port; + for (i = 0; i < cnt; i++) { + if (arrPtr[i]->target.port > maxport) + maxport = arrPtr[i]->target.port; } chr->target.port = maxport + 1; @@ -2834,8 +2834,8 @@ virDomainDeviceDefPostParseInternal(virDomainDeviceDefPtr dev, chr->info.addr.vioserial.port == 0) { int maxport = 0; - for (i = 0; i < *cnt; i++) { - virDomainChrDefPtr thischr = (*arrPtr)[i]; + for (i = 0; i < cnt; i++) { + const virDomainChrDef *thischr = arrPtr[i]; if (thischr->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_VIRTIO_SERIAL && thischr->info.addr.vioserial.controller == chr->info.addr.vioserial.controller && thischr->info.addr.vioserial.bus == chr->info.addr.vioserial.bus && @@ -10278,26 +10278,31 @@ virDomainChrDefPtr virDomainChrFind(virDomainDefPtr def, virDomainChrDefPtr target) { - virDomainChrDefPtr chr, **arrPtr; - size_t i, *cntPtr; + virDomainChrDefPtr chr; + const virDomainChrDef **arrPtr; + size_t i, cnt; - virDomainChrGetDomainPtrs(def, target, &arrPtr, &cntPtr); + virDomainChrGetDomainPtrs(def, target->deviceType, &arrPtr, &cnt); - for (i = 0; i < *cntPtr; i++) { - chr = (*arrPtr)[i]; + for (i = 0; i < cnt; i++) { + /* Cast away const */ + chr = (virDomainChrDefPtr) arrPtr[i]; if (virDomainChrEquals(chr, target)) return chr; } return NULL; } -void -virDomainChrGetDomainPtrs(virDomainDefPtr vmdef, - virDomainChrDefPtr chr, - virDomainChrDefPtr ***arrPtr, - size_t **cntPtr) + +/* Return the address within vmdef to be modified when working with a + * chrdefptr of the given type. */ +static void +virDomainChrGetDomainPtrsInternal(virDomainDefPtr vmdef, + enum virDomainChrDeviceType type, + virDomainChrDefPtr ***arrPtr, + size_t **cntPtr) { - switch ((enum virDomainChrDeviceType) chr->deviceType) { + switch (type) { case VIR_DOMAIN_CHR_DEVICE_TYPE_PARALLEL: *arrPtr = &vmdef->parallels; *cntPtr = &vmdef->nparallels; @@ -10325,6 +10330,29 @@ virDomainChrGetDomainPtrs(virDomainDefPtr vmdef, } } +/* Return the array within vmdef that can contain a chrdefptr of the + * given type. */ +void +virDomainChrGetDomainPtrs(const virDomainDef *vmdef, + enum virDomainChrDeviceType type, + const virDomainChrDef ***arrPtr, + size_t *cntPtr) +{ + virDomainChrDef ***arrVar; + size_t *cntVar; + + /* Cast away const; we add it back in the final assignment. */ + virDomainChrGetDomainPtrsInternal((virDomainDefPtr) vmdef, type, + &arrVar, &cntVar); + if (arrVar) { + *arrPtr = (const virDomainChrDef **) *arrVar; + *cntPtr = *cntVar; + } else { + *arrPtr = NULL; + *cntPtr = 0; + } +} + int virDomainChrInsert(virDomainDefPtr vmdef, virDomainChrDefPtr chr) @@ -10332,7 +10360,7 @@ virDomainChrInsert(virDomainDefPtr vmdef, virDomainChrDefPtr **arrPtr; size_t *cntPtr; - virDomainChrGetDomainPtrs(vmdef, chr, &arrPtr, &cntPtr); + virDomainChrGetDomainPtrsInternal(vmdef, chr->deviceType, &arrPtr, &cntPtr); return VIR_APPEND_ELEMENT(*arrPtr, *cntPtr, chr); } @@ -10344,7 +10372,7 @@ virDomainChrRemove(virDomainDefPtr vmdef, virDomainChrDefPtr ret, **arrPtr; size_t i, *cntPtr; - virDomainChrGetDomainPtrs(vmdef, chr, &arrPtr, &cntPtr); + virDomainChrGetDomainPtrsInternal(vmdef, chr->deviceType, &arrPtr, &cntPtr); for (i = 0; i < *cntPtr; i++) { ret = (*arrPtr)[i]; diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index f20a916..779a429 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -2439,10 +2439,11 @@ virDomainLeaseRemove(virDomainDefPtr def, virDomainLeaseDefPtr lease); void -virDomainChrGetDomainPtrs(virDomainDefPtr vmdef, - virDomainChrDefPtr chr, - virDomainChrDefPtr ***arrPtr, - size_t **cntPtr); +virDomainChrGetDomainPtrs(const virDomainDef *vmdef, + enum virDomainChrDeviceType type, + const virDomainChrDef ***arrPtr, + size_t *cntPtr) + ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(3) ATTRIBUTE_NONNULL(4); virDomainChrDefPtr virDomainChrFind(virDomainDefPtr def, virDomainChrDefPtr target); diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 52dc295..adb065e 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -584,7 +584,7 @@ cleanup: return ret; } -static int qemuDomainDeviceAliasIndex(virDomainDeviceInfoPtr info, +static int qemuDomainDeviceAliasIndex(const virDomainDeviceInfo *info, const char *prefix) { int idx; @@ -911,8 +911,8 @@ qemuGetNextChrDevIndex(virDomainDefPtr def, virDomainChrDefPtr chr, const char *prefix) { - virDomainChrDefPtr **arrPtr; - size_t *cntPtr; + const virDomainChrDef **arrPtr; + size_t cnt; size_t i; ssize_t idx = 0; const char *prefix2 = NULL; @@ -920,13 +920,13 @@ qemuGetNextChrDevIndex(virDomainDefPtr def, if (chr->deviceType == VIR_DOMAIN_CHR_DEVICE_TYPE_CONSOLE) prefix2 = "serial"; - virDomainChrGetDomainPtrs(def, chr, &arrPtr, &cntPtr); + virDomainChrGetDomainPtrs(def, chr->deviceType, &arrPtr, &cnt); - for (i = 0; i < *cntPtr; i++) { + for (i = 0; i < cnt; i++) { ssize_t thisidx; - if (((thisidx = qemuDomainDeviceAliasIndex(&(*arrPtr)[i]->info, prefix)) < 0) && + if (((thisidx = qemuDomainDeviceAliasIndex(&arrPtr[i]->info, prefix)) < 0) && (prefix2 && - (thisidx = qemuDomainDeviceAliasIndex(&(*arrPtr)[i]->info, prefix2)) < 0)) { + (thisidx = qemuDomainDeviceAliasIndex(&arrPtr[i]->info, prefix2)) < 0)) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("Unable to determine device index for character device")); return -1; -- 1.8.3.1

On Tue, Oct 08, 2013 at 11:25:06AM -0600, Eric Blake wrote:
virDomainChrGetDomainPtrs() required 4 levels of pointers (taking a parameter that will be used as an output variable to return the address of another variable that contains an array of pointers). This is rather complex to reason about, especially when outside of the domain_conf file, no other caller should be modifying the resulting array of pointers directly. Changing the public signature gives something is easier to reason with, and actually make const-correct; which is important as it was the only function that was blocking virDomainDeviceDefCopy from treating its source as const.
* src/conf/domain_conf.h (virDomainChrGetDomainPtrs): Use simpler types, and make const-correct for external users. * src/conf/domain_conf.c (virDomainChrGetDomainPtrs): Split... (virDomainChrGetDomainPtrsInternal): ...into an internal version that lets us modify terms, vs. external form that is read-only. (virDomainDeviceDefPostParseInternal, virDomainChrFind) (virDomainChrInsert): Adjust callers. * src/qemu/qemu_command.c (qemuGetNextChrDevIndex): Adjust caller. (qemuDomainDeviceAliasIndex): Make const-correct.
Signed-off-by: Eric Blake <eblake@redhat.com> --- src/conf/domain_conf.c | 70 ++++++++++++++++++++++++++++++++++--------------- src/conf/domain_conf.h | 9 ++++--- src/qemu/qemu_command.c | 14 +++++----- 3 files changed, 61 insertions(+), 32 deletions(-)
ACK Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|

'const fooPtr' is the same as 'foo * const' (the pointer won't change, but it's contents can). But in general, if an interface is trying to be const-correct, it should be using 'const foo *' (the pointer is to data that can't be changed). Fix up offenders in src/conf/domain_conf, and their fallout. Several things to note: virObjectLock() requires a non-const argument; if this were C++, we could treat the locking field as 'mutable' and allow locking an otherwise 'const' object, but that is a more invasive change, so I instead dropped attempts to be const-correct on domain lookup. virXMLPropString and friends require a non-const xmlNodePtr - this is because libxml2 is not a const-correct library. We could make the src/util/virxml wrappers cast away const, but I figured it was easier to not try to mark xmlNodePtr as const. Finally, virDomainDeviceDefCopy was a rather hard conversion - it calls virDomainDeviceDefPostParse, which in turn in the xen driver was actually modifying the domain outside of the current device being visited. We should not be adding a device on the first per-device callback, but waiting until after all per-device callbacks are complete. * src/conf/domain_conf.h (virDomainObjListFindByID) (virDomainObjListFindByUUID, virDomainObjListFindByName) (virDomainObjAssignDef, virDomainObjListAdd): Drop attempt at const. (virDomainDeviceDefCopy): Use intended type. (virDomainDeviceDefParse, virDomainDeviceDefPostParseCallback) (virDomainVideoDefaultType, virDomainVideoDefaultRAM) (virDomainChrGetDomainPtrs): Make const-correct. * src/conf/domain_conf.c (virDomainObjListFindByID) (virDomainObjListFindByUUID, virDomainObjListFindByName) (virDomainDeviceDefCopy, virDomainObjListAdd) (virDomainObjAssignDef, virDomainHostdevSubsysUsbDefParseXML) (virDomainHostdevSubsysPciOrigStatesDefParseXML) (virDomainHostdevSubsysPciDefParseXML) (virDomainHostdevSubsysScsiDefParseXML) (virDomainControllerModelTypeFromString) (virDomainTPMDefParseXML, virDomainTimerDefParseXML) (virDomainSoundCodecDefParseXML, virDomainSoundDefParseXML) (virDomainWatchdogDefParseXML, virDomainRNGDefParseXML) (virDomainMemballoonDefParseXML, virDomainNVRAMDefParseXML) (virSysinfoParseXML, virDomainVideoAccelDefParseXML) (virDomainVideoDefParseXML, virDomainHostdevDefParseXML) (virDomainRedirdevDefParseXML) (virDomainRedirFilterUsbDevDefParseXML) (virDomainRedirFilterDefParseXML, virDomainIdMapEntrySort) (virDomainIdmapDefParseXML, virDomainVcpuPinDefParseXML) (virDiskNameToBusDeviceIndex, virDomainDeviceDefCopy) (virDomainVideoDefaultType, virDomainHostdevAssignAddress) (virDomainDeviceDefPostParseInternal, virDomainDeviceDefPostParse) (virDomainChrGetDomainPtrs, virDomainControllerSCSINextUnit) (virDomainSCSIDriveAddressIsUsed) (virDomainDriveAddressIsUsedByDisk) (virDomainDriveAddressIsUsedByHostdev): Fix fallout. * src/openvz/openvz_driver.c (openvzDomainDeviceDefPostParse): Likewise. * src/libxl/libxl_domain.c (libxlDomainDeviceDefPostParse): Likewise. * src/qemu/qemu_domain.c (qemuDomainDeviceDefPostParse) (qemuDomainDefaultNetModel): Likewise. * src/lxc/lxc_domain.c (virLXCDomainDeviceDefPostParse): Likewise. * src/uml/uml_driver.c (umlDomainDeviceDefPostParse): Likewise. * src/xen/xen_driver.c (xenDomainDeviceDefPostParse): Split... (xenDomainDefPostParse): ...since per-device callback is not the time to be adding a device. Signed-off-by: Eric Blake <eblake@redhat.com> --- src/conf/domain_conf.c | 94 ++++++++++++++++++++++++---------------------- src/conf/domain_conf.h | 24 +++++++----- src/libxl/libxl_domain.c | 2 +- src/lxc/lxc_domain.c | 4 +- src/openvz/openvz_driver.c | 2 +- src/qemu/qemu_domain.c | 5 ++- src/uml/uml_driver.c | 6 +-- src/xen/xen_driver.c | 12 +++++- 8 files changed, 84 insertions(+), 65 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 8e1e644..c06c9d0 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -990,7 +990,7 @@ static int virDomainObjListSearchID(const void *payload, return want; } -virDomainObjPtr virDomainObjListFindByID(const virDomainObjListPtr doms, +virDomainObjPtr virDomainObjListFindByID(virDomainObjListPtr doms, int id) { virDomainObjPtr obj; @@ -1003,7 +1003,7 @@ virDomainObjPtr virDomainObjListFindByID(const virDomainObjListPtr doms, } -virDomainObjPtr virDomainObjListFindByUUID(const virDomainObjListPtr doms, +virDomainObjPtr virDomainObjListFindByUUID(virDomainObjListPtr doms, const unsigned char *uuid) { char uuidstr[VIR_UUID_STRING_BUFLEN]; @@ -1033,7 +1033,7 @@ static int virDomainObjListSearchName(const void *payload, return want; } -virDomainObjPtr virDomainObjListFindByName(const virDomainObjListPtr doms, +virDomainObjPtr virDomainObjListFindByName(virDomainObjListPtr doms, const char *name) { virDomainObjPtr obj; @@ -2091,7 +2091,7 @@ virDomainDefPtr virDomainDefNew(const char *name, void virDomainObjAssignDef(virDomainObjPtr domain, - const virDomainDefPtr def, + virDomainDefPtr def, bool live, virDomainDefPtr *oldDef) { @@ -2138,7 +2138,7 @@ void virDomainObjAssignDef(virDomainObjPtr domain, */ static virDomainObjPtr virDomainObjListAddLocked(virDomainObjListPtr doms, - const virDomainDefPtr def, + virDomainDefPtr def, virDomainXMLOptionPtr xmlopt, unsigned int flags, virDomainDefPtr *oldDef) @@ -2209,7 +2209,7 @@ error: virDomainObjPtr virDomainObjListAdd(virDomainObjListPtr doms, - const virDomainDefPtr def, + virDomainDefPtr def, virDomainXMLOptionPtr xmlopt, unsigned int flags, virDomainDefPtr *oldDef) @@ -2802,7 +2802,7 @@ virDomainDefPostParseInternal(virDomainDefPtr def, static int virDomainDeviceDefPostParseInternal(virDomainDeviceDefPtr dev, - virDomainDefPtr def, + const virDomainDef *def, virCapsPtr caps ATTRIBUTE_UNUSED) { if (dev->type == VIR_DOMAIN_DEVICE_CHR) { @@ -2852,7 +2852,7 @@ virDomainDeviceDefPostParseInternal(virDomainDeviceDefPtr dev, static int virDomainDeviceDefPostParse(virDomainDeviceDefPtr dev, - virDomainDefPtr def, + const virDomainDef *def, virCapsPtr caps, virDomainXMLOptionPtr xmlopt) { @@ -3548,7 +3548,7 @@ virDomainParseLegacyDeviceAddress(char *devaddr, } static int -virDomainHostdevSubsysUsbDefParseXML(const xmlNodePtr node, +virDomainHostdevSubsysUsbDefParseXML(xmlNodePtr node, virDomainHostdevDefPtr def) { @@ -3698,7 +3698,7 @@ out: * </origstates> */ static int -virDomainHostdevSubsysPciOrigStatesDefParseXML(const xmlNodePtr node, +virDomainHostdevSubsysPciOrigStatesDefParseXML(xmlNodePtr node, virDomainHostdevOrigStatesPtr def) { xmlNodePtr cur; @@ -3726,7 +3726,7 @@ virDomainHostdevSubsysPciOrigStatesDefParseXML(const xmlNodePtr node, } static int -virDomainHostdevSubsysPciDefParseXML(const xmlNodePtr node, +virDomainHostdevSubsysPciDefParseXML(xmlNodePtr node, virDomainHostdevDefPtr def, unsigned int flags) { @@ -3777,7 +3777,7 @@ out: } static int -virDomainHostdevSubsysScsiDefParseXML(const xmlNodePtr node, +virDomainHostdevSubsysScsiDefParseXML(xmlNodePtr node, virDomainHostdevDefPtr def) { int ret = -1; @@ -3868,7 +3868,7 @@ cleanup: * taken by a disk or not. */ static bool -virDomainDriveAddressIsUsedByDisk(virDomainDefPtr def, +virDomainDriveAddressIsUsedByDisk(const virDomainDef *def, enum virDomainDiskBus type, unsigned int controller, unsigned int unit) @@ -3897,7 +3897,7 @@ virDomainDriveAddressIsUsedByDisk(virDomainDefPtr def, * taken by a host device or not. */ static bool -virDomainDriveAddressIsUsedByHostdev(virDomainDefPtr def, +virDomainDriveAddressIsUsedByHostdev(const virDomainDef *def, enum virDomainHostdevSubsysType type, unsigned int controller, unsigned int unit) @@ -3922,7 +3922,7 @@ virDomainDriveAddressIsUsedByHostdev(virDomainDefPtr def, } static bool -virDomainSCSIDriveAddressIsUsed(virDomainDefPtr def, +virDomainSCSIDriveAddressIsUsed(const virDomainDef *def, unsigned int controller, unsigned int unit) { @@ -3943,7 +3943,7 @@ virDomainSCSIDriveAddressIsUsed(virDomainDefPtr def, /* Find out the next usable "unit" of a specific controller */ static int -virDomainControllerSCSINextUnit(virDomainDefPtr def, +virDomainControllerSCSINextUnit(const virDomainDef *def, unsigned int max_unit, unsigned int controller) { @@ -3962,7 +3962,7 @@ virDomainControllerSCSINextUnit(virDomainDefPtr def, static int virDomainHostdevAssignAddress(virDomainXMLOptionPtr xmlopt, - virDomainDefPtr def, + const virDomainDef *def, virDomainHostdevDefPtr hostdev) { int next_unit = 0; @@ -5694,7 +5694,7 @@ cleanup: static int -virDomainControllerModelTypeFromString(const virDomainControllerDefPtr def, +virDomainControllerModelTypeFromString(const virDomainControllerDef *def, const char *model) { if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_SCSI) @@ -7381,7 +7381,7 @@ error: * */ static virDomainTPMDefPtr -virDomainTPMDefParseXML(const xmlNodePtr node, +virDomainTPMDefParseXML(xmlNodePtr node, xmlXPathContextPtr ctxt, unsigned int flags) { @@ -7606,7 +7606,7 @@ error: /* Parse the XML definition for a clock timer */ static virDomainTimerDefPtr -virDomainTimerDefParseXML(const xmlNodePtr node, +virDomainTimerDefParseXML(xmlNodePtr node, xmlXPathContextPtr ctxt) { char *name = NULL; @@ -8406,7 +8406,7 @@ error: static virDomainSoundCodecDefPtr -virDomainSoundCodecDefParseXML(const xmlNodePtr node) +virDomainSoundCodecDefParseXML(xmlNodePtr node) { char *type; virDomainSoundCodecDefPtr def; @@ -8434,7 +8434,7 @@ error: static virDomainSoundDefPtr -virDomainSoundDefParseXML(const xmlNodePtr node, +virDomainSoundDefParseXML(xmlNodePtr node, xmlXPathContextPtr ctxt, unsigned int flags) { @@ -8503,7 +8503,7 @@ error: static virDomainWatchdogDefPtr -virDomainWatchdogDefParseXML(const xmlNodePtr node, +virDomainWatchdogDefParseXML(xmlNodePtr node, unsigned int flags) { @@ -8556,7 +8556,7 @@ error: static virDomainRNGDefPtr -virDomainRNGDefParseXML(const xmlNodePtr node, +virDomainRNGDefParseXML(xmlNodePtr node, xmlXPathContextPtr ctxt, unsigned int flags) { @@ -8677,7 +8677,7 @@ error: static virDomainMemballoonDefPtr -virDomainMemballoonDefParseXML(const xmlNodePtr node, +virDomainMemballoonDefParseXML(xmlNodePtr node, xmlXPathContextPtr ctxt, unsigned int flags) { @@ -8724,7 +8724,7 @@ error: } static virDomainNVRAMDefPtr -virDomainNVRAMDefParseXML(const xmlNodePtr node, +virDomainNVRAMDefParseXML(xmlNodePtr node, unsigned int flags) { virDomainNVRAMDefPtr def; @@ -8743,7 +8743,7 @@ error: } static virSysinfoDefPtr -virSysinfoParseXML(const xmlNodePtr node, +virSysinfoParseXML(xmlNodePtr node, xmlXPathContextPtr ctxt, unsigned char *domUUID, bool uuid_generated) @@ -8860,7 +8860,7 @@ error: } int -virDomainVideoDefaultRAM(virDomainDefPtr def, +virDomainVideoDefaultRAM(const virDomainDef *def, int type) { switch (type) { @@ -8891,7 +8891,7 @@ virDomainVideoDefaultRAM(virDomainDefPtr def, int -virDomainVideoDefaultType(virDomainDefPtr def) +virDomainVideoDefaultType(const virDomainDef *def) { switch (def->virtType) { case VIR_DOMAIN_VIRT_TEST: @@ -8920,7 +8920,8 @@ virDomainVideoDefaultType(virDomainDefPtr def) } static virDomainVideoAccelDefPtr -virDomainVideoAccelDefParseXML(const xmlNodePtr node) { +virDomainVideoAccelDefParseXML(xmlNodePtr node) +{ xmlNodePtr cur; virDomainVideoAccelDefPtr def; char *support3d = NULL; @@ -8964,8 +8965,8 @@ virDomainVideoAccelDefParseXML(const xmlNodePtr node) { } static virDomainVideoDefPtr -virDomainVideoDefParseXML(const xmlNodePtr node, - virDomainDefPtr dom, +virDomainVideoDefParseXML(xmlNodePtr node, + const virDomainDef *dom, unsigned int flags) { virDomainVideoDefPtr def; @@ -9071,8 +9072,8 @@ error: static virDomainHostdevDefPtr virDomainHostdevDefParseXML(virDomainXMLOptionPtr xmlopt, - virDomainDefPtr vmdef, - const xmlNodePtr node, + const virDomainDef *vmdef, + xmlNodePtr node, xmlXPathContextPtr ctxt, virHashTablePtr bootHash, unsigned int flags) @@ -9162,7 +9163,7 @@ error: static virDomainRedirdevDefPtr -virDomainRedirdevDefParseXML(const xmlNodePtr node, +virDomainRedirdevDefParseXML(xmlNodePtr node, virHashTablePtr bootHash, unsigned int flags) { @@ -9299,7 +9300,7 @@ cleanup: } static virDomainRedirFilterUsbDevDefPtr -virDomainRedirFilterUsbDevDefParseXML(const xmlNodePtr node) +virDomainRedirFilterUsbDevDefParseXML(xmlNodePtr node) { char *class; char *vendor = NULL, *product = NULL; @@ -9390,7 +9391,7 @@ error: } static virDomainRedirFilterDefPtr -virDomainRedirFilterDefParseXML(const xmlNodePtr node, +virDomainRedirFilterDefParseXML(xmlNodePtr node, xmlXPathContextPtr ctxt) { int n; @@ -9477,7 +9478,7 @@ virDomainPMStateParseXML(xmlXPathContextPtr ctxt, virDomainDeviceDefPtr virDomainDeviceDefParse(const char *xmlStr, - virDomainDefPtr def, + const virDomainDef *def, virCapsPtr caps, virDomainXMLOptionPtr xmlopt, unsigned int flags) @@ -10330,6 +10331,7 @@ virDomainChrGetDomainPtrsInternal(virDomainDefPtr vmdef, } } + /* Return the array within vmdef that can contain a chrdefptr of the * given type. */ void @@ -10353,6 +10355,7 @@ virDomainChrGetDomainPtrs(const virDomainDef *vmdef, } } + int virDomainChrInsert(virDomainDefPtr vmdef, virDomainChrDefPtr chr) @@ -10531,8 +10534,8 @@ cleanup: static int virDomainIdMapEntrySort(const void *a, const void *b) { - const virDomainIdMapEntryPtr entrya = (const virDomainIdMapEntryPtr) a; - const virDomainIdMapEntryPtr entryb = (const virDomainIdMapEntryPtr) b; + const virDomainIdMapEntry *entrya = a; + const virDomainIdMapEntry *entryb = b; if (entrya->start > entryb->start) return 1; @@ -10551,7 +10554,7 @@ static int virDomainIdMapEntrySort(const void *a, const void *b) */ static virDomainIdMapEntryPtr virDomainIdmapDefParseXML(xmlXPathContextPtr ctxt, - const xmlNodePtr *node, + xmlNodePtr *node, size_t num) { size_t i; @@ -10602,7 +10605,7 @@ cleanup: * have to check the returned cpuid for validity. */ static virDomainVcpuPinDefPtr -virDomainVcpuPinDefParseXML(const xmlNodePtr node, +virDomainVcpuPinDefParseXML(xmlNodePtr node, xmlXPathContextPtr ctxt, int maxvcpus, int emulator) @@ -17435,9 +17438,10 @@ char * @return 0 on success, -1 on failure */ int -virDiskNameToBusDeviceIndex(const virDomainDiskDefPtr disk, +virDiskNameToBusDeviceIndex(virDomainDiskDefPtr disk, int *busIdx, - int *devIdx) { + int *devIdx) +{ int idx = virDiskNameToIndex(disk->dst); if (idx < 0) @@ -18243,7 +18247,7 @@ virDomainNetFind(virDomainDefPtr def, const char *device) */ virDomainDeviceDefPtr virDomainDeviceDefCopy(virDomainDeviceDefPtr src, - const virDomainDefPtr def, + const virDomainDef *def, virCapsPtr caps, virDomainXMLOptionPtr xmlopt) { diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 779a429..01c0116 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -2130,11 +2130,15 @@ typedef void (*virDomainXMLPrivateDataFreeFunc)(void *); typedef int (*virDomainXMLPrivateDataFormatFunc)(virBufferPtr, void *); typedef int (*virDomainXMLPrivateDataParseFunc)(xmlXPathContextPtr, void *); +/* Called once after everything else has been parsed, for adjusting + * overall domain defaults. */ typedef int (*virDomainDefPostParseCallback)(virDomainDefPtr def, virCapsPtr caps, void *opaque); +/* Called once per device, for adjusting per-device settings while + * leaving the overall domain otherwise unchanged. */ typedef int (*virDomainDeviceDefPostParseCallback)(virDomainDeviceDefPtr dev, - virDomainDefPtr def, + const virDomainDef *def, virCapsPtr caps, void *opaque); @@ -2189,11 +2193,11 @@ virDomainObjPtr virDomainObjNew(virDomainXMLOptionPtr caps) virDomainObjListPtr virDomainObjListNew(void); -virDomainObjPtr virDomainObjListFindByID(const virDomainObjListPtr doms, +virDomainObjPtr virDomainObjListFindByID(virDomainObjListPtr doms, int id); -virDomainObjPtr virDomainObjListFindByUUID(const virDomainObjListPtr doms, +virDomainObjPtr virDomainObjListFindByUUID(virDomainObjListPtr doms, const unsigned char *uuid); -virDomainObjPtr virDomainObjListFindByName(const virDomainObjListPtr doms, +virDomainObjPtr virDomainObjListFindByName(virDomainObjListPtr doms, const char *name); bool virDomainObjTaint(virDomainObjPtr obj, @@ -2234,7 +2238,7 @@ void virDomainRedirdevDefFree(virDomainRedirdevDefPtr def); void virDomainRedirFilterDefFree(virDomainRedirFilterDefPtr def); void virDomainDeviceDefFree(virDomainDeviceDefPtr def); virDomainDeviceDefPtr virDomainDeviceDefCopy(virDomainDeviceDefPtr src, - const virDomainDefPtr def, + const virDomainDef *def, virCapsPtr caps, virDomainXMLOptionPtr xmlopt); int virDomainDeviceAddressIsValid(virDomainDeviceInfoPtr info, @@ -2269,12 +2273,12 @@ enum { VIR_DOMAIN_OBJ_LIST_ADD_CHECK_LIVE = (1 << 1), }; virDomainObjPtr virDomainObjListAdd(virDomainObjListPtr doms, - const virDomainDefPtr def, + virDomainDefPtr def, virDomainXMLOptionPtr xmlopt, unsigned int flags, virDomainDefPtr *oldDef); void virDomainObjAssignDef(virDomainObjPtr domain, - const virDomainDefPtr def, + virDomainDefPtr def, bool live, virDomainDefPtr *oldDef); int virDomainObjSetDefTransient(virCapsPtr caps, @@ -2307,7 +2311,7 @@ void virDomainObjListRemoveLocked(virDomainObjListPtr doms, virDomainObjPtr dom); virDomainDeviceDefPtr virDomainDeviceDefParse(const char *xmlStr, - virDomainDefPtr def, + const virDomainDef *def, virCapsPtr caps, virDomainXMLOptionPtr xmlopt, unsigned int flags); @@ -2494,8 +2498,8 @@ int virDiskNameToBusDeviceIndex(virDomainDiskDefPtr disk, virDomainFSDefPtr virDomainGetRootFilesystem(virDomainDefPtr def); int virDomainFSIndexByName(virDomainDefPtr def, const char *name); -int virDomainVideoDefaultType(virDomainDefPtr def); -int virDomainVideoDefaultRAM(virDomainDefPtr def, int type); +int virDomainVideoDefaultType(const virDomainDef *def); +int virDomainVideoDefaultRAM(const virDomainDef *def, int type); int virDomainObjListNumOfDomains(virDomainObjListPtr doms, bool active, diff --git a/src/libxl/libxl_domain.c b/src/libxl/libxl_domain.c index 0abf80b..68009db 100644 --- a/src/libxl/libxl_domain.c +++ b/src/libxl/libxl_domain.c @@ -383,7 +383,7 @@ virDomainXMLPrivateDataCallbacks libxlDomainXMLPrivateDataCallbacks = { static int libxlDomainDeviceDefPostParse(virDomainDeviceDefPtr dev, - virDomainDefPtr def, + const virDomainDef *def, virCapsPtr caps ATTRIBUTE_UNUSED, void *opaque ATTRIBUTE_UNUSED) { diff --git a/src/lxc/lxc_domain.c b/src/lxc/lxc_domain.c index 31f6e84..83c5a4e 100644 --- a/src/lxc/lxc_domain.c +++ b/src/lxc/lxc_domain.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010-2012 Red Hat, Inc. + * Copyright (C) 2010-2013 Red Hat, Inc. * Copyright IBM Corp. 2008 * * lxc_domain.h: LXC domain helpers @@ -98,7 +98,7 @@ virLXCDomainDefPostParse(virDomainDefPtr def, static int virLXCDomainDeviceDefPostParse(virDomainDeviceDefPtr dev, - virDomainDefPtr def ATTRIBUTE_UNUSED, + const virDomainDef *def ATTRIBUTE_UNUSED, virCapsPtr caps ATTRIBUTE_UNUSED, void *opaque ATTRIBUTE_UNUSED) { diff --git a/src/openvz/openvz_driver.c b/src/openvz/openvz_driver.c index d268647..df55568 100644 --- a/src/openvz/openvz_driver.c +++ b/src/openvz/openvz_driver.c @@ -102,7 +102,7 @@ openvzDomainDefPostParse(virDomainDefPtr def, static int openvzDomainDeviceDefPostParse(virDomainDeviceDefPtr dev, - virDomainDefPtr def ATTRIBUTE_UNUSED, + const virDomainDef *def ATTRIBUTE_UNUSED, virCapsPtr caps ATTRIBUTE_UNUSED, void *opaque ATTRIBUTE_UNUSED) { diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 968e323..ff5fddf 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -787,7 +787,8 @@ qemuDomainDefPostParse(virDomainDefPtr def, } static const char * -qemuDomainDefaultNetModel(virDomainDefPtr def) { +qemuDomainDefaultNetModel(const virDomainDef *def) +{ if (def->os.arch == VIR_ARCH_S390 || def->os.arch == VIR_ARCH_S390X) return "virtio"; @@ -806,7 +807,7 @@ qemuDomainDefaultNetModel(virDomainDefPtr def) { static int qemuDomainDeviceDefPostParse(virDomainDeviceDefPtr dev, - virDomainDefPtr def, + const virDomainDef *def, virCapsPtr caps ATTRIBUTE_UNUSED, void *opaque) { diff --git a/src/uml/uml_driver.c b/src/uml/uml_driver.c index eb02542..b9b977a 100644 --- a/src/uml/uml_driver.c +++ b/src/uml/uml_driver.c @@ -419,9 +419,9 @@ cleanup: static int umlDomainDeviceDefPostParse(virDomainDeviceDefPtr dev, - virDomainDefPtr def ATTRIBUTE_UNUSED, - virCapsPtr caps ATTRIBUTE_UNUSED, - void *opaque ATTRIBUTE_UNUSED) + const virDomainDef *def ATTRIBUTE_UNUSED, + virCapsPtr caps ATTRIBUTE_UNUSED, + void *opaque ATTRIBUTE_UNUSED) { if (dev->type == VIR_DOMAIN_DEVICE_CHR && dev->data.chr->deviceType == VIR_DOMAIN_CHR_DEVICE_TYPE_CONSOLE && diff --git a/src/xen/xen_driver.c b/src/xen/xen_driver.c index 40b98ee..9ba1b10 100644 --- a/src/xen/xen_driver.c +++ b/src/xen/xen_driver.c @@ -330,7 +330,7 @@ xenUnifiedXendProbe(void) static int xenDomainDeviceDefPostParse(virDomainDeviceDefPtr dev, - virDomainDefPtr def, + const virDomainDef *def, virCapsPtr caps ATTRIBUTE_UNUSED, void *opaque ATTRIBUTE_UNUSED) { @@ -340,6 +340,15 @@ xenDomainDeviceDefPostParse(virDomainDeviceDefPtr dev, STRNEQ(def->os.type, "hvm")) dev->data.chr->targetType = VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_XEN; + return 0; +} + + +static int +xenDomainDefPostParse(virDomainDefPtr def, + virCapsPtr caps ATTRIBUTE_UNUSED, + void *opaque ATTRIBUTE_UNUSED) +{ if (!def->memballoon) { virDomainMemballoonDefPtr memballoon; if (VIR_ALLOC(memballoon) < 0) @@ -356,6 +365,7 @@ xenDomainDeviceDefPostParse(virDomainDeviceDefPtr dev, virDomainDefParserConfig xenDomainDefParserConfig = { .macPrefix = { 0x00, 0x16, 0x3e }, .devicesPostParseCallback = xenDomainDeviceDefPostParse, + .domainPostParseCallback = xenDomainDefPostParse, }; -- 1.8.3.1

On Tue, Oct 08, 2013 at 11:25:07AM -0600, Eric Blake wrote:
'const fooPtr' is the same as 'foo * const' (the pointer won't change, but it's contents can). But in general, if an interface is trying to be const-correct, it should be using 'const foo *' (the pointer is to data that can't be changed).
Fix up offenders in src/conf/domain_conf, and their fallout.
Several things to note: virObjectLock() requires a non-const argument; if this were C++, we could treat the locking field as 'mutable' and allow locking an otherwise 'const' object, but that is a more invasive change, so I instead dropped attempts to be const-correct on domain lookup. virXMLPropString and friends require a non-const xmlNodePtr - this is because libxml2 is not a const-correct library. We could make the src/util/virxml wrappers cast away const, but I figured it was easier to not try to mark xmlNodePtr as const. Finally, virDomainDeviceDefCopy was a rather hard conversion - it calls virDomainDeviceDefPostParse, which in turn in the xen driver was actually modifying the domain outside of the current device being visited. We should not be adding a device on the first per-device callback, but waiting until after all per-device callbacks are complete.
* src/conf/domain_conf.h (virDomainObjListFindByID) (virDomainObjListFindByUUID, virDomainObjListFindByName) (virDomainObjAssignDef, virDomainObjListAdd): Drop attempt at const. (virDomainDeviceDefCopy): Use intended type. (virDomainDeviceDefParse, virDomainDeviceDefPostParseCallback) (virDomainVideoDefaultType, virDomainVideoDefaultRAM) (virDomainChrGetDomainPtrs): Make const-correct. * src/conf/domain_conf.c (virDomainObjListFindByID) (virDomainObjListFindByUUID, virDomainObjListFindByName) (virDomainDeviceDefCopy, virDomainObjListAdd) (virDomainObjAssignDef, virDomainHostdevSubsysUsbDefParseXML) (virDomainHostdevSubsysPciOrigStatesDefParseXML) (virDomainHostdevSubsysPciDefParseXML) (virDomainHostdevSubsysScsiDefParseXML) (virDomainControllerModelTypeFromString) (virDomainTPMDefParseXML, virDomainTimerDefParseXML) (virDomainSoundCodecDefParseXML, virDomainSoundDefParseXML) (virDomainWatchdogDefParseXML, virDomainRNGDefParseXML) (virDomainMemballoonDefParseXML, virDomainNVRAMDefParseXML) (virSysinfoParseXML, virDomainVideoAccelDefParseXML) (virDomainVideoDefParseXML, virDomainHostdevDefParseXML) (virDomainRedirdevDefParseXML) (virDomainRedirFilterUsbDevDefParseXML) (virDomainRedirFilterDefParseXML, virDomainIdMapEntrySort) (virDomainIdmapDefParseXML, virDomainVcpuPinDefParseXML) (virDiskNameToBusDeviceIndex, virDomainDeviceDefCopy) (virDomainVideoDefaultType, virDomainHostdevAssignAddress) (virDomainDeviceDefPostParseInternal, virDomainDeviceDefPostParse) (virDomainChrGetDomainPtrs, virDomainControllerSCSINextUnit) (virDomainSCSIDriveAddressIsUsed) (virDomainDriveAddressIsUsedByDisk) (virDomainDriveAddressIsUsedByHostdev): Fix fallout. * src/openvz/openvz_driver.c (openvzDomainDeviceDefPostParse): Likewise. * src/libxl/libxl_domain.c (libxlDomainDeviceDefPostParse): Likewise. * src/qemu/qemu_domain.c (qemuDomainDeviceDefPostParse) (qemuDomainDefaultNetModel): Likewise. * src/lxc/lxc_domain.c (virLXCDomainDeviceDefPostParse): Likewise. * src/uml/uml_driver.c (umlDomainDeviceDefPostParse): Likewise. * src/xen/xen_driver.c (xenDomainDeviceDefPostParse): Split... (xenDomainDefPostParse): ...since per-device callback is not the time to be adding a device.
Signed-off-by: Eric Blake <eblake@redhat.com> --- src/conf/domain_conf.c | 94 ++++++++++++++++++++++++---------------------- src/conf/domain_conf.h | 24 +++++++----- src/libxl/libxl_domain.c | 2 +- src/lxc/lxc_domain.c | 4 +- src/openvz/openvz_driver.c | 2 +- src/qemu/qemu_domain.c | 5 ++- src/uml/uml_driver.c | 6 +-- src/xen/xen_driver.c | 12 +++++- 8 files changed, 84 insertions(+), 65 deletions(-)
ACK Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|

'const fooPtr' is the same as 'foo * const' (the pointer won't change, but it's contents can). But in general, if an interface is trying to be const-correct, it should be using 'const foo *' (the pointer is to data that can't be changed). Fix up remaining offenders in src/conf, and their fallout. * src/conf/snapshot_conf.h (virDomainSnapshotAssignDef) (virDomainSnapshotFindByName): Drop attempt at const. * src/conf/interface_conf.h (virInterfaceObjIsActive) (virInterfaceDefFormat): Use intended type. (virInterfaceFindByMACString, virInterfaceFindByName) (virInterfaceAssignDef, virInterfaceRemove): Drop attempt at const. * src/conf/network_conf.h (virNetworkObjIsActive) (virNetworkDefFormat, virNetworkDefForwardIf) (virNetworkDefGetIpByIndex, virNetworkIpDefPrefix) (virNetworkIpDefNetmask): Use intended type. (virNetworkFindByUUID, virNetworkFindByName, virNetworkAssignDef) (virNetworkObjAssignDef, virNetworkRemoveInactive) (virNetworkBridgeInUse, virNetworkSetBridgeName) (virNetworkAllocateBridge): Drop attempt at const. * src/conf/netdev_vlan_conf.h (virNetDevVlanFormat): Make const-correct. * src/conf/node_device_conf.h (virNodeDeviceHasCap) (virNodeDeviceDefFormat): Use intended type. (virNodeDeviceFindByName, virNodeDeviceFindBySysfsPath) (virNodeDeviceAssignDef, virNodeDeviceObjRemove) (virNodeDeviceGetParentHost): Drop attempt at const. * src/conf/secret_conf.h (virSecretDefFormat): Use intended type. * src/conf/snapshot_conf.c (virDomainSnapshotAssignDef) (virDomainSnapshotFindByName): Fix fallout. * src/conf/interface_conf.c (virInterfaceBridgeDefFormat) (virInterfaceBondDefFormat, virInterfaceVlanDefFormat) (virInterfaceProtocolDefFormat, virInterfaceDefDevFormat) (virInterfaceDefFormat, virInterfaceFindByMACString) (virInterfaceFindByName, virInterfaceAssignDef) (virInterfaceRemove): Likewise. * src/conf/network_conf.c (VIR_ENUM_IMPL, virNetworkFindByName, virNetworkObjAssignDef) (virNetworkAssignDef, virNetworkRemoveInactive) (virNetworkDefGetIpByIndex, virNetworkIpDefPrefix) (virNetworkIpDefNetmask, virNetworkDHCPHostDefParseXML) (virNetworkIpDefFormat, virNetworkRouteDefFormat) (virPortGroupDefFormat, virNetworkForwardNatDefFormat) (virNetworkDefFormatInternal, virNetworkBridgeInUse) (virNetworkAllocateBridge, virNetworkSetBridgeName) (virNetworkDNSDefFormat, virNetworkDefFormat): Likewise. * src/conf/netdev_vlan_conf.c (virNetDevVlanFormat): Likewise. * src/conf/node_device_conf.c (virNodeDeviceHasCap) (virNodeDeviceFindBySysfsPath, virNodeDeviceFindByName) (virNodeDeviceAssignDef, virNodeDeviceObjRemove) (virNodeDeviceDefFormat, virNodeDeviceGetParentHost): Likewise. * src/conf/secret_conf.c (virSecretDefFormatUsage) (virSecretDefFormat): Likewise. Signed-off-by: Eric Blake <eblake@redhat.com> --- src/conf/interface_conf.c | 30 +++++++++++++++++------------- src/conf/interface_conf.h | 15 +++++++-------- src/conf/netdev_vlan_conf.c | 4 ++-- src/conf/netdev_vlan_conf.h | 4 ++-- src/conf/network_conf.c | 44 ++++++++++++++++++++++---------------------- src/conf/network_conf.h | 28 ++++++++++++++-------------- src/conf/node_device_conf.c | 14 +++++++------- src/conf/node_device_conf.h | 14 +++++++------- src/conf/secret_conf.c | 8 ++++---- src/conf/secret_conf.h | 4 ++-- src/conf/snapshot_conf.c | 6 +++--- src/conf/snapshot_conf.h | 6 +++--- 12 files changed, 90 insertions(+), 87 deletions(-) diff --git a/src/conf/interface_conf.c b/src/conf/interface_conf.c index 79aab6e..fd2e25e 100644 --- a/src/conf/interface_conf.c +++ b/src/conf/interface_conf.c @@ -42,7 +42,7 @@ static virInterfaceDefPtr virInterfaceDefParseXML(xmlXPathContextPtr ctxt, int parentIfType); static int virInterfaceDefDevFormat(virBufferPtr buf, - const virInterfaceDefPtr def, int level); + const virInterfaceDef *def, int level); static void virInterfaceIpDefFree(virInterfaceIpDefPtr def) { @@ -858,7 +858,8 @@ virInterfaceDefPtr virInterfaceDefParseFile(const char *filename) static int virInterfaceBridgeDefFormat(virBufferPtr buf, - const virInterfaceDefPtr def, int level) { + const virInterfaceDef *def, int level) +{ size_t i; int ret = 0; @@ -883,7 +884,8 @@ virInterfaceBridgeDefFormat(virBufferPtr buf, static int virInterfaceBondDefFormat(virBufferPtr buf, - const virInterfaceDefPtr def, int level) { + const virInterfaceDef *def, int level) +{ size_t i; int ret = 0; @@ -944,7 +946,8 @@ virInterfaceBondDefFormat(virBufferPtr buf, static int virInterfaceVlanDefFormat(virBufferPtr buf, - const virInterfaceDefPtr def, int level) { + const virInterfaceDef *def, int level) +{ if (def->data.vlan.tag == NULL) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("vlan misses the tag name")); @@ -964,8 +967,9 @@ virInterfaceVlanDefFormat(virBufferPtr buf, } static int -virInterfaceProtocolDefFormat(virBufferPtr buf, const virInterfaceDefPtr def, - int level) { +virInterfaceProtocolDefFormat(virBufferPtr buf, const virInterfaceDef *def, + int level) +{ size_t i, j; for (i = 0; i < def->nprotos; i++) { @@ -1038,7 +1042,8 @@ virInterfaceStartmodeDefFormat(virBufferPtr buf, static int virInterfaceDefDevFormat(virBufferPtr buf, - const virInterfaceDefPtr def, int level) { + const virInterfaceDef *def, int level) +{ const char *type = NULL; if (def == NULL) { @@ -1115,7 +1120,7 @@ cleanup: return -1; } -char *virInterfaceDefFormat(const virInterfaceDefPtr def) +char *virInterfaceDefFormat(const virInterfaceDef *def) { virBuffer buf = VIR_BUFFER_INITIALIZER; @@ -1150,7 +1155,7 @@ void virInterfaceObjFree(virInterfaceObjPtr iface) /* virInterfaceObjList manipulation */ -int virInterfaceFindByMACString(const virInterfaceObjListPtr interfaces, +int virInterfaceFindByMACString(virInterfaceObjListPtr interfaces, const char *mac, virInterfaceObjPtr *matches, int maxmatches) { @@ -1175,8 +1180,7 @@ int virInterfaceFindByMACString(const virInterfaceObjListPtr interfaces, return matchct; } -virInterfaceObjPtr virInterfaceFindByName(const virInterfaceObjListPtr - interfaces, +virInterfaceObjPtr virInterfaceFindByName(virInterfaceObjListPtr interfaces, const char *name) { size_t i; @@ -1242,7 +1246,7 @@ cleanup: } virInterfaceObjPtr virInterfaceAssignDef(virInterfaceObjListPtr interfaces, - const virInterfaceDefPtr def) + virInterfaceDefPtr def) { virInterfaceObjPtr iface; @@ -1277,7 +1281,7 @@ virInterfaceObjPtr virInterfaceAssignDef(virInterfaceObjListPtr interfaces, } void virInterfaceRemove(virInterfaceObjListPtr interfaces, - const virInterfaceObjPtr iface) + virInterfaceObjPtr iface) { size_t i; diff --git a/src/conf/interface_conf.h b/src/conf/interface_conf.h index d60867b..4857822 100644 --- a/src/conf/interface_conf.h +++ b/src/conf/interface_conf.h @@ -1,7 +1,7 @@ /* * interface_conf.h: interface XML handling entry points * - * Copyright (C) 2006-2009 Red Hat, Inc. + * Copyright (C) 2006-2009, 2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -176,16 +176,15 @@ struct _virInterfaceObjList { }; static inline int -virInterfaceObjIsActive(const virInterfaceObjPtr iface) +virInterfaceObjIsActive(const virInterfaceObj *iface) { return iface->active; } -int virInterfaceFindByMACString(const virInterfaceObjListPtr interfaces, +int virInterfaceFindByMACString(virInterfaceObjListPtr interfaces, const char *mac, virInterfaceObjPtr *matches, int maxmatches); -virInterfaceObjPtr virInterfaceFindByName(const virInterfaceObjListPtr - interfaces, +virInterfaceObjPtr virInterfaceFindByName(virInterfaceObjListPtr interfaces, const char *name); @@ -197,16 +196,16 @@ int virInterfaceObjListClone(virInterfaceObjListPtr src, virInterfaceObjPtr virInterfaceAssignDef(virInterfaceObjListPtr interfaces, - const virInterfaceDefPtr def); + virInterfaceDefPtr def); void virInterfaceRemove(virInterfaceObjListPtr interfaces, - const virInterfaceObjPtr iface); + virInterfaceObjPtr iface); virInterfaceDefPtr virInterfaceDefParseString(const char *xmlStr); virInterfaceDefPtr virInterfaceDefParseFile(const char *filename); virInterfaceDefPtr virInterfaceDefParseNode(xmlDocPtr xml, xmlNodePtr root); -char *virInterfaceDefFormat(const virInterfaceDefPtr def); +char *virInterfaceDefFormat(const virInterfaceDef *def); void virInterfaceObjLock(virInterfaceObjPtr obj); void virInterfaceObjUnlock(virInterfaceObjPtr obj); diff --git a/src/conf/netdev_vlan_conf.c b/src/conf/netdev_vlan_conf.c index 24e1000..b2ed2b0 100644 --- a/src/conf/netdev_vlan_conf.c +++ b/src/conf/netdev_vlan_conf.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009-2012 Red Hat, Inc. + * Copyright (C) 2009-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -140,7 +140,7 @@ cleanup: } int -virNetDevVlanFormat(virNetDevVlanPtr def, virBufferPtr buf) +virNetDevVlanFormat(const virNetDevVlan *def, virBufferPtr buf) { size_t i; diff --git a/src/conf/netdev_vlan_conf.h b/src/conf/netdev_vlan_conf.h index 480d6c6..ceef78e 100644 --- a/src/conf/netdev_vlan_conf.h +++ b/src/conf/netdev_vlan_conf.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009-2012 Red Hat, Inc. + * Copyright (C) 2009-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -28,6 +28,6 @@ # include "virxml.h" int virNetDevVlanParse(xmlNodePtr node, xmlXPathContextPtr ctxt, virNetDevVlanPtr def); -int virNetDevVlanFormat(virNetDevVlanPtr def, virBufferPtr buf); +int virNetDevVlanFormat(const virNetDevVlan *def, virBufferPtr buf); #endif /* __VIR_NETDEV_VPORT_PROFILE_CONF_H__ */ diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index c877a6d..447eca4 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -66,7 +66,7 @@ VIR_ENUM_IMPL(virNetworkForwardDriverName, "kvm", "vfio") -virNetworkObjPtr virNetworkFindByUUID(const virNetworkObjListPtr nets, +virNetworkObjPtr virNetworkFindByUUID(virNetworkObjListPtr nets, const unsigned char *uuid) { size_t i; @@ -81,7 +81,7 @@ virNetworkObjPtr virNetworkFindByUUID(const virNetworkObjListPtr nets, return NULL; } -virNetworkObjPtr virNetworkFindByName(const virNetworkObjListPtr nets, +virNetworkObjPtr virNetworkFindByName(virNetworkObjListPtr nets, const char *name) { size_t i; @@ -291,7 +291,7 @@ void virNetworkObjListFree(virNetworkObjListPtr nets) */ int virNetworkObjAssignDef(virNetworkObjPtr network, - const virNetworkDefPtr def, + virNetworkDefPtr def, bool live) { if (virNetworkObjIsActive(network)) { @@ -337,7 +337,7 @@ virNetworkObjAssignDef(virNetworkObjPtr network, */ virNetworkObjPtr virNetworkAssignDef(virNetworkObjListPtr nets, - const virNetworkDefPtr def, + virNetworkDefPtr def, bool live) { virNetworkObjPtr network; @@ -543,7 +543,7 @@ cleanup: } void virNetworkRemoveInactive(virNetworkObjListPtr nets, - const virNetworkObjPtr net) + virNetworkObjPtr net) { size_t i; @@ -571,7 +571,7 @@ void virNetworkRemoveInactive(virNetworkObjListPtr nets, /* return ips[index], or NULL if there aren't enough ips */ virNetworkIpDefPtr -virNetworkDefGetIpByIndex(const virNetworkDefPtr def, +virNetworkDefGetIpByIndex(const virNetworkDef *def, int family, size_t n) { size_t i; @@ -597,7 +597,7 @@ virNetworkDefGetIpByIndex(const virNetworkDefPtr def, /* return number of 1 bits in netmask for the network's ipAddress, * or -1 on error */ -int virNetworkIpDefPrefix(const virNetworkIpDefPtr def) +int virNetworkIpDefPrefix(const virNetworkIpDef *def) { return virSocketAddrGetIpPrefix(&def->address, &def->netmask, @@ -608,7 +608,7 @@ int virNetworkIpDefPrefix(const virNetworkIpDefPtr def) * definition, based on either the definition's netmask, or its * prefix. Return -1 on error (and set the netmask family to AF_UNSPEC) */ -int virNetworkIpDefNetmask(const virNetworkIpDefPtr def, +int virNetworkIpDefNetmask(const virNetworkIpDef *def, virSocketAddrPtr netmask) { if (VIR_SOCKET_ADDR_IS_FAMILY(&def->netmask, AF_INET)) { @@ -667,7 +667,7 @@ cleanup: static int virNetworkDHCPHostDefParseXML(const char *networkName, - const virNetworkIpDefPtr def, + virNetworkIpDefPtr def, xmlNodePtr node, virNetworkDHCPHostDefPtr host, bool partialOkay) @@ -2293,7 +2293,7 @@ cleanup: static int virNetworkDNSDefFormat(virBufferPtr buf, - virNetworkDNSDefPtr def) + const virNetworkDNSDef *def) { int result = 0; size_t i, j; @@ -2369,7 +2369,7 @@ out: static int virNetworkIpDefFormat(virBufferPtr buf, - const virNetworkIpDefPtr def) + const virNetworkIpDef *def) { int result = -1; @@ -2466,7 +2466,7 @@ error: static int virNetworkRouteDefFormat(virBufferPtr buf, - const virNetworkRouteDefPtr def) + const virNetworkRouteDef *def) { int result = -1; @@ -2513,7 +2513,7 @@ error: static int virPortGroupDefFormat(virBufferPtr buf, - const virPortGroupDefPtr def) + const virPortGroupDef *def) { virBufferAsprintf(buf, "<portgroup name='%s'", def->name); if (def->isDefault) { @@ -2533,7 +2533,7 @@ virPortGroupDefFormat(virBufferPtr buf, static int virNetworkForwardNatDefFormat(virBufferPtr buf, - const virNetworkForwardDefPtr fwd) + const virNetworkForwardDef *fwd) { char *addrStart = NULL; char *addrEnd = NULL; @@ -2583,10 +2583,10 @@ cleanup: static int virNetworkDefFormatInternal(virBufferPtr buf, - const virNetworkDefPtr def, + const virNetworkDef *def, unsigned int flags) { - unsigned char *uuid; + const unsigned char *uuid; char uuidstr[VIR_UUID_STRING_BUFLEN]; size_t i; bool shortforward; @@ -2746,7 +2746,7 @@ error: } char * -virNetworkDefFormat(virNetworkDefPtr def, +virNetworkDefFormat(const virNetworkDef *def, unsigned int flags) { virBuffer buf = VIR_BUFFER_INITIALIZER; @@ -3149,7 +3149,7 @@ char *virNetworkConfigFile(const char *dir, return ret; } -int virNetworkBridgeInUse(const virNetworkObjListPtr nets, +int virNetworkBridgeInUse(virNetworkObjListPtr nets, const char *bridge, const char *skipname) { @@ -3168,7 +3168,7 @@ int virNetworkBridgeInUse(const virNetworkObjListPtr nets, return ret; } -char *virNetworkAllocateBridge(const virNetworkObjListPtr nets, +char *virNetworkAllocateBridge(virNetworkObjListPtr nets, const char *template) { @@ -3195,10 +3195,10 @@ char *virNetworkAllocateBridge(const virNetworkObjListPtr nets, return NULL; } -int virNetworkSetBridgeName(const virNetworkObjListPtr nets, +int virNetworkSetBridgeName(virNetworkObjListPtr nets, virNetworkDefPtr def, - int check_collision) { - + int check_collision) +{ int ret = -1; if (def->bridge && !strstr(def->bridge, "%d")) { diff --git a/src/conf/network_conf.h b/src/conf/network_conf.h index b425986..e3ef285 100644 --- a/src/conf/network_conf.h +++ b/src/conf/network_conf.h @@ -284,14 +284,14 @@ struct _virNetworkObjList { }; static inline int -virNetworkObjIsActive(const virNetworkObjPtr net) +virNetworkObjIsActive(const virNetworkObj *net) { return net->active; } -virNetworkObjPtr virNetworkFindByUUID(const virNetworkObjListPtr nets, +virNetworkObjPtr virNetworkFindByUUID(virNetworkObjListPtr nets, const unsigned char *uuid); -virNetworkObjPtr virNetworkFindByName(const virNetworkObjListPtr nets, +virNetworkObjPtr virNetworkFindByName(virNetworkObjListPtr nets, const char *name); @@ -304,10 +304,10 @@ typedef bool (*virNetworkObjListFilter)(virConnectPtr conn, virNetworkDefPtr def); virNetworkObjPtr virNetworkAssignDef(virNetworkObjListPtr nets, - const virNetworkDefPtr def, + virNetworkDefPtr def, bool live); int virNetworkObjAssignDef(virNetworkObjPtr network, - const virNetworkDefPtr def, + virNetworkDefPtr def, bool live); int virNetworkObjSetDefTransient(virNetworkObjPtr network, bool live); void virNetworkObjUnsetDefTransient(virNetworkObjPtr network); @@ -318,16 +318,16 @@ virNetworkDefPtr virNetworkDefCopy(virNetworkDefPtr def, unsigned int flags); int virNetworkConfigChangeSetup(virNetworkObjPtr dom, unsigned int flags); void virNetworkRemoveInactive(virNetworkObjListPtr nets, - const virNetworkObjPtr net); + virNetworkObjPtr net); virNetworkDefPtr virNetworkDefParseString(const char *xmlStr); virNetworkDefPtr virNetworkDefParseFile(const char *filename); virNetworkDefPtr virNetworkDefParseNode(xmlDocPtr xml, xmlNodePtr root); -char *virNetworkDefFormat(const virNetworkDefPtr def, unsigned int flags); +char *virNetworkDefFormat(const virNetworkDef *def, unsigned int flags); static inline const char * -virNetworkDefForwardIf(const virNetworkDefPtr def, size_t n) +virNetworkDefForwardIf(const virNetworkDef *def, size_t n) { return ((def->forward.ifs && (def->forward.nifs > n) && def->forward.ifs[n].type == VIR_NETWORK_FORWARD_HOSTDEV_DEVICE_NETDEV) @@ -338,10 +338,10 @@ virPortGroupDefPtr virPortGroupFindByName(virNetworkDefPtr net, const char *portgroup); virNetworkIpDefPtr -virNetworkDefGetIpByIndex(const virNetworkDefPtr def, +virNetworkDefGetIpByIndex(const virNetworkDef *def, int family, size_t n); -int virNetworkIpDefPrefix(const virNetworkIpDefPtr def); -int virNetworkIpDefNetmask(const virNetworkIpDefPtr def, +int virNetworkIpDefPrefix(const virNetworkIpDef *def); +int virNetworkIpDefNetmask(const virNetworkIpDef *def, virSocketAddrPtr netmask); int virNetworkSaveXML(const char *configDir, @@ -377,14 +377,14 @@ int virNetworkDeleteConfig(const char *configDir, char *virNetworkConfigFile(const char *dir, const char *name); -int virNetworkBridgeInUse(const virNetworkObjListPtr nets, +int virNetworkBridgeInUse(virNetworkObjListPtr nets, const char *bridge, const char *skipname); -char *virNetworkAllocateBridge(const virNetworkObjListPtr nets, +char *virNetworkAllocateBridge(virNetworkObjListPtr nets, const char *template); -int virNetworkSetBridgeName(const virNetworkObjListPtr nets, +int virNetworkSetBridgeName(virNetworkObjListPtr nets, virNetworkDefPtr def, int check_collision); diff --git a/src/conf/node_device_conf.c b/src/conf/node_device_conf.c index 799405e..171cd7c 100644 --- a/src/conf/node_device_conf.c +++ b/src/conf/node_device_conf.c @@ -72,7 +72,7 @@ virNodeDevCapsDefParseString(const char *xpath, return 0; } -int virNodeDeviceHasCap(const virNodeDeviceObjPtr dev, const char *cap) +int virNodeDeviceHasCap(const virNodeDeviceObj *dev, const char *cap) { virNodeDevCapsDefPtr caps = dev->def->caps; while (caps) { @@ -85,7 +85,7 @@ int virNodeDeviceHasCap(const virNodeDeviceObjPtr dev, const char *cap) virNodeDeviceObjPtr -virNodeDeviceFindBySysfsPath(const virNodeDeviceObjListPtr devs, +virNodeDeviceFindBySysfsPath(virNodeDeviceObjListPtr devs, const char *sysfs_path) { size_t i; @@ -103,7 +103,7 @@ virNodeDeviceFindBySysfsPath(const virNodeDeviceObjListPtr devs, } -virNodeDeviceObjPtr virNodeDeviceFindByName(const virNodeDeviceObjListPtr devs, +virNodeDeviceObjPtr virNodeDeviceFindByName(virNodeDeviceObjListPtr devs, const char *name) { size_t i; @@ -166,7 +166,7 @@ void virNodeDeviceObjListFree(virNodeDeviceObjListPtr devs) } virNodeDeviceObjPtr virNodeDeviceAssignDef(virNodeDeviceObjListPtr devs, - const virNodeDeviceDefPtr def) + virNodeDeviceDefPtr def) { virNodeDeviceObjPtr device; @@ -201,7 +201,7 @@ virNodeDeviceObjPtr virNodeDeviceAssignDef(virNodeDeviceObjListPtr devs, } void virNodeDeviceObjRemove(virNodeDeviceObjListPtr devs, - const virNodeDeviceObjPtr dev) + virNodeDeviceObjPtr dev) { size_t i; @@ -228,7 +228,7 @@ void virNodeDeviceObjRemove(virNodeDeviceObjListPtr devs, } } -char *virNodeDeviceDefFormat(const virNodeDeviceDefPtr def) +char *virNodeDeviceDefFormat(const virNodeDeviceDef *def) { virBuffer buf = VIR_BUFFER_INITIALIZER; virNodeDevCapsDefPtr caps; @@ -1394,7 +1394,7 @@ cleanup: * Return the NPIV dev's parent device name */ int -virNodeDeviceGetParentHost(const virNodeDeviceObjListPtr devs, +virNodeDeviceGetParentHost(virNodeDeviceObjListPtr devs, const char *dev_name, const char *parent_name, int *parent_host) diff --git a/src/conf/node_device_conf.h b/src/conf/node_device_conf.h index 1fa61b5..af8fedc 100644 --- a/src/conf/node_device_conf.h +++ b/src/conf/node_device_conf.h @@ -218,22 +218,22 @@ struct _virNodeDeviceDriverState { }; -int virNodeDeviceHasCap(const virNodeDeviceObjPtr dev, const char *cap); +int virNodeDeviceHasCap(const virNodeDeviceObj *dev, const char *cap); -virNodeDeviceObjPtr virNodeDeviceFindByName(const virNodeDeviceObjListPtr devs, +virNodeDeviceObjPtr virNodeDeviceFindByName(virNodeDeviceObjListPtr devs, const char *name); virNodeDeviceObjPtr -virNodeDeviceFindBySysfsPath(const virNodeDeviceObjListPtr devs, +virNodeDeviceFindBySysfsPath(virNodeDeviceObjListPtr devs, const char *sysfs_path) ATTRIBUTE_NONNULL(2); virNodeDeviceObjPtr virNodeDeviceAssignDef(virNodeDeviceObjListPtr devs, - const virNodeDeviceDefPtr def); + virNodeDeviceDefPtr def); void virNodeDeviceObjRemove(virNodeDeviceObjListPtr devs, - const virNodeDeviceObjPtr dev); + virNodeDeviceObjPtr dev); -char *virNodeDeviceDefFormat(const virNodeDeviceDefPtr def); +char *virNodeDeviceDefFormat(const virNodeDeviceDef *def); virNodeDeviceDefPtr virNodeDeviceDefParseString(const char *str, int create, @@ -250,7 +250,7 @@ int virNodeDeviceGetWWNs(virNodeDeviceDefPtr def, char **wwnn, char **wwpn); -int virNodeDeviceGetParentHost(const virNodeDeviceObjListPtr devs, +int virNodeDeviceGetParentHost(virNodeDeviceObjListPtr devs, const char *dev_name, const char *parent_name, int *parent_host); diff --git a/src/conf/secret_conf.c b/src/conf/secret_conf.c index 335884e..282bc6e 100644 --- a/src/conf/secret_conf.c +++ b/src/conf/secret_conf.c @@ -1,7 +1,7 @@ /* * secret_conf.c: internal <secret> XML handling * - * Copyright (C) 2009, 2011 Red Hat, Inc. + * Copyright (C) 2009, 2011, 2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -243,7 +243,7 @@ virSecretDefParseFile(const char *filename) static int virSecretDefFormatUsage(virBufferPtr buf, - const virSecretDefPtr def) + const virSecretDef *def) { const char *type; @@ -291,10 +291,10 @@ virSecretDefFormatUsage(virBufferPtr buf, } char * -virSecretDefFormat(const virSecretDefPtr def) +virSecretDefFormat(const virSecretDef *def) { virBuffer buf = VIR_BUFFER_INITIALIZER; - unsigned char *uuid; + const unsigned char *uuid; char uuidstr[VIR_UUID_STRING_BUFLEN]; virBufferAsprintf(&buf, "<secret ephemeral='%s' private='%s'>\n", diff --git a/src/conf/secret_conf.h b/src/conf/secret_conf.h index a2ae0bc..54d7e76 100644 --- a/src/conf/secret_conf.h +++ b/src/conf/secret_conf.h @@ -1,7 +1,7 @@ /* * secret_conf.h: internal <secret> XML handling API * - * Copyright (C) 2009-2010 Red Hat, Inc. + * Copyright (C) 2009-2010, 2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -46,7 +46,7 @@ struct _virSecretDef { void virSecretDefFree(virSecretDefPtr def); virSecretDefPtr virSecretDefParseString(const char *xml); virSecretDefPtr virSecretDefParseFile(const char *filename); -char *virSecretDefFormat(const virSecretDefPtr def); +char *virSecretDefFormat(const virSecretDef *def); # define VIR_CONNECT_LIST_SECRETS_FILTERS_EPHEMERAL \ (VIR_CONNECT_LIST_SECRETS_EPHEMERAL | \ diff --git a/src/conf/snapshot_conf.c b/src/conf/snapshot_conf.c index 12c09b7..94a74d2 100644 --- a/src/conf/snapshot_conf.c +++ b/src/conf/snapshot_conf.c @@ -1,7 +1,7 @@ /* * snapshot_conf.c: domain snapshot XML processing * - * Copyright (C) 2006-2012 Red Hat, Inc. + * Copyright (C) 2006-2013 Red Hat, Inc. * Copyright (C) 2006-2008 Daniel P. Berrange * * This library is free software; you can redistribute it and/or @@ -689,7 +689,7 @@ static void virDomainSnapshotObjFree(virDomainSnapshotObjPtr snapshot) } virDomainSnapshotObjPtr virDomainSnapshotAssignDef(virDomainSnapshotObjListPtr snapshots, - const virDomainSnapshotDefPtr def) + virDomainSnapshotDefPtr def) { virDomainSnapshotObjPtr snap; @@ -876,7 +876,7 @@ virDomainSnapshotObjListNum(virDomainSnapshotObjListPtr snapshots, } virDomainSnapshotObjPtr -virDomainSnapshotFindByName(const virDomainSnapshotObjListPtr snapshots, +virDomainSnapshotFindByName(virDomainSnapshotObjListPtr snapshots, const char *name) { return name ? virHashLookup(snapshots->objs, name) : &snapshots->metaroot; diff --git a/src/conf/snapshot_conf.h b/src/conf/snapshot_conf.h index e8f8179..ff3dca2 100644 --- a/src/conf/snapshot_conf.h +++ b/src/conf/snapshot_conf.h @@ -1,7 +1,7 @@ /* * snapshot_conf.h: domain snapshot XML processing * - * Copyright (C) 2006-2012 Red Hat, Inc. + * Copyright (C) 2006-2013 Red Hat, Inc. * Copyright (C) 2006-2008 Daniel P. Berrange * * This library is free software; you can redistribute it and/or @@ -119,7 +119,7 @@ int virDomainSnapshotAlignDisks(virDomainSnapshotDefPtr snapshot, int default_snapshot, bool require_match); virDomainSnapshotObjPtr virDomainSnapshotAssignDef(virDomainSnapshotObjListPtr snapshots, - const virDomainSnapshotDefPtr def); + virDomainSnapshotDefPtr def); int virDomainSnapshotObjListGetNames(virDomainSnapshotObjListPtr snapshots, virDomainSnapshotObjPtr from, @@ -128,7 +128,7 @@ int virDomainSnapshotObjListGetNames(virDomainSnapshotObjListPtr snapshots, int virDomainSnapshotObjListNum(virDomainSnapshotObjListPtr snapshots, virDomainSnapshotObjPtr from, unsigned int flags); -virDomainSnapshotObjPtr virDomainSnapshotFindByName(const virDomainSnapshotObjListPtr snapshots, +virDomainSnapshotObjPtr virDomainSnapshotFindByName(virDomainSnapshotObjListPtr snapshots, const char *name); void virDomainSnapshotObjListRemove(virDomainSnapshotObjListPtr snapshots, virDomainSnapshotObjPtr snapshot); -- 1.8.3.1

On Tue, Oct 08, 2013 at 11:29:02AM -0600, Eric Blake wrote:
'const fooPtr' is the same as 'foo * const' (the pointer won't change, but it's contents can). But in general, if an interface is trying to be const-correct, it should be using 'const foo *' (the pointer is to data that can't be changed).
Fix up remaining offenders in src/conf, and their fallout.
* src/conf/snapshot_conf.h (virDomainSnapshotAssignDef) (virDomainSnapshotFindByName): Drop attempt at const. * src/conf/interface_conf.h (virInterfaceObjIsActive) (virInterfaceDefFormat): Use intended type. (virInterfaceFindByMACString, virInterfaceFindByName) (virInterfaceAssignDef, virInterfaceRemove): Drop attempt at const. * src/conf/network_conf.h (virNetworkObjIsActive) (virNetworkDefFormat, virNetworkDefForwardIf) (virNetworkDefGetIpByIndex, virNetworkIpDefPrefix) (virNetworkIpDefNetmask): Use intended type. (virNetworkFindByUUID, virNetworkFindByName, virNetworkAssignDef) (virNetworkObjAssignDef, virNetworkRemoveInactive) (virNetworkBridgeInUse, virNetworkSetBridgeName) (virNetworkAllocateBridge): Drop attempt at const. * src/conf/netdev_vlan_conf.h (virNetDevVlanFormat): Make const-correct. * src/conf/node_device_conf.h (virNodeDeviceHasCap) (virNodeDeviceDefFormat): Use intended type. (virNodeDeviceFindByName, virNodeDeviceFindBySysfsPath) (virNodeDeviceAssignDef, virNodeDeviceObjRemove) (virNodeDeviceGetParentHost): Drop attempt at const. * src/conf/secret_conf.h (virSecretDefFormat): Use intended type. * src/conf/snapshot_conf.c (virDomainSnapshotAssignDef) (virDomainSnapshotFindByName): Fix fallout. * src/conf/interface_conf.c (virInterfaceBridgeDefFormat) (virInterfaceBondDefFormat, virInterfaceVlanDefFormat) (virInterfaceProtocolDefFormat, virInterfaceDefDevFormat) (virInterfaceDefFormat, virInterfaceFindByMACString) (virInterfaceFindByName, virInterfaceAssignDef) (virInterfaceRemove): Likewise. * src/conf/network_conf.c (VIR_ENUM_IMPL, virNetworkFindByName, virNetworkObjAssignDef) (virNetworkAssignDef, virNetworkRemoveInactive) (virNetworkDefGetIpByIndex, virNetworkIpDefPrefix) (virNetworkIpDefNetmask, virNetworkDHCPHostDefParseXML) (virNetworkIpDefFormat, virNetworkRouteDefFormat) (virPortGroupDefFormat, virNetworkForwardNatDefFormat) (virNetworkDefFormatInternal, virNetworkBridgeInUse) (virNetworkAllocateBridge, virNetworkSetBridgeName) (virNetworkDNSDefFormat, virNetworkDefFormat): Likewise. * src/conf/netdev_vlan_conf.c (virNetDevVlanFormat): Likewise. * src/conf/node_device_conf.c (virNodeDeviceHasCap) (virNodeDeviceFindBySysfsPath, virNodeDeviceFindByName) (virNodeDeviceAssignDef, virNodeDeviceObjRemove) (virNodeDeviceDefFormat, virNodeDeviceGetParentHost): Likewise. * src/conf/secret_conf.c (virSecretDefFormatUsage) (virSecretDefFormat): Likewise.
Signed-off-by: Eric Blake <eblake@redhat.com> --- src/conf/interface_conf.c | 30 +++++++++++++++++------------- src/conf/interface_conf.h | 15 +++++++-------- src/conf/netdev_vlan_conf.c | 4 ++-- src/conf/netdev_vlan_conf.h | 4 ++-- src/conf/network_conf.c | 44 ++++++++++++++++++++++---------------------- src/conf/network_conf.h | 28 ++++++++++++++-------------- src/conf/node_device_conf.c | 14 +++++++------- src/conf/node_device_conf.h | 14 +++++++------- src/conf/secret_conf.c | 8 ++++---- src/conf/secret_conf.h | 4 ++-- src/conf/snapshot_conf.c | 6 +++--- src/conf/snapshot_conf.h | 6 +++--- 12 files changed, 90 insertions(+), 87 deletions(-)
ACK Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|

'const fooPtr' is the same as 'foo * const' (the pointer won't change, but it's contents can). But in general, if an interface is trying to be const-correct, it should be using 'const foo *' (the pointer is to data that can't be changed). Fix up offenders in src/security. * src/security/security_apparmor.c (reload_profile) (AppArmorSetSecurityHostdevLabelHelper) (AppArmorReleaseSecurityLabel, AppArmorRestoreSecurityAllLabel) (AppArmorSetSecurityProcessLabel) (AppArmorSetSecurityChildProcessLabel) (AppArmorSetSecurityImageLabel, AppArmorSecurityVerify) (AppArmorSetSecurityHostdevLabel) (AppArmorRestoreSecurityHostdevLabel, AppArmorSetFDLabel): Drop needless const. * src/security/security_selinux.c (virSecuritySELinuxSetSecurityFileLabel): Likewise. Signed-off-by: Eric Blake <eblake@redhat.com> --- src/security/security_apparmor.c | 22 +++++++++++----------- src/security/security_selinux.c | 2 +- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/security/security_apparmor.c b/src/security/security_apparmor.c index adc9918..30e4c3f 100644 --- a/src/security/security_apparmor.c +++ b/src/security/security_apparmor.c @@ -267,7 +267,7 @@ reload_profile(virSecurityManagerPtr mgr, { int rc = -1; char *profile_name = NULL; - const virSecurityLabelDefPtr secdef = virDomainDefGetSecurityLabelDef( + virSecurityLabelDefPtr secdef = virDomainDefGetSecurityLabelDef( def, SECURITY_APPARMOR_NAME); if (!secdef) @@ -304,7 +304,7 @@ AppArmorSetSecurityHostdevLabelHelper(const char *file, void *opaque) virDomainDefPtr def = ptr->def; if (reload_profile(ptr->mgr, def, file, true) < 0) { - const virSecurityLabelDefPtr secdef = virDomainDefGetSecurityLabelDef( + virSecurityLabelDefPtr secdef = virDomainDefGetSecurityLabelDef( def, SECURITY_APPARMOR_NAME); if (!secdef) { virReportOOMError(); @@ -528,7 +528,7 @@ static int AppArmorReleaseSecurityLabel(virSecurityManagerPtr mgr ATTRIBUTE_UNUSED, virDomainDefPtr def) { - const virSecurityLabelDefPtr secdef = virDomainDefGetSecurityLabelDef(def, + virSecurityLabelDefPtr secdef = virDomainDefGetSecurityLabelDef(def, SECURITY_APPARMOR_NAME); if (!secdef) return -1; @@ -547,7 +547,7 @@ AppArmorRestoreSecurityAllLabel(virSecurityManagerPtr mgr ATTRIBUTE_UNUSED, int migrated ATTRIBUTE_UNUSED) { int rc = 0; - const virSecurityLabelDefPtr secdef = + virSecurityLabelDefPtr secdef = virDomainDefGetSecurityLabelDef(def, SECURITY_APPARMOR_NAME); if (!secdef) @@ -572,7 +572,7 @@ AppArmorSetSecurityProcessLabel(virSecurityManagerPtr mgr ATTRIBUTE_UNUSED, { int rc = -1; char *profile_name = NULL; - const virSecurityLabelDefPtr secdef = + virSecurityLabelDefPtr secdef = virDomainDefGetSecurityLabelDef(def, SECURITY_APPARMOR_NAME); if (!secdef) @@ -616,7 +616,7 @@ AppArmorSetSecurityChildProcessLabel(virSecurityManagerPtr mgr ATTRIBUTE_UNUSED, { int rc = -1; char *profile_name = NULL; - const virSecurityLabelDefPtr secdef = + virSecurityLabelDefPtr secdef = virDomainDefGetSecurityLabelDef(def, SECURITY_APPARMOR_NAME); if (!secdef) @@ -684,7 +684,7 @@ AppArmorSetSecurityImageLabel(virSecurityManagerPtr mgr, { int rc = -1; char *profile_name = NULL; - const virSecurityLabelDefPtr secdef = + virSecurityLabelDefPtr secdef = virDomainDefGetSecurityLabelDef(def, SECURITY_APPARMOR_NAME); if (!secdef) @@ -731,7 +731,7 @@ static int AppArmorSecurityVerify(virSecurityManagerPtr mgr ATTRIBUTE_UNUSED, virDomainDefPtr def) { - const virSecurityLabelDefPtr secdef = + virSecurityLabelDefPtr secdef = virDomainDefGetSecurityLabelDef(def, SECURITY_APPARMOR_NAME); if (!secdef) @@ -765,7 +765,7 @@ AppArmorSetSecurityHostdevLabel(virSecurityManagerPtr mgr, { struct SDPDOP *ptr; int ret = -1; - const virSecurityLabelDefPtr secdef = + virSecurityLabelDefPtr secdef = virDomainDefGetSecurityLabelDef(def, SECURITY_APPARMOR_NAME); if (!secdef) @@ -862,7 +862,7 @@ AppArmorRestoreSecurityHostdevLabel(virSecurityManagerPtr mgr, const char *vroot ATTRIBUTE_UNUSED) { - const virSecurityLabelDefPtr secdef = + virSecurityLabelDefPtr secdef = virDomainDefGetSecurityLabelDef(def, SECURITY_APPARMOR_NAME); if (!secdef) @@ -900,7 +900,7 @@ AppArmorSetFDLabel(virSecurityManagerPtr mgr, char *proc = NULL; char *fd_path = NULL; - const virSecurityLabelDefPtr secdef = + virSecurityLabelDefPtr secdef = virDomainDefGetSecurityLabelDef(def, SECURITY_APPARMOR_NAME); if (!secdef) diff --git a/src/security/security_selinux.c b/src/security/security_selinux.c index c408fa8..6c0b0bb 100644 --- a/src/security/security_selinux.c +++ b/src/security/security_selinux.c @@ -1198,7 +1198,7 @@ virSecuritySELinuxSetSecurityFileLabel(virDomainDiskDefPtr disk, int ret; virSecurityDeviceLabelDefPtr disk_seclabel; virSecuritySELinuxCallbackDataPtr cbdata = opaque; - const virSecurityLabelDefPtr secdef = cbdata->secdef; + virSecurityLabelDefPtr secdef = cbdata->secdef; virSecuritySELinuxDataPtr data = virSecurityManagerGetPrivateData(cbdata->manager); disk_seclabel = virDomainDiskDefGetSecurityLabelDef(disk, -- 1.8.3.1

On Tue, Oct 08, 2013 at 11:29:03AM -0600, Eric Blake wrote:
'const fooPtr' is the same as 'foo * const' (the pointer won't change, but it's contents can). But in general, if an interface is trying to be const-correct, it should be using 'const foo *' (the pointer is to data that can't be changed).
Fix up offenders in src/security.
* src/security/security_apparmor.c (reload_profile) (AppArmorSetSecurityHostdevLabelHelper) (AppArmorReleaseSecurityLabel, AppArmorRestoreSecurityAllLabel) (AppArmorSetSecurityProcessLabel) (AppArmorSetSecurityChildProcessLabel) (AppArmorSetSecurityImageLabel, AppArmorSecurityVerify) (AppArmorSetSecurityHostdevLabel) (AppArmorRestoreSecurityHostdevLabel, AppArmorSetFDLabel): Drop needless const. * src/security/security_selinux.c (virSecuritySELinuxSetSecurityFileLabel): Likewise.
Signed-off-by: Eric Blake <eblake@redhat.com> --- src/security/security_apparmor.c | 22 +++++++++++----------- src/security/security_selinux.c | 2 +- 2 files changed, 12 insertions(+), 12 deletions(-)
ACK Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|

'const fooPtr' is the same as 'foo * const' (the pointer won't change, but it's contents can). But in general, if an interface is trying to be const-correct, it should be using 'const foo *' (the pointer is to data that can't be changed). Fix up offenders in src/qemu. * src/qemu/qemu_bridge_filter.h (networkAllowMacOnPort) (networkDisallowMacOnPort): Use intended type. * src/qemu/qemu_bridge_filter.c (networkAllowMacOnPort) (networkDisallowMacOnPort): Likewise. * src/qemu/qemu_command.c (qemuBuildTPMBackendStr) (qemuBuildTPMDevStr, qemuBuildCpuArgStr) (qemuBuildObsoleteAccelArg, qemuBuildMachineArgStr) (qemuBuildSmpArgStr, qemuBuildNumaArgStr): Likewise. * src/qemu/qemu_conf.c (qemuSharedDeviceEntryCopy): Likewise. * src/qemu/qemu_driver.c (qemuDomainSaveImageStartVM): Likewise. * src/qemu/qemu_hostdev.c (qemuDomainHostdevNetConfigVirtPortProfile): Likewise. * src/qemu/qemu_monitor_json.c (qemuMonitorJSONAttachCharDevCommand): Likewise. Signed-off-by: Eric Blake <eblake@redhat.com> --- src/qemu/qemu_bridge_filter.c | 10 +++++----- src/qemu/qemu_bridge_filter.h | 10 +++++----- src/qemu/qemu_command.c | 20 ++++++++++---------- src/qemu/qemu_conf.c | 2 +- src/qemu/qemu_driver.c | 2 +- src/qemu/qemu_hostdev.c | 2 +- src/qemu/qemu_monitor_json.c | 2 +- 7 files changed, 24 insertions(+), 24 deletions(-) diff --git a/src/qemu/qemu_bridge_filter.c b/src/qemu/qemu_bridge_filter.c index ab4db9a..49954c6 100644 --- a/src/qemu/qemu_bridge_filter.c +++ b/src/qemu/qemu_bridge_filter.c @@ -1,6 +1,6 @@ /* + * Copyright (C) 2007-2009, 2013 Red Hat, Inc. * Copyright (C) 2009 IBM Corp. - * Copyright (C) 2007-2009 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -65,8 +65,8 @@ networkDisableAllFrames(virQEMUDriverPtr driver) { int networkAllowMacOnPort(virQEMUDriverPtr driver, const char * ifname, - const virMacAddrPtr mac) { - + const virMacAddr *mac) +{ int err; /* allow this combination of macaddr and ifname */ @@ -86,8 +86,8 @@ networkAllowMacOnPort(virQEMUDriverPtr driver, int networkDisallowMacOnPort(virQEMUDriverPtr driver, const char * ifname, - const virMacAddrPtr mac) { - + const virMacAddr *mac) +{ int err; /* disallow this combination of macaddr and ifname */ diff --git a/src/qemu/qemu_bridge_filter.h b/src/qemu/qemu_bridge_filter.h index ea8e0fa..bacced8 100644 --- a/src/qemu/qemu_bridge_filter.h +++ b/src/qemu/qemu_bridge_filter.h @@ -1,6 +1,6 @@ /* + * Copyright (C) 2007-2009, 2013 Red Hat, Inc. * Copyright (C) 2009 IBM Corp. - * Copyright (C) 2007-2009 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -25,11 +25,11 @@ int networkAllowMacOnPort(virQEMUDriverPtr driver, - const char * ifname, - const virMacAddrPtr mac); + const char *ifname, + const virMacAddr *mac); int networkDisallowMacOnPort(virQEMUDriverPtr driver, - const char * ifname, - const virMacAddrPtr mac); + const char *ifname, + const virMacAddr *mac); int networkDisableAllFrames(virQEMUDriverPtr driver); int networkAddEbtablesRules(virQEMUDriverPtr driver); diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index adb065e..246c11d 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -6262,11 +6262,11 @@ cleanup: } -static char *qemuBuildTPMBackendStr(const virDomainDefPtr def, +static char *qemuBuildTPMBackendStr(const virDomainDef *def, virQEMUCapsPtr qemuCaps, const char *emulator) { - const virDomainTPMDefPtr tpm = def->tpm; + const virDomainTPMDef *tpm = def->tpm; virBuffer buf = VIR_BUFFER_INITIALIZER; const char *type = virDomainTPMBackendTypeToString(tpm->type); char *cancel_path; @@ -6314,12 +6314,12 @@ static char *qemuBuildTPMBackendStr(const virDomainDefPtr def, } -static char *qemuBuildTPMDevStr(const virDomainDefPtr def, +static char *qemuBuildTPMDevStr(const virDomainDef *def, virQEMUCapsPtr qemuCaps, const char *emulator) { virBuffer buf = VIR_BUFFER_INITIALIZER; - const virDomainTPMDefPtr tpm = def->tpm; + const virDomainTPMDef *tpm = def->tpm; const char *model = virDomainTPMModelTypeToString(tpm->model); if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_TPM_TIS)) { @@ -6530,8 +6530,8 @@ error: static int -qemuBuildCpuArgStr(const virQEMUDriverPtr driver, - const virDomainDefPtr def, +qemuBuildCpuArgStr(virQEMUDriverPtr driver, + const virDomainDef *def, const char *emulator, virQEMUCapsPtr qemuCaps, virArch hostarch, @@ -6761,7 +6761,7 @@ cleanup: static int qemuBuildObsoleteAccelArg(virCommandPtr cmd, - const virDomainDefPtr def, + const virDomainDef *def, virQEMUCapsPtr qemuCaps) { bool disableKQEMU = false; @@ -6828,7 +6828,7 @@ qemuBuildObsoleteAccelArg(virCommandPtr cmd, static int qemuBuildMachineArgStr(virCommandPtr cmd, - const virDomainDefPtr def, + const virDomainDef *def, virQEMUCapsPtr qemuCaps) { bool obsoleteAccel = false; @@ -6915,7 +6915,7 @@ qemuBuildMachineArgStr(virCommandPtr cmd, } static char * -qemuBuildSmpArgStr(const virDomainDefPtr def, +qemuBuildSmpArgStr(const virDomainDef *def, virQEMUCapsPtr qemuCaps) { virBuffer buf = VIR_BUFFER_INITIALIZER; @@ -6956,7 +6956,7 @@ qemuBuildSmpArgStr(const virDomainDefPtr def, } static int -qemuBuildNumaArgStr(const virDomainDefPtr def, virCommandPtr cmd) +qemuBuildNumaArgStr(const virDomainDef *def, virCommandPtr cmd) { size_t i; virBuffer buf = VIR_BUFFER_INITIALIZER; diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c index 1a41caf..a91cac4 100644 --- a/src/qemu/qemu_conf.c +++ b/src/qemu/qemu_conf.c @@ -833,7 +833,7 @@ qemuSharedDeviceEntryFree(void *payload, const void *name ATTRIBUTE_UNUSED) } static qemuSharedDeviceEntryPtr -qemuSharedDeviceEntryCopy(const qemuSharedDeviceEntryPtr entry) +qemuSharedDeviceEntryCopy(const qemuSharedDeviceEntry *entry) { qemuSharedDeviceEntryPtr ret = NULL; size_t i; diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index c71aecc..b9bceba 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -5306,7 +5306,7 @@ qemuDomainSaveImageStartVM(virConnectPtr conn, virQEMUDriverPtr driver, virDomainObjPtr vm, int *fd, - const virQEMUSaveHeaderPtr header, + const virQEMUSaveHeader *header, const char *path, bool start_paused) { diff --git a/src/qemu/qemu_hostdev.c b/src/qemu/qemu_hostdev.c index 21fe47f..f2d99e3 100644 --- a/src/qemu/qemu_hostdev.c +++ b/src/qemu/qemu_hostdev.c @@ -334,7 +334,7 @@ cleanup: static int qemuDomainHostdevNetConfigVirtPortProfile(const char *linkdev, int vf, virNetDevVPortProfilePtr virtPort, - const virMacAddrPtr macaddr, + const virMacAddr *macaddr, const unsigned char *uuid, bool associate) { diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c index cd6cb72..05f8aa6 100644 --- a/src/qemu/qemu_monitor_json.c +++ b/src/qemu/qemu_monitor_json.c @@ -5237,7 +5237,7 @@ int qemuMonitorJSONGetTPMTypes(qemuMonitorPtr mon, static virJSONValuePtr qemuMonitorJSONAttachCharDevCommand(const char *chrID, - const virDomainChrSourceDefPtr chr) + const virDomainChrSourceDef *chr) { virJSONValuePtr ret; virJSONValuePtr backend; -- 1.8.3.1

On Tue, Oct 08, 2013 at 11:29:04AM -0600, Eric Blake wrote:
'const fooPtr' is the same as 'foo * const' (the pointer won't change, but it's contents can). But in general, if an interface is trying to be const-correct, it should be using 'const foo *' (the pointer is to data that can't be changed).
Fix up offenders in src/qemu.
* src/qemu/qemu_bridge_filter.h (networkAllowMacOnPort) (networkDisallowMacOnPort): Use intended type. * src/qemu/qemu_bridge_filter.c (networkAllowMacOnPort) (networkDisallowMacOnPort): Likewise. * src/qemu/qemu_command.c (qemuBuildTPMBackendStr) (qemuBuildTPMDevStr, qemuBuildCpuArgStr) (qemuBuildObsoleteAccelArg, qemuBuildMachineArgStr) (qemuBuildSmpArgStr, qemuBuildNumaArgStr): Likewise. * src/qemu/qemu_conf.c (qemuSharedDeviceEntryCopy): Likewise. * src/qemu/qemu_driver.c (qemuDomainSaveImageStartVM): Likewise. * src/qemu/qemu_hostdev.c (qemuDomainHostdevNetConfigVirtPortProfile): Likewise. * src/qemu/qemu_monitor_json.c (qemuMonitorJSONAttachCharDevCommand): Likewise.
Signed-off-by: Eric Blake <eblake@redhat.com> --- src/qemu/qemu_bridge_filter.c | 10 +++++----- src/qemu/qemu_bridge_filter.h | 10 +++++----- src/qemu/qemu_command.c | 20 ++++++++++---------- src/qemu/qemu_conf.c | 2 +- src/qemu/qemu_driver.c | 2 +- src/qemu/qemu_hostdev.c | 2 +- src/qemu/qemu_monitor_json.c | 2 +- 7 files changed, 24 insertions(+), 24 deletions(-)
ACK Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|

'const fooPtr' is the same as 'foo * const' (the pointer won't change, but it's contents can). But in general, if an interface is trying to be const-correct, it should be using 'const foo *' (the pointer is to data that can't be changed). Fix up all remaining offenders. * src/lxc/lxc_process.c (virLXCProcessSetupInterfaceBridged): Drop needless const. * src/uml/uml_driver.c (umlMonitorCommand): Use intended type. (umlMonitorAddress): Fix fallout. * src/xen/xm_internal.c (xenXMDomainSearchForUUID): Use intended type. Signed-off-by: Eric Blake <eblake@redhat.com> --- src/lxc/lxc_process.c | 4 ++-- src/uml/uml_driver.c | 9 +++++---- src/xen/xm_internal.c | 4 ++-- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/lxc/lxc_process.c b/src/lxc/lxc_process.c index d07ff13..dde393c 100644 --- a/src/lxc/lxc_process.c +++ b/src/lxc/lxc_process.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010-2012 Red Hat, Inc. + * Copyright (C) 2010-2013 Red Hat, Inc. * Copyright IBM Corp. 2008 * * lxc_process.c: LXC process lifecycle management @@ -246,7 +246,7 @@ char *virLXCProcessSetupInterfaceBridged(virConnectPtr conn, char *ret = NULL; char *parentVeth; char *containerVeth = NULL; - const virNetDevVPortProfilePtr vport = virDomainNetGetActualVirtPortProfile(net); + virNetDevVPortProfilePtr vport = virDomainNetGetActualVirtPortProfile(net); VIR_DEBUG("calling vethCreate()"); parentVeth = net->ifname; diff --git a/src/uml/uml_driver.c b/src/uml/uml_driver.c index b9b977a..9ac896a 100644 --- a/src/uml/uml_driver.c +++ b/src/uml/uml_driver.c @@ -141,7 +141,7 @@ static void umlShutdownVMDaemon(struct uml_driver *driver, static int umlMonitorCommand(const struct uml_driver *driver, - const virDomainObjPtr vm, + const virDomainObj *vm, const char *cmd, char **reply); @@ -836,8 +836,9 @@ reopen: } static int umlMonitorAddress(const struct uml_driver *driver, - virDomainObjPtr vm, - struct sockaddr_un *addr) { + const virDomainObj *vm, + struct sockaddr_un *addr) +{ char *sockname; int retval = 0; @@ -918,7 +919,7 @@ struct monitor_response { static int umlMonitorCommand(const struct uml_driver *driver, - const virDomainObjPtr vm, + const virDomainObj *vm, const char *cmd, char **reply) { diff --git a/src/xen/xm_internal.c b/src/xen/xm_internal.c index d20dd91..d9a3502 100644 --- a/src/xen/xm_internal.c +++ b/src/xen/xm_internal.c @@ -860,8 +860,8 @@ xenXMDomainSearchForUUID(const void *payload, const void *name ATTRIBUTE_UNUSED, const void *data) { - const unsigned char *wantuuid = (const unsigned char *)data; - const xenXMConfCachePtr entry = (const xenXMConfCachePtr)payload; + const unsigned char *wantuuid = data; + const xenXMConfCache *entry = payload; if (!memcmp(entry->def->uuid, wantuuid, VIR_UUID_BUFLEN)) return 1; -- 1.8.3.1

On Tue, Oct 08, 2013 at 11:29:05AM -0600, Eric Blake wrote:
'const fooPtr' is the same as 'foo * const' (the pointer won't change, but it's contents can). But in general, if an interface is trying to be const-correct, it should be using 'const foo *' (the pointer is to data that can't be changed).
Fix up all remaining offenders.
* src/lxc/lxc_process.c (virLXCProcessSetupInterfaceBridged): Drop needless const. * src/uml/uml_driver.c (umlMonitorCommand): Use intended type. (umlMonitorAddress): Fix fallout. * src/xen/xm_internal.c (xenXMDomainSearchForUUID): Use intended type.
Signed-off-by: Eric Blake <eblake@redhat.com> --- src/lxc/lxc_process.c | 4 ++-- src/uml/uml_driver.c | 9 +++++---- src/xen/xm_internal.c | 4 ++-- 3 files changed, 9 insertions(+), 8 deletions(-)
ACK Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|

'const fooPtr' is the same as 'foo * const' (the pointer won't change, but it's contents can). But in general, if an interface is trying to be const-correct, it should be using 'const foo *' (the pointer is to data that can't be changed). Now that the code base has been cleaned, enforce it with a syntax checker. * cfg.mk (sc_forbid_const_pointer_typedef): New rule. --- cfg.mk | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/cfg.mk b/cfg.mk index dad8a90..82ecc95 100644 --- a/cfg.mk +++ b/cfg.mk @@ -468,6 +468,14 @@ sc_correct_id_types: halt="use pid_t for pid, uid_t for uid, gid_t for gid" \ $(_sc_search_regexp) +# "const fooPtr a" is the same as "foo * const a", even though it is +# usually desired to have 'foo const *a'. It's easier to just prevent +# the confusing mix of typedef vs. const placement. +sc_forbid_const_pointer_typedef: + @prohibit='(^|[^"])const \w*Ptr' \ + halt='"const fooPtr var" does not declare what you meant' \ + $(_sc_search_regexp) + # Forbid sizeof foo or sizeof (foo), require sizeof(foo) sc_size_of_brackets: @prohibit='sizeof\s' \ -- 1.8.3.1

On Tue, Oct 08, 2013 at 11:29:06AM -0600, Eric Blake wrote:
'const fooPtr' is the same as 'foo * const' (the pointer won't change, but it's contents can). But in general, if an interface is trying to be const-correct, it should be using 'const foo *' (the pointer is to data that can't be changed).
Now that the code base has been cleaned, enforce it with a syntax checker.
* cfg.mk (sc_forbid_const_pointer_typedef): New rule. --- cfg.mk | 8 ++++++++ 1 file changed, 8 insertions(+)
ACK Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|

On 10/14/2013 09:35 AM, Daniel P. Berrange wrote:
On Tue, Oct 08, 2013 at 11:29:06AM -0600, Eric Blake wrote:
'const fooPtr' is the same as 'foo * const' (the pointer won't change, but it's contents can). But in general, if an interface is trying to be const-correct, it should be using 'const foo *' (the pointer is to data that can't be changed).
Now that the code base has been cleaned, enforce it with a syntax checker.
* cfg.mk (sc_forbid_const_pointer_typedef): New rule. --- cfg.mk | 8 ++++++++ 1 file changed, 8 insertions(+)
ACK
Thanks; series pushed. -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org

On Tue, Oct 08, 2013 at 11:24:57AM -0600, Eric Blake wrote:
Mostly cleanup, but at least one bug fix (xen was instantiating a memballoon device too early, during the post-parse callback of the first device rather than after all devices were known).
Spawned by the conversation here: https://www.redhat.com/archives/libvir-list/2013-September/thread.html#01311
If we're going down the route of removing 'Ptr' suffixes in favour of normal '*' where we need to have const, how about just doing away with this 'Ptr' suffix *everywhere* (well except public header where we'd need to keep the typedef for back compat). Internally we could completely remove it though. The 'Ptr' typedefs actually may the code longer, for no obvious benefit, and create problems with const-ness. The main problem is that the huge change would create pain for people backporting patches. Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|

On 10/09/2013 03:27 AM, Daniel P. Berrange wrote:
On Tue, Oct 08, 2013 at 11:24:57AM -0600, Eric Blake wrote:
Mostly cleanup, but at least one bug fix (xen was instantiating a memballoon device too early, during the post-parse callback of the first device rather than after all devices were known).
Spawned by the conversation here: https://www.redhat.com/archives/libvir-list/2013-September/thread.html#01311
If we're going down the route of removing 'Ptr' suffixes in favour of normal '*' where we need to have const, how about just doing away with this 'Ptr' suffix *everywhere* (well except public header where we'd need to keep the typedef for back compat). Internally we could completely remove it though. The 'Ptr' typedefs actually may the code longer, for no obvious benefit, and create problems with const-ness.
The main problem is that the huge change would create pain for people backporting patches.
Indeed, which is why I limited things to JUST the case where the syntax checker proved we were using the wrong type. A bigger cleanup to remove Ptr may be entirely mechanical, but it does make backports interesting. -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
participants (2)
-
Daniel P. Berrange
-
Eric Blake