mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-20 03:25:18 +00:00
util: function to get local nl_pid used by netlink event socket
This value will be needed to set the src_pid when sending netlink messages to lldpad. It is part of the solution to: https://bugzilla.redhat.com/show_bug.cgi?id=816465 Note that libnl's port generation algorithm guarantees that the nl_socket_get_local_port() will always be > 0 (since it is "getpid() + (n << 22>" where n is always < 1024), so it is okay to cast the uint32_t to int (thus allowing us to use -1 as an error sentinel). (cherry picked from commit c99e93758d44e7c6d62dbd3d064b6df61d1fefb2)
This commit is contained in:
parent
443e37da42
commit
ce5d17b316
@ -1325,6 +1325,7 @@ virNetlinkCommand;
|
|||||||
virNetlinkEventAddClient;
|
virNetlinkEventAddClient;
|
||||||
virNetlinkEventRemoveClient;
|
virNetlinkEventRemoveClient;
|
||||||
virNetlinkEventServiceIsRunning;
|
virNetlinkEventServiceIsRunning;
|
||||||
|
virNetlinkEventServiceLocalPid;
|
||||||
virNetlinkEventServiceStop;
|
virNetlinkEventServiceStop;
|
||||||
virNetlinkEventServiceStart;
|
virNetlinkEventServiceStart;
|
||||||
virNetlinkShutdown;
|
virNetlinkShutdown;
|
||||||
|
@ -368,6 +368,24 @@ virNetlinkEventServiceIsRunning(void)
|
|||||||
return server != NULL;
|
return server != NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* virNetlinkEventServiceLocalPid:
|
||||||
|
*
|
||||||
|
* Returns the nl_pid value that was used to bind() the netlink socket
|
||||||
|
* used by the netlink event service, or -1 on error (netlink
|
||||||
|
* guarantees that this value will always be > 0).
|
||||||
|
*/
|
||||||
|
int virNetlinkEventServiceLocalPid(void)
|
||||||
|
{
|
||||||
|
if (!(server && server->netlinknh)) {
|
||||||
|
netlinkError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||||
|
_("netlink event service not running"));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return (int)nl_socket_get_local_port(server->netlinknh);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* virNetlinkEventServiceStart:
|
* virNetlinkEventServiceStart:
|
||||||
*
|
*
|
||||||
|
@ -61,6 +61,11 @@ int virNetlinkEventServiceStart(void);
|
|||||||
*/
|
*/
|
||||||
bool virNetlinkEventServiceIsRunning(void);
|
bool virNetlinkEventServiceIsRunning(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* virNetlinkEventServiceLocalPid: returns nl_pid used to bind() netlink socket
|
||||||
|
*/
|
||||||
|
int virNetlinkEventServiceLocalPid(void);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* virNetlinkEventAddClient: register a callback for handling of netlink messages
|
* virNetlinkEventAddClient: register a callback for handling of netlink messages
|
||||||
*/
|
*/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user