Ignore:
Timestamp:
Sep 10, 2009, 2:07:16 AM (15 years ago)
Author:
Bruno Cornec
Message:
  • Change NFS support into a NetFS support to allow for multiple protocol in addition to NFS (NEEDS TESTING)

(Backport from 2.2.9)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2.2.10/mondo/src/common/libmondo-files.c

    r2379 r2382  
    10591059
    10601060/**
    1061  * Store the client's NFS configuration in files to be restored at restore-time.
    1062  * Assumes that @c bkpinfo->media_type = nfs, but does not check for this.
     1061 * Store the client's NETFS configuration in files to be restored at restore-time.
     1062 * Assumes that @c bkpinfo->media_type = netfs, but does not check for this.
    10631063 * @param bkpinfo The backup information structure. Fields used:
    1064  * - @c nfs_mount
    1065  * - @c nfs_remote_dir
     1064 * - @c netfs_mount
     1065 * - @c netfs_remote_dir
    10661066 * - @c tmpdir
    10671067 */
    1068 void store_nfs_config()
     1068void store_netfs_config()
    10691069{
    10701070
    10711071    /*@ buffers ******** */
    1072     char *nfs_dev = NULL;
     1072    char *netfs_dev = NULL;
    10731073    char *mac_addr = NULL;
    1074     char *nfs_mount = NULL;
    1075     char *nfs_client_ipaddr = NULL;
    1076     char *nfs_client_netmask = NULL;
    1077     char *nfs_client_broadcast = NULL;
    1078     char *nfs_client_defgw = NULL;
    1079     char *nfs_server_ipaddr = NULL;
     1074    char *netfs_mount = NULL;
     1075    char *netfs_client_ipaddr = NULL;
     1076    char *netfs_client_netmask = NULL;
     1077    char *netfs_client_broadcast = NULL;
     1078    char *netfs_client_defgw = NULL;
     1079    char *netfs_server_ipaddr = NULL;
    10801080    char *tmp = NULL;
    10811081    char *command = NULL;
     
    10841084    char *p;
    10851085
    1086     if (! bkpinfo->nfs_mount) {
    1087         fatal_error("No nfs_mount found !");
    1088     }
    1089 
    1090     log_it("Storing NFS configuration");
    1091     mr_asprintf(tmp, "%s", bkpinfo->nfs_mount);
     1086    if (! bkpinfo->netfs_mount) {
     1087        fatal_error("No netfs_mount found !");
     1088    }
     1089
     1090    log_it("Storing Network configuration");
     1091    mr_asprintf(tmp, "%s", bkpinfo->netfs_mount);
    10921092    p = strchr(tmp, ':');
    10931093    if (!p) {
    1094         fatal_error("NFS mount doesn't have a colon in it, e.g. 192.168.1.4:/home/nfs");
     1094        fatal_error("Network mount doesn't have a colon in it, e.g. 192.168.1.4:/home/nfs");
    10951095    }
    10961096    *(p++) = '\0';
    1097     mr_asprintf(nfs_server_ipaddr, "%s", tmp);
    1098     mr_asprintf(nfs_mount, "%s", p);
     1097    mr_asprintf(netfs_server_ipaddr, "%s", tmp);
     1098    mr_asprintf(netfs_mount, "%s", p);
    10991099    mr_free(tmp);
    11001100
    11011101    /* BERLIOS : there is a bug #67 here as it only considers the first NIC */
    11021102    mr_asprintf(command, "ifconfig | tr '\n' '#' | sed s/##// | tr '#' ' ' | tr '' '\n' | head -n1 | cut -d' ' -f1");
    1103     mr_asprintf(nfs_dev, "%s", call_program_and_get_last_line_of_output(command));
     1103    mr_asprintf(netfs_dev, "%s", call_program_and_get_last_line_of_output(command));
    11041104    mr_free(command);
    11051105
    11061106    mr_asprintf(command, "%s", "ifconfig | tr '\n' '#' | sed s/##// | tr '#' ' ' | tr '' '\\n' | head -n1 | tr -s '\t' ' ' | cut -d' ' -f7 | cut -d':' -f2");
    1107     mr_asprintf(nfs_client_ipaddr, "%s", call_program_and_get_last_line_of_output(command));
     1107    mr_asprintf(netfs_client_ipaddr, "%s", call_program_and_get_last_line_of_output(command));
    11081108    mr_free(command);
    11091109
    11101110    mr_asprintf(command, "%s", "ifconfig | tr '\n' '#' | sed s/##// | tr '#' ' ' | tr '' '\\n' | head -n1 | tr -s '\t' ' ' | cut -d' ' -f9 | cut -d':' -f2");
    1111     mr_asprintf(nfs_client_netmask, "%s", call_program_and_get_last_line_of_output(command));
     1111    mr_asprintf(netfs_client_netmask, "%s", call_program_and_get_last_line_of_output(command));
    11121112    mr_free(command);
    11131113
    11141114    mr_asprintf(command, "%s", "ifconfig | tr '\n' '#' | sed s/##// | tr '#' ' ' | tr '' '\\n' | head -n1 | tr -s '\t' ' ' | cut -d' ' -f8 | cut -d':' -f2");
    1115     mr_asprintf(nfs_client_broadcast, "%s", call_program_and_get_last_line_of_output(command));
     1115    mr_asprintf(netfs_client_broadcast, "%s", call_program_and_get_last_line_of_output(command));
    11161116    mr_free(command);
    11171117
    11181118    mr_asprintf(command, "%s", "route -n | grep '^0.0.0.0' | awk '{print $2}'");
    1119     mr_asprintf(nfs_client_defgw, "%s", call_program_and_get_last_line_of_output(command));
    1120     mr_free(command);
    1121 
    1122     if (strlen(nfs_dev) < 2) {
    1123         fatal_error
    1124             ("Unable to find ethN (eth0, eth1, ...) adapter via NFS mount you specified.");
    1125     }
     1119    mr_asprintf(netfs_client_defgw, "%s", call_program_and_get_last_line_of_output(command));
     1120    mr_free(command);
     1121
     1122    if (strlen(netfs_dev) < 2) {
     1123        fatal_error("Unable to find ethN (eth0, eth1, ...) adapter via Network mount you specified.");
     1124    }
     1125
    11261126    /********
    1127     * If the NFS device that found above is a bonded device,
     1127    * If the Network device that found above is a bonded device,
    11281128    * we need to replace it with an ethN device or the
    1129     * networking will not start during an NFS restore.
     1129    * networking will not start during an Network restore.
    11301130    *
    1131     * If the NFS device in nfs_dev begins with the word "bond", or alb or aft
    1132     * look for the corresponding slave ethN device and copy it to nfs_dev.
     1131    * If the Network device in netfs_dev begins with the word "bond", or alb or aft
     1132    * look for the corresponding slave ethN device and copy it to netfs_dev.
    11331133    * Using the common MAC address
    11341134    ********/
    1135     if (!strncmp(nfs_dev, "bond", 4) || !strncmp(nfs_dev, "alb", 3) || !strncmp(nfs_dev, "aft", 3)) {
    1136         log_to_screen("Found bonding device %s; looking for corresponding ethN slave device\n", nfs_dev);
    1137         mr_asprintf(command, "%s", "ifconfig %s | awk '{print $5}' | head -n1", nfs_dev);
     1135    if (!strncmp(netfs_dev, "bond", 4) || !strncmp(netfs_dev, "alb", 3) || !strncmp(netfs_dev, "aft", 3)) {
     1136        log_to_screen("Found bonding device %s; looking for corresponding ethN slave device\n", netfs_dev);
     1137        mr_asprintf(command, "%s", "ifconfig %s | awk '{print $5}' | head -n1", netfs_dev);
    11381138        mr_asprintf(mac_addr, "%s", call_program_and_get_last_line_of_output(command));
    11391139        mr_free(command);
    11401140
    1141         mr_asprintf(command, "ifconfig | grep -E '%s' | grep -v '%s' | head -n1 | cut -d' ' -f1", mac_addr,nfs_dev);
     1141        mr_asprintf(command, "ifconfig | grep -E '%s' | grep -v '%s' | head -n1 | cut -d' ' -f1", mac_addr,netfs_dev);
    11421142        mr_free(mac_addr);
    1143         mr_free(nfs_dev);
    1144 
    1145         mr_asprintf(nfs_dev, "%s", call_program_and_get_last_line_of_output(command));
     1143        mr_free(netfs_dev);
     1144
     1145        mr_asprintf(netfs_dev, "%s", call_program_and_get_last_line_of_output(command));
    11461146        mr_free(command);
    11471147
    1148         log_to_screen("Replacing it with %s\n", nfs_dev);
    1149     }
    1150 
    1151     mr_asprintf(tmp, "%s/NFS-DEV", bkpinfo->tmpdir);
    1152     write_one_liner_data_file(tmp, nfs_dev);
    1153     mr_free(nfs_dev);
    1154     mr_free(tmp);
    1155 
    1156     mr_asprintf(tmp, "%s/NFS-CLIENT-IPADDR", bkpinfo->tmpdir);
    1157     write_one_liner_data_file(tmp, nfs_client_ipaddr);
    1158     mr_free(nfs_client_ipaddr);
    1159     mr_free(tmp);
    1160 
    1161     mr_asprintf(tmp, "%s/NFS-CLIENT-NETMASK", bkpinfo->tmpdir);
    1162     write_one_liner_data_file(tmp, nfs_client_netmask);
    1163     mr_free(nfs_client_netmask);
    1164     mr_free(tmp);
    1165 
    1166     mr_asprintf(tmp, "%s/NFS-CLIENT-BROADCAST", bkpinfo->tmpdir);
    1167     write_one_liner_data_file(tmp, nfs_client_broadcast);
    1168     mr_free(nfs_client_broadcast);
    1169     mr_free(tmp);
    1170 
    1171     mr_asprintf(tmp, "%s/NFS-CLIENT-DEFGW", bkpinfo->tmpdir);
    1172     write_one_liner_data_file(tmp, nfs_client_defgw);
    1173     mr_free(nfs_client_defgw);
    1174     mr_free(tmp);
    1175 
    1176     mr_asprintf(tmp, "%s/NFS-SERVER-IPADDR", bkpinfo->tmpdir);
    1177     write_one_liner_data_file(tmp, nfs_server_ipaddr);
    1178     mr_free(tmp);
    1179     mr_free(nfs_server_ipaddr);
    1180 
    1181     mr_asprintf(tmp, "%s/NFS-SERVER-MOUNT", bkpinfo->tmpdir);
    1182     write_one_liner_data_file(tmp, bkpinfo->nfs_mount);
    1183     mr_free(tmp);
    1184     mr_free(nfs_mount);
    1185 
    1186     mr_asprintf(tmp, "%s/NFS-SERVER-PATH", bkpinfo->tmpdir);
    1187     write_one_liner_data_file(tmp, bkpinfo->nfs_remote_dir);
     1148        log_to_screen("Replacing it with %s\n", netfs_dev);
     1149    }
     1150
     1151    mr_asprintf(tmp, "%s/NETFS-DEV", bkpinfo->tmpdir);
     1152    write_one_liner_data_file(tmp, netfs_dev);
     1153    mr_free(netfs_dev);
     1154    mr_free(tmp);
     1155
     1156    mr_asprintf(tmp, "%s/NETFS-PROTO", bkpinfo->tmpdir);
     1157    write_one_liner_data_file(tmp, bkpinfo->netfs_proto);
     1158
     1159    mr_asprintf(tmp, "%s/NETFS-CLIENT-IPADDR", bkpinfo->tmpdir);
     1160    write_one_liner_data_file(tmp, netfs_client_ipaddr);
     1161    mr_free(netfs_client_ipaddr);
     1162    mr_free(tmp);
     1163
     1164    mr_asprintf(tmp, "%s/NETFS-CLIENT-NETMASK", bkpinfo->tmpdir);
     1165    write_one_liner_data_file(tmp, netfs_client_netmask);
     1166    mr_free(netfs_client_netmask);
     1167    mr_free(tmp);
     1168
     1169    mr_asprintf(tmp, "%s/NETFS-CLIENT-BROADCAST", bkpinfo->tmpdir);
     1170    write_one_liner_data_file(tmp, netfs_client_broadcast);
     1171    mr_free(netfs_client_broadcast);
     1172    mr_free(tmp);
     1173
     1174    mr_asprintf(tmp, "%s/NETFS-CLIENT-DEFGW", bkpinfo->tmpdir);
     1175    write_one_liner_data_file(tmp, netfs_client_defgw);
     1176    mr_free(netfs_client_defgw);
     1177    mr_free(tmp);
     1178
     1179    mr_asprintf(tmp, "%s/NETFS-SERVER-IPADDR", bkpinfo->tmpdir);
     1180    write_one_liner_data_file(tmp, netfs_server_ipaddr);
     1181    mr_free(tmp);
     1182    mr_free(netfs_server_ipaddr);
     1183
     1184    mr_asprintf(tmp, "%s/NETFS-SERVER-MOUNT", bkpinfo->tmpdir);
     1185    write_one_liner_data_file(tmp, bkpinfo->netfs_mount);
     1186    mr_free(tmp);
     1187    mr_free(netfs_mount);
     1188
     1189    mr_asprintf(tmp, "%s/NETFS-SERVER-PATH", bkpinfo->tmpdir);
     1190    write_one_liner_data_file(tmp, bkpinfo->netfs_remote_dir);
    11881191    mr_free(tmp);
    11891192
     
    11921195    mr_free(tmp);
    11931196
    1194     log_it("Finished storing NFS configuration");
     1197    log_it("Finished storing Network configuration");
    11951198}
    11961199
Note: See TracChangeset for help on using the changeset viewer.