controls: add stups for GET_PUBLIC_IP_INFO, GET_IFACES and SET_IFACE_LINK_STATE
authorStefan Metzmacher <metze@samba.org>
Wed, 16 Dec 2009 13:40:21 +0000 (14:40 +0100)
committerStefan Metzmacher <metze@samba.org>
Wed, 20 Jan 2010 10:10:59 +0000 (11:10 +0100)
metze

client/ctdb_client.c
include/ctdb_private.h
server/ctdb_control.c
server/ctdb_takeover.c

index 706d25fde111e93573d60c31189fb54a563a827b..3281ce468ae97f36958156d0308990e7d7c8793b 100644 (file)
@@ -2389,6 +2389,31 @@ int ctdb_ctrl_get_public_ipsv4(struct ctdb_context *ctdb,
        return 0;
 }
 
+int ctdb_ctrl_get_public_ip_info(struct ctdb_context *ctdb,
+                                struct timeval timeout, uint32_t destnode,
+                                TALLOC_CTX *mem_ctx,
+                                const ctdb_sock_addr *addr,
+                                struct ctdb_control_public_ip_info **info)
+{
+       return -1;
+}
+
+int ctdb_ctrl_get_ifaces(struct ctdb_context *ctdb,
+                        struct timeval timeout, uint32_t destnode,
+                        TALLOC_CTX *mem_ctx,
+                        struct ctdb_control_get_ifaces **ifaces)
+{
+       return -1;
+}
+
+int ctdb_ctrl_set_iface_link(struct ctdb_context *ctdb,
+                            struct timeval timeout, uint32_t destnode,
+                            TALLOC_CTX *mem_ctx,
+                            const struct ctdb_control_iface_info *info)
+{
+       return -1;
+}
+
 /*
   set/clear the permanent disabled bit on a remote node
  */
index b9ca5cb02bb3c6498e91b5febba3fcef86fe9798..953552a78654557db4789af4526447fee9be1ca4 100644 (file)
@@ -638,6 +638,9 @@ enum ctdb_controls {CTDB_CONTROL_PROCESS_EXISTS          = 0,
                    CTDB_CONTROL_GET_DB_SEQNUM           = 120,
                    CTDB_CONTROL_DB_SET_HEALTHY          = 121,
                    CTDB_CONTROL_DB_GET_HEALTH           = 122,
+                   CTDB_CONTROL_GET_PUBLIC_IP_INFO      = 123,
+                   CTDB_CONTROL_GET_IFACES              = 124,
+                   CTDB_CONTROL_SET_IFACE_LINK_STATE    = 125,
 };     
 
 /*
@@ -1320,6 +1323,53 @@ int ctdb_ctrl_get_public_ipsv4(struct ctdb_context *ctdb,
                        struct timeval timeout, uint32_t destnode, 
                        TALLOC_CTX *mem_ctx, struct ctdb_all_public_ips **ips);
 
+#ifdef IFNAMSIZ
+#define CTDB_IFACE_SIZE IFNAMSIZ
+#else
+#define CTDB_IFACE_SIZE 16
+#endif
+
+struct ctdb_control_iface_info {
+       char name[CTDB_IFACE_SIZE+2];
+       uint16_t link_state;
+       uint32_t references;
+};
+
+struct ctdb_control_public_ip_info {
+       struct ctdb_public_ip ip;
+       uint32_t active_idx;
+       uint32_t num;
+       struct ctdb_control_iface_info ifaces[1];
+};
+
+struct ctdb_control_get_ifaces {
+       uint32_t num;
+       struct ctdb_control_iface_info ifaces[1];
+};
+
+int32_t ctdb_control_get_public_ip_info(struct ctdb_context *ctdb,
+                                       struct ctdb_req_control *c,
+                                       TDB_DATA indata,
+                                       TDB_DATA *outdata);
+int32_t ctdb_control_get_ifaces(struct ctdb_context *ctdb,
+                               struct ctdb_req_control *c,
+                               TDB_DATA *outdata);
+int32_t ctdb_control_set_iface_link(struct ctdb_context *ctdb,
+                                   struct ctdb_req_control *c,
+                                   TDB_DATA indata);
+int ctdb_ctrl_get_public_ip_info(struct ctdb_context *ctdb,
+                                struct timeval timeout, uint32_t destnode,
+                                TALLOC_CTX *mem_ctx,
+                                const ctdb_sock_addr *addr,
+                                struct ctdb_control_public_ip_info **info);
+int ctdb_ctrl_get_ifaces(struct ctdb_context *ctdb,
+                        struct timeval timeout, uint32_t destnode,
+                        TALLOC_CTX *mem_ctx,
+                        struct ctdb_control_get_ifaces **ifaces);
+int ctdb_ctrl_set_iface_link(struct ctdb_context *ctdb,
+                            struct timeval timeout, uint32_t destnode,
+                            TALLOC_CTX *mem_ctx,
+                            const struct ctdb_control_iface_info *info);
 
 /* from takeover/system.c */
 uint32_t uint16_checksum(uint16_t *data, size_t n);
index a87855030951b9f9dddaebaa907e93774b0fba3a..b0c094950711e43536d51d9cf0afec07665aea9a 100644 (file)
@@ -568,6 +568,18 @@ static int32_t ctdb_control_dispatch(struct ctdb_context *ctdb,
                CHECK_CONTROL_DATA_SIZE(sizeof(uint32_t));
                return ctdb_control_db_get_health(ctdb, indata, outdata);
 
+       case CTDB_CONTROL_GET_PUBLIC_IP_INFO:
+               CHECK_CONTROL_DATA_SIZE(sizeof(ctdb_sock_addr));
+               return ctdb_control_get_public_ip_info(ctdb, c, indata, outdata);
+
+       case CTDB_CONTROL_GET_IFACES:
+               CHECK_CONTROL_DATA_SIZE(0);
+               return ctdb_control_get_ifaces(ctdb, c, outdata);
+
+       case CTDB_CONTROL_SET_IFACE_LINK_STATE:
+               CHECK_CONTROL_DATA_SIZE(sizeof(struct ctdb_control_iface_info));
+               return ctdb_control_set_iface_link(ctdb, c, indata);
+
        default:
                DEBUG(DEBUG_CRIT,(__location__ " Unknown CTDB control opcode %u\n", opcode));
                return -1;
index 0f8fd1cf1620a9b5812e37b0094f793da8425c0f..a5eb3b3488d7797e071bd36067fe9c74aa1d8a77 100644 (file)
@@ -1730,6 +1730,28 @@ int32_t ctdb_control_get_public_ipsv4(struct ctdb_context *ctdb,
        return 0;
 }
 
+int32_t ctdb_control_get_public_ip_info(struct ctdb_context *ctdb,
+                                       struct ctdb_req_control *c,
+                                       TDB_DATA indata,
+                                       TDB_DATA *outdata)
+{
+       return -1;
+}
+
+int32_t ctdb_control_get_ifaces(struct ctdb_context *ctdb,
+                               struct ctdb_req_control *c,
+                               TDB_DATA *outdata)
+{
+       return -1;
+}
+
+int32_t ctdb_control_set_iface_link(struct ctdb_context *ctdb,
+                                   struct ctdb_req_control *c,
+                                   TDB_DATA indata)
+{
+       return -1;
+}
+
 
 /* 
    structure containing the listening socket and the list of tcp connections