Commit 702c651c4ae90ac399264c07aded66df2c0efacf
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
vl.c
@@ -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 */ |