On Tue, Jan 19, 2010 at 12:10:24PM +0000, Daniel P. Berrange wrote: > The 'int virInterfaceIsActive()' method was directly returning the > value of the 'int active:1' bitfield in virIntefaceDefPtr. A bitfield > with a signed integer, will hold the values 0 and -1, not 0 and +1 > as might be expected. This meant that virInterfaceIsActive() was > always returning -1 when the interface was active, not +1 & thus all > callers thought an error had occurred. To protect against this kind > of mistake again, change all bitfields to be unsigned ints > > * daemon/libvirtd.h, src/conf/domain_conf.h, src/conf/interface_conf.h, > src/conf/network_conf.h: Change bitfields to unsigned int. > --- > daemon/libvirtd.h | 14 +++++++------- > src/conf/domain_conf.h | 14 +++++++------- > src/conf/interface_conf.h | 2 +- > src/conf/network_conf.h | 2 +- > 4 files changed, 16 insertions(+), 16 deletions(-) > > diff --git a/daemon/libvirtd.h b/daemon/libvirtd.h > index 2f647f3..a7591fc 100644 > --- a/daemon/libvirtd.h > +++ b/daemon/libvirtd.h > @@ -175,9 +175,9 @@ struct qemud_client { > > int fd; > int watch; > - int readonly:1; > - int closing:1; > - int domain_events_registered:1; > + unsigned int readonly :1; > + unsigned int closing :1; > + unsigned int domain_events_registered :1; > > struct sockaddr_storage addr; > socklen_t addrlen; > @@ -185,7 +185,7 @@ struct qemud_client { > int type; /* qemud_sock_type */ > gnutls_session_t tlssession; > int auth; > - int handshake : 1; /* If we're in progress for TLS handshake */ > + unsigned int handshake :1; /* If we're in progress for TLS handshake */ > #if HAVE_SASL > sasl_conn_t *saslconn; > int saslSSF; > @@ -244,9 +244,9 @@ struct qemud_socket { > > struct qemud_worker { > pthread_t thread; > - int hasThread :1; > - int processingCall :1; > - int quitRequest : 1; > + unsigned int hasThread :1; > + unsigned int processingCall :1; > + unsigned int quitRequest :1; > > /* back-pointer to our server */ > struct qemud_server *server; > diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h > index 1413273..7be090d 100644 > --- a/src/conf/domain_conf.h > +++ b/src/conf/domain_conf.h > @@ -400,8 +400,8 @@ enum virDomainVideoType { > typedef struct _virDomainVideoAccelDef virDomainVideoAccelDef; > typedef virDomainVideoAccelDef *virDomainVideoAccelDefPtr; > struct _virDomainVideoAccelDef { > - int support3d : 1; > - int support2d : 1; > + unsigned int support3d :1; > + unsigned int support2d :1; > }; > > > @@ -432,7 +432,7 @@ struct _virDomainGraphicsDef { > union { > struct { > int port; > - int autoport : 1; > + unsigned int autoport :1; > char *listenAddr; > char *keymap; > char *passwd; > @@ -445,13 +445,13 @@ struct _virDomainGraphicsDef { > struct { > int port; > char *listenAddr; > - int autoport : 1; > - int replaceUser : 1; > - int multiUser : 1; > + unsigned int autoport :1; > + unsigned int replaceUser :1; > + unsigned int multiUser :1; > } rdp; > struct { > char *display; > - int fullscreen : 1; > + unsigned int fullscreen :1; > } desktop; > } data; > }; > diff --git a/src/conf/interface_conf.h b/src/conf/interface_conf.h > index 2683eee..5b201d3 100644 > --- a/src/conf/interface_conf.h > +++ b/src/conf/interface_conf.h > @@ -170,7 +170,7 @@ typedef virInterfaceObj *virInterfaceObjPtr; > struct _virInterfaceObj { > virMutex lock; > > - int active:1; /* 1 if interface is active (up) */ > + unsigned int active:1; /* 1 if interface is active (up) */ > virInterfaceDefPtr def; /* The interface definition */ > }; > > diff --git a/src/conf/network_conf.h b/src/conf/network_conf.h > index 0214d1a..9e50659 100644 > --- a/src/conf/network_conf.h > +++ b/src/conf/network_conf.h > @@ -65,7 +65,7 @@ struct _virNetworkDef { > char *bridge; /* Name of bridge device */ > char *domain; > unsigned long delay; /* Bridge forward delay (ms) */ > - int stp : 1; /* Spanning tree protocol */ > + unsigned int stp :1; /* Spanning tree protocol */ > > int forwardType; /* One of virNetworkForwardType constants */ > char *forwardDev; /* Destination device for forwarding */ ACK, one checking point to keep in mind, good idea ! Daniel -- Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/ daniel@xxxxxxxxxxxx | Rpmfind RPM search engine http://rpmfind.net/ http://veillard.com/ | virtualization library http://libvirt.org/ -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list