/*
send a gratious arp
*/
-int ctdb_ctrl_gratious_arp(struct ctdb_context *ctdb,
- struct timeval timeout,
- uint32_t destnode,
- ctdb_sock_addr *addr,
- const char *ifname)
+int ctdb_ctrl_gratious_arp(struct ctdb_context *ctdb,
+ struct timeval timeout, uint32_t destnode,
+ ctdb_sock_addr *addr, const char *ifname)
{
TDB_DATA data;
int32_t res;
int ret, len;
- struct ctdb_control_gratious_arp *gratious_arp;
+ struct ctdb_addr_info_old *gratious_arp;
TALLOC_CTX *tmp_ctx = talloc_new(ctdb);
len = strlen(ifname)+1;
- gratious_arp = talloc_size(tmp_ctx,
- offsetof(struct ctdb_control_gratious_arp, iface) + len);
+ gratious_arp = talloc_size(tmp_ctx,
+ offsetof(struct ctdb_addr_info_old, iface) + len);
CTDB_NO_MEMORY(ctdb, gratious_arp);
gratious_arp->addr = *addr;
memcpy(&gratious_arp->iface[0], ifname, len);
- data.dsize = offsetof(struct ctdb_control_gratious_arp, iface) + len;
+ data.dsize = offsetof(struct ctdb_addr_info_old, iface) + len;
data.dptr = (unsigned char *)gratious_arp;
ret = ctdb_control(ctdb, destnode, 0, CTDB_CONTROL_SEND_GRATIOUS_ARP, 0, data, NULL,
/*
struct holding a ctdb_sock_addr and an interface name,
- used to add/remove public addresses
+ used to add/remove public addresses and grat arp
*/
struct ctdb_addr_info_old {
ctdb_sock_addr addr;
char iface[1];
};
-/*
- struct holding a ctdb_sock_addr and an interface name,
- used for send_gratious_arp
- */
-struct ctdb_control_gratious_arp {
- ctdb_sock_addr addr;
- uint32_t mask;
- uint32_t len;
- char iface[1];
-};
-
/*
structure used for CTDB_SRVID_NODE_FLAGS_CHANGED
*/
*/
int32_t ctdb_control_send_gratious_arp(struct ctdb_context *ctdb, TDB_DATA indata)
{
- struct ctdb_control_gratious_arp *gratious_arp = (struct ctdb_control_gratious_arp *)indata.dptr;
+ struct ctdb_addr_info_old *gratious_arp = (struct ctdb_addr_info_old *)indata.dptr;
struct control_gratious_arp *arp;
/* verify the size of indata */
- if (indata.dsize < offsetof(struct ctdb_control_gratious_arp, iface)) {
+ if (indata.dsize < offsetof(struct ctdb_addr_info_old, iface)) {
DEBUG(DEBUG_ERR,(__location__ " Too small indata to hold a ctdb_control_gratious_arp structure. Got %u require %u bytes\n",
(unsigned)indata.dsize,
- (unsigned)offsetof(struct ctdb_control_gratious_arp, iface)));
+ (unsigned)offsetof(struct ctdb_addr_info_old, iface)));
return -1;
}
if (indata.dsize !=
- ( offsetof(struct ctdb_control_gratious_arp, iface)
+ ( offsetof(struct ctdb_addr_info_old, iface)
+ gratious_arp->len ) ){
DEBUG(DEBUG_ERR,(__location__ " Wrong size of indata. Was %u bytes "
"but should be %u bytes\n",
(unsigned)indata.dsize,
- (unsigned)(offsetof(struct ctdb_control_gratious_arp, iface)+gratious_arp->len)));
+ (unsigned)(offsetof(struct ctdb_addr_info_old, iface)+gratious_arp->len)));
return -1;
}