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 1600 "Network options:\n"
1601 1601 "-n script set network init script [default=%s]\n"
1602 1602 "-nics n simulate 'n' network interfaces [default=1]\n"
  1603 + "-macaddr addr set the mac address of the first interface\n"
1603 1604 "-tun-fd fd0[,...] use these fds as already opened tap/tun interfaces\n"
1604 1605 "\n"
1605 1606 "Linux boot specific:\n"
... ... @@ -1655,6 +1656,7 @@ struct option long_options[] = {
1655 1656 { "fdb", 1, NULL, 0, },
1656 1657 { "no-code-copy", 0, NULL, 0 },
1657 1658 { "nics", 1, NULL, 0 },
  1659 + { "macaddr", 1, NULL, 0 },
1658 1660 { NULL, 0, NULL, 0 },
1659 1661 };
1660 1662  
... ... @@ -1692,6 +1694,7 @@ int main(int argc, char **argv)
1692 1694 const char *kernel_filename, *kernel_cmdline;
1693 1695 DisplayState *ds = &display_state;
1694 1696 int cyls, heads, secs;
  1697 + uint8_t macaddr[6];
1695 1698  
1696 1699 #if !defined(CONFIG_SOFTMMU)
1697 1700 /* we never want that malloc() uses mmap() */
... ... @@ -1717,17 +1720,13 @@ int main(int argc, char **argv)
1717 1720 cyls = heads = secs = 0;
1718 1721  
1719 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 1731 for(;;) {
1733 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 1834 exit(1);
1836 1835 }
1837 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 1859 break;
1840 1860 case 'h':
... ... @@ -1912,6 +1932,17 @@ int main(int argc, char **argv)
1912 1932 #endif
1913 1933  
1914 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 1946 net_init();
1916 1947  
1917 1948 /* init the memory */
... ...