Commit 702c651c4ae90ac399264c07aded66df2c0efacf

Authored by bellard
1 parent 1154e441

added -macaddr option


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@697 c046a42c-6fe2-441c-8c8c-71466251a162
Showing 1 changed file with 42 additions and 11 deletions
@@ -1600,6 +1600,7 @@ void help(void) @@ -1600,6 +1600,7 @@ void help(void)
1600 "Network options:\n" 1600 "Network options:\n"
1601 "-n script set network init script [default=%s]\n" 1601 "-n script set network init script [default=%s]\n"
1602 "-nics n simulate 'n' network interfaces [default=1]\n" 1602 "-nics n simulate 'n' network interfaces [default=1]\n"
  1603 + "-macaddr addr set the mac address of the first interface\n"
1603 "-tun-fd fd0[,...] use these fds as already opened tap/tun interfaces\n" 1604 "-tun-fd fd0[,...] use these fds as already opened tap/tun interfaces\n"
1604 "\n" 1605 "\n"
1605 "Linux boot specific:\n" 1606 "Linux boot specific:\n"
@@ -1655,6 +1656,7 @@ struct option long_options[] = { @@ -1655,6 +1656,7 @@ struct option long_options[] = {
1655 { "fdb", 1, NULL, 0, }, 1656 { "fdb", 1, NULL, 0, },
1656 { "no-code-copy", 0, NULL, 0 }, 1657 { "no-code-copy", 0, NULL, 0 },
1657 { "nics", 1, NULL, 0 }, 1658 { "nics", 1, NULL, 0 },
  1659 + { "macaddr", 1, NULL, 0 },
1658 { NULL, 0, NULL, 0 }, 1660 { NULL, 0, NULL, 0 },
1659 }; 1661 };
1660 1662
@@ -1692,6 +1694,7 @@ int main(int argc, char **argv) @@ -1692,6 +1694,7 @@ int main(int argc, char **argv)
1692 const char *kernel_filename, *kernel_cmdline; 1694 const char *kernel_filename, *kernel_cmdline;
1693 DisplayState *ds = &display_state; 1695 DisplayState *ds = &display_state;
1694 int cyls, heads, secs; 1696 int cyls, heads, secs;
  1697 + uint8_t macaddr[6];
1695 1698
1696 #if !defined(CONFIG_SOFTMMU) 1699 #if !defined(CONFIG_SOFTMMU)
1697 /* we never want that malloc() uses mmap() */ 1700 /* we never want that malloc() uses mmap() */
@@ -1717,17 +1720,13 @@ int main(int argc, char **argv) @@ -1717,17 +1720,13 @@ int main(int argc, char **argv)
1717 cyls = heads = secs = 0; 1720 cyls = heads = secs = 0;
1718 1721
1719 nb_nics = 1; 1722 nb_nics = 1;
1720 - for(i = 0; i < MAX_NICS; i++) {  
1721 - NetDriverState *nd = &nd_table[i];  
1722 - nd->fd = -1;  
1723 - /* init virtual mac address */  
1724 - nd->macaddr[0] = 0x52;  
1725 - nd->macaddr[1] = 0x54;  
1726 - nd->macaddr[2] = 0x00;  
1727 - nd->macaddr[3] = 0x12;  
1728 - nd->macaddr[4] = 0x34;  
1729 - nd->macaddr[5] = 0x56 + i;  
1730 - } 1723 + /* default mac address of the first network interface */
  1724 + macaddr[0] = 0x52;
  1725 + macaddr[1] = 0x54;
  1726 + macaddr[2] = 0x00;
  1727 + macaddr[3] = 0x12;
  1728 + macaddr[4] = 0x34;
  1729 + macaddr[5] = 0x56;
1731 1730
1732 for(;;) { 1731 for(;;) {
1733 c = getopt_long_only(argc, argv, "hm:d:n:sp:L:", long_options, &long_index); 1732 c = getopt_long_only(argc, argv, "hm:d:n:sp:L:", long_options, &long_index);
@@ -1835,6 +1834,27 @@ int main(int argc, char **argv) @@ -1835,6 +1834,27 @@ int main(int argc, char **argv)
1835 exit(1); 1834 exit(1);
1836 } 1835 }
1837 break; 1836 break;
  1837 + case 17:
  1838 + {
  1839 + const char *p;
  1840 + int i;
  1841 + p = optarg;
  1842 + for(i = 0; i < 6; i++) {
  1843 + macaddr[i] = strtol(p, (char **)&p, 16);
  1844 + if (i == 5) {
  1845 + if (*p != '\0')
  1846 + goto macaddr_error;
  1847 + } else {
  1848 + if (*p != ':') {
  1849 + macaddr_error:
  1850 + fprintf(stderr, "qemu: invalid syntax for ethernet address\n");
  1851 + exit(1);
  1852 + }
  1853 + p++;
  1854 + }
  1855 + }
  1856 + }
  1857 + break;
1838 } 1858 }
1839 break; 1859 break;
1840 case 'h': 1860 case 'h':
@@ -1912,6 +1932,17 @@ int main(int argc, char **argv) @@ -1912,6 +1932,17 @@ int main(int argc, char **argv)
1912 #endif 1932 #endif
1913 1933
1914 /* init host network redirectors */ 1934 /* init host network redirectors */
  1935 + for(i = 0; i < MAX_NICS; i++) {
  1936 + NetDriverState *nd = &nd_table[i];
  1937 + nd->fd = -1;
  1938 + /* init virtual mac address */
  1939 + nd->macaddr[0] = macaddr[0];
  1940 + nd->macaddr[1] = macaddr[1];
  1941 + nd->macaddr[2] = macaddr[2];
  1942 + nd->macaddr[3] = macaddr[3];
  1943 + nd->macaddr[4] = macaddr[4];
  1944 + nd->macaddr[5] = macaddr[5] + i;
  1945 + }
1915 net_init(); 1946 net_init();
1916 1947
1917 /* init the memory */ 1948 /* init the memory */