@echo Linking $@
@$(CC) $(CFLAGS) -o $@ scsi/scsi_io.o $(CTDB_CLIENT_OBJ) $(LIB_FLAGS)
-bin/ctdb: $(CLIENT_OBJS) tools/ctdb.o
+bin/ctdb: $(CLIENT_OBJS) tools/ctdb.o takeover/system.o
@echo Linking $@
- @$(CC) $(CFLAGS) -o $@ tools/ctdb.o $(CTDB_CLIENT_OBJ) $(LIB_FLAGS)
+ @$(CC) $(CFLAGS) -o $@ tools/ctdb.o takeover/system.o $(CTDB_CLIENT_OBJ) $(LIB_FLAGS)
bin/socketkiller: $(CLIENT_OBJS) tools/socketkiller.o
@echo Linking $@
return 0;
}
+/*
+ kill a tcp connection
+ */
+static int kill_tcp(struct ctdb_context *ctdb, int argc, const char **argv)
+{
+ int i, ret;
+ struct sockaddr_in src, dst;
+
+ if (argc < 4) {
+ usage();
+ }
+
+ src.sin_family=AF_INET;
+ src.sin_port=htons(atoi(argv[1]));
+ inet_aton(argv[0], &src.sin_addr);
+
+ dst.sin_family=AF_INET;
+ dst.sin_port=htons(atoi(argv[3]));
+ inet_aton(argv[2], &dst.sin_addr);
+
+ for (i=0;i<5;i++) {
+ ret = ctdb_sys_kill_tcp(ctdb->ev, &src, &dst);
+
+ printf("ret:%d\n", ret);
+ if (ret==0) {
+ return 0;
+ }
+ }
+
+ return -1;
+}
+
/*
display public ip status
*/
{ "recover", control_recover, true, "force recovery" },
{ "freeze", control_freeze, true, "freeze all databases" },
{ "thaw", control_thaw, true, "thaw all databases" },
+ { "killtcp", kill_tcp, false, "kill a tcp connection", "<srcip> <srcport> <dstip> <dstport>" },
};
/*