Browse Source

Import from Debian jessie/main package network-manager-0.9.10.0

master
Jaromil 8 years ago
commit
a6385385d9
  1. 1068
      ABOUT-NLS
  2. 6
      AUTHORS
  3. 41
      CONTRIBUTING
  4. 351
      COPYING
  5. 22187
      ChangeLog
  6. 370
      INSTALL
  7. 65
      Makefile.am
  8. 169
      Makefile.glib
  9. 1270
      Makefile.in
  10. 520
      NEWS
  11. 13
      NetworkManager.pc.in
  12. 85
      README
  13. 356
      TODO
  14. 1392
      aclocal.m4
  15. 39
      autogen.sh
  16. 347
      build-aux/compile
  17. 1535
      build-aux/config.guess
  18. 666
      build-aux/config.rpath
  19. 1790
      build-aux/config.sub
  20. 791
      build-aux/depcomp
  21. 527
      build-aux/install-sh
  22. 9655
      build-aux/ltmain.sh
  23. 215
      build-aux/missing
  24. 6
      callouts/77-nm-olpc-mesh.rules
  25. 103
      callouts/Makefile.am
  26. 1124
      callouts/Makefile.in
  27. 144
      callouts/nm-avahi-autoipd-action.c
  28. 13
      callouts/nm-avahi-autoipd.conf
  29. 63
      callouts/nm-dispatcher-api.h
  30. 475
      callouts/nm-dispatcher-utils.c
  31. 41
      callouts/nm-dispatcher-utils.h
  32. 748
      callouts/nm-dispatcher.c
  33. 14
      callouts/nm-dispatcher.conf
  34. 95
      callouts/nm-dispatcher.xml
  35. 6
      callouts/org.freedesktop.nm_dispatcher.service.in
  36. 38
      callouts/tests/Makefile.am
  37. 759
      callouts/tests/Makefile.in
  38. 20
      callouts/tests/dispatcher-old-down
  39. 56
      callouts/tests/dispatcher-old-up
  40. 55
      callouts/tests/dispatcher-old-vpn-down
  41. 55
      callouts/tests/dispatcher-old-vpn-up
  42. 659
      callouts/tests/test-dispatcher-envp.c
  43. 2
      cli/Makefile.am
  44. 753
      cli/Makefile.in
  45. 2
      cli/completion/Makefile.am
  46. 630
      cli/completion/Makefile.in
  47. 1236
      cli/completion/nmcli
  48. 40
      cli/src/Makefile.am
  49. 809
      cli/src/Makefile.in
  50. 1168
      cli/src/common.c
  51. 66
      cli/src/common.h
  52. 8706
      cli/src/connections.c
  53. 27
      cli/src/connections.h
  54. 2718
      cli/src/devices.c
  55. 27
      cli/src/devices.h
  56. 917
      cli/src/network-manager.c
  57. 29
      cli/src/network-manager.h
  58. 449
      cli/src/nmcli.c
  59. 140
      cli/src/nmcli.h
  60. 7333
      cli/src/settings.c
  61. 89
      cli/src/settings.h
  62. 1128
      cli/src/utils.c
  63. 97
      cli/src/utils.h
  64. 234
      config.h.in
  65. 27429
      configure
  66. 926
      configure.ac
  67. 62
      data/Makefile.am
  68. 730
      data/Makefile.in
  69. 15
      data/NetworkManager-dispatcher.service.in
  70. 13
      data/NetworkManager-wait-online-systemd-pre200.service.in
  71. 13
      data/NetworkManager-wait-online.service.in
  72. 17
      data/NetworkManager.service.in
  73. 11
      data/org.freedesktop.NetworkManager.service.in
  74. 16
      data/server.conf.in
  75. 7
      debian/60-network-manager.rules
  76. 5
      debian/NetworkManager.conf
  77. 1845
      debian/changelog
  78. 1
      debian/compat
  79. 245
      debian/control
  80. 49
      debian/copyright
  81. 3
      debian/gbp.conf
  82. 1
      debian/gir1.2-networkmanager-1.0.install
  83. 66
      debian/ifblacklist_migrate.sh
  84. 18
      debian/libnm-glib-dev.install
  85. 4
      debian/libnm-glib-vpn-dev.install
  86. 1
      debian/libnm-glib-vpn1.install
  87. 25
      debian/libnm-glib-vpn1.symbols
  88. 1
      debian/libnm-glib4.install
  89. 298
      debian/libnm-glib4.symbols
  90. 9
      debian/libnm-util-dev.install
  91. 1
      debian/libnm-util2.install
  92. 658
      debian/libnm-util2.symbols
  93. 5
      debian/network-manager-dev.install
  94. 76
      debian/network-manager-dispatcher.script
  95. 17
      debian/network-manager.NEWS
  96. 66
      debian/network-manager.README.Debian
  97. 4
      debian/network-manager.dirs
  98. 3
      debian/network-manager.docs
  99. 1
      debian/network-manager.examples
  100. 83
      debian/network-manager.init

1068
ABOUT-NLS

File diff suppressed because it is too large

6
AUTHORS

@ -0,0 +1,6 @@
Current authors:
Dan Williams <dcbw@redhat.com>
Tambet Ingo <tambet@gmail.com>
Previous authors:
Robert Love <rml@novell.com>

41
CONTRIBUTING

@ -0,0 +1,41 @@
Guidelines for Contributing:
1) Platform-specific functionality (for example, location of binaries that
NetworkManager calls, or functionality used only on some platforms or
distribution, like resolvconf) should be configurable at build time, with the
normal autoconf mechanisms for putting a #define in config.h (AC_DEFINE), then
with #ifdef MY_DEFINE / #endif in the code.
2) Coding standards are generally GNOME coding standards, with these exceptions:
a) 4 space tabs (_not_ 8-space tabs)
b) REAL tabs (_not_ a mix of tabs and spaces in the initial indent)
c) spaces used to align continuation lines past the indent point of the
first statement line, like so:
if (some_really_really_long_variable_name &&
another_really_really_long_variable_name) {
...
}
* Keep a space between the function name and the opening '('.
GOOD: g_strdup (x)
BAD: g_strdup(x)
* C-style comments, except for FIXMEs.
GOOD: f(x); /* comment */
BAD: f(x); // comment
GOOD: // FIXME: juice the gooblygok
BAD: /* FIXME: juice the gooblygok */
* Keep assignments in the variable declaration area pretty short.
GOOD: MyObject *object;
BAD: MyObject *object = complex_and_long_init_function(arg1, arg2, arg3);
* 80-cols is a guideline, don't make the code uncomfortable in order to fit in
less than 80 cols.
* Constants are CAPS_WITH_UNDERSCORES and use the preprocessor.
GOOD: #define MY_CONSTANT 42
BAD: static const unsigned myConstant = 42;

351
COPYING

@ -0,0 +1,351 @@
Unless a COPYING file in a subdirectory or file-specific license headers
specify a different license, the following applies to all files in this
directory and all subdirectories.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.

22187
ChangeLog

File diff suppressed because it is too large

370
INSTALL

@ -0,0 +1,370 @@
Installation Instructions
*************************
Copyright (C) 1994-1996, 1999-2002, 2004-2013 Free Software Foundation,
Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved. This file is offered as-is,
without warranty of any kind.
Basic Installation
==================
Briefly, the shell commands `./configure; make; make install' should
configure, build, and install this package. The following
more-detailed instructions are generic; see the `README' file for
instructions specific to this package. Some packages provide this
`INSTALL' file but do not implement all of the features documented
below. The lack of an optional feature in a given package is not
necessarily a bug. More recommendations for GNU packages can be found
in *note Makefile Conventions: (standards)Makefile Conventions.
The `configure' shell script attempts to guess correct values for
various system-dependent variables used during compilation. It uses
those values to create a `Makefile' in each directory of the package.
It may also create one or more `.h' files containing system-dependent
definitions. Finally, it creates a shell script `config.status' that
you can run in the future to recreate the current configuration, and a
file `config.log' containing compiler output (useful mainly for
debugging `configure').
It can also use an optional file (typically called `config.cache'
and enabled with `--cache-file=config.cache' or simply `-C') that saves
the results of its tests to speed up reconfiguring. Caching is
disabled by default to prevent problems with accidental use of stale
cache files.
If you need to do unusual things to compile the package, please try
to figure out how `configure' could check whether to do them, and mail
diffs or instructions to the address given in the `README' so they can
be considered for the next release. If you are using the cache, and at
some point `config.cache' contains results you don't want to keep, you
may remove or edit it.
The file `configure.ac' (or `configure.in') is used to create
`configure' by a program called `autoconf'. You need `configure.ac' if
you want to change it or regenerate `configure' using a newer version
of `autoconf'.
The simplest way to compile this package is:
1. `cd' to the directory containing the package's source code and type
`./configure' to configure the package for your system.
Running `configure' might take a while. While running, it prints
some messages telling which features it is checking for.
2. Type `make' to compile the package.
3. Optionally, type `make check' to run any self-tests that come with
the package, generally using the just-built uninstalled binaries.
4. Type `make install' to install the programs and any data files and
documentation. When installing into a prefix owned by root, it is
recommended that the package be configured and built as a regular
user, and only the `make install' phase executed with root
privileges.
5. Optionally, type `make installcheck' to repeat any self-tests, but
this time using the binaries in their final installed location.
This target does not install anything. Running this target as a
regular user, particularly if the prior `make install' required
root privileges, verifies that the installation completed
correctly.
6. You can remove the program binaries and object files from the
source code directory by typing `make clean'. To also remove the
files that `configure' created (so you can compile the package for
a different kind of computer), type `make distclean'. There is
also a `make maintainer-clean' target, but that is intended mainly
for the package's developers. If you use it, you may have to get
all sorts of other programs in order to regenerate files that came
with the distribution.
7. Often, you can also type `make uninstall' to remove the installed
files again. In practice, not all packages have tested that
uninstallation works correctly, even though it is required by the
GNU Coding Standards.
8. Some packages, particularly those that use Automake, provide `make
distcheck', which can by used by developers to test that all other
targets like `make install' and `make uninstall' work correctly.
This target is generally not run by end users.
Compilers and Options
=====================
Some systems require unusual options for compilation or linking that
the `configure' script does not know about. Run `./configure --help'
for details on some of the pertinent environment variables.
You can give `configure' initial values for configuration parameters
by setting variables in the command line or in the environment. Here
is an example:
./configure CC=c99 CFLAGS=-g LIBS=-lposix
*Note Defining Variables::, for more details.
Compiling For Multiple Architectures
====================================
You can compile the package for more than one kind of computer at the
same time, by placing the object files for each architecture in their
own directory. To do this, you can use GNU `make'. `cd' to the
directory where you want the object files and executables to go and run
the `configure' script. `configure' automatically checks for the
source code in the directory that `configure' is in and in `..'. This
is known as a "VPATH" build.
With a non-GNU `make', it is safer to compile the package for one
architecture at a time in the source code directory. After you have
installed the package for one architecture, use `make distclean' before
reconfiguring for another architecture.
On MacOS X 10.5 and later systems, you can create libraries and
executables that work on multiple system types--known as "fat" or
"universal" binaries--by specifying multiple `-arch' options to the
compiler but only a single `-arch' option to the preprocessor. Like
this:
./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
CPP="gcc -E" CXXCPP="g++ -E"
This is not guaranteed to produce working output in all cases, you
may have to build one architecture at a time and combine the results
using the `lipo' tool if you have problems.
Installation Names
==================
By default, `make install' installs the package's commands under
`/usr/local/bin', include files under `/usr/local/include', etc. You
can specify an installation prefix other than `/usr/local' by giving
`configure' the option `--prefix=PREFIX', where PREFIX must be an
absolute file name.
You can specify separate installation prefixes for
architecture-specific files and architecture-independent files. If you
pass the option `--exec-prefix=PREFIX' to `configure', the package uses
PREFIX as the prefix for installing programs and libraries.
Documentation and other data files still use the regular prefix.
In addition, if you use an unusual directory layout you can give
options like `--bindir=DIR' to specify different values for particular
kinds of files. Run `configure --help' for a list of the directories
you can set and what kinds of files go in them. In general, the
default for these options is expressed in terms of `${prefix}', so that
specifying just `--prefix' will affect all of the other directory
specifications that were not explicitly provided.
The most portable way to affect installation locations is to pass the
correct locations to `configure'; however, many packages provide one or
both of the following shortcuts of passing variable assignments to the
`make install' command line to change installation locations without
having to reconfigure or recompile.
The first method involves providing an override variable for each
affected directory. For example, `make install
prefix=/alternate/directory' will choose an alternate location for all
directory configuration variables that were expressed in terms of
`${prefix}'. Any directories that were specified during `configure',
but not in terms of `${prefix}', must each be overridden at install
time for the entire installation to be relocated. The approach of
makefile variable overrides for each directory variable is required by
the GNU Coding Standards, and ideally causes no recompilation.
However, some platforms have known limitations with the semantics of
shared libraries that end up requiring recompilation when using this
method, particularly noticeable in packages that use GNU Libtool.
The second method involves providing the `DESTDIR' variable. For
example, `make install DESTDIR=/alternate/directory' will prepend
`/alternate/directory' before all installation names. The approach of
`DESTDIR' overrides is not required by the GNU Coding Standards, and
does not work on platforms that have drive letters. On the other hand,
it does better at avoiding recompilation issues, and works well even
when some directory options were not specified in terms of `${prefix}'
at `configure' time.
Optional Features
=================
If the package supports it, you can cause programs to be installed
with an extra prefix or suffix on their names by giving `configure' the
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
Some packages pay attention to `--enable-FEATURE' options to
`configure', where FEATURE indicates an optional part of the package.
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
is something like `gnu-as' or `x' (for the X Window System). The
`README' should mention any `--enable-' and `--with-' options that the
package recognizes.
For packages that use the X Window System, `configure' can usually
find the X include and library files automatically, but if it doesn't,
you can use the `configure' options `--x-includes=DIR' and
`--x-libraries=DIR' to specify their locations.
Some packages offer the ability to configure how verbose the
execution of `make' will be. For these packages, running `./configure
--enable-silent-rules' sets the default to minimal output, which can be
overridden with `make V=1'; while running `./configure
--disable-silent-rules' sets the default to verbose, which can be
overridden with `make V=0'.
Particular systems
==================
On HP-UX, the default C compiler is not ANSI C compatible. If GNU
CC is not installed, it is recommended to use the following options in
order to use an ANSI C compiler:
./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
and if that doesn't work, install pre-built binaries of GCC for HP-UX.
HP-UX `make' updates targets which have the same time stamps as
their prerequisites, which makes it generally unusable when shipped
generated files such as `configure' are involved. Use GNU `make'
instead.
On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
parse its `<wchar.h>' header file. The option `-nodtk' can be used as
a workaround. If GNU CC is not installed, it is therefore recommended
to try
./configure CC="cc"
and if that doesn't work, try
./configure CC="cc -nodtk"
On Solaris, don't put `/usr/ucb' early in your `PATH'. This
directory contains several dysfunctional programs; working variants of
these programs are available in `/usr/bin'. So, if you need `/usr/ucb'
in your `PATH', put it _after_ `/usr/bin'.
On Haiku, software installed for all users goes in `/boot/common',
not `/usr/local'. It is recommended to use the following options:
./configure --prefix=/boot/common
Specifying the System Type
==========================
There may be some features `configure' cannot figure out
automatically, but needs to determine by the type of machine the package
will run on. Usually, assuming the package is built to be run on the
_same_ architectures, `configure' can figure that out, but if it prints
a message saying it cannot guess the machine type, give it the
`--build=TYPE' option. TYPE can either be a short name for the system
type, such as `sun4', or a canonical name which has the form:
CPU-COMPANY-SYSTEM
where SYSTEM can have one of these forms:
OS
KERNEL-OS
See the file `config.sub' for the possible values of each field. If
`config.sub' isn't included in this package, then this package doesn't
need to know the machine type.
If you are _building_ compiler tools for cross-compiling, you should
use the option `--target=TYPE' to select the type of system they will
produce code for.
If you want to _use_ a cross compiler, that generates code for a
platform different from the build platform, you should specify the
"host" platform (i.e., that on which the generated programs will
eventually be run) with `--host=TYPE'.
Sharing Defaults
================
If you want to set default values for `configure' scripts to share,
you can create a site shell script called `config.site' that gives
default values for variables like `CC', `cache_file', and `prefix'.
`configure' looks for `PREFIX/share/config.site' if it exists, then
`PREFIX/etc/config.site' if it exists. Or, you can set the
`CONFIG_SITE' environment variable to the location of the site script.
A warning: not all `configure' scripts look for a site script.
Defining Variables
==================
Variables not defined in a site shell script can be set in the
environment passed to `configure'. However, some packages may run
configure again during the build, and the customized values of these
variables may be lost. In order to avoid this problem, you should set
them in the `configure' command line, using `VAR=value'. For example:
./configure CC=/usr/local2/bin/gcc
causes the specified `gcc' to be used as the C compiler (unless it is
overridden in the site shell script).
Unfortunately, this technique does not work for `CONFIG_SHELL' due to
an Autoconf limitation. Until the limitation is lifted, you can use
this workaround:
CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash
`configure' Invocation
======================
`configure' recognizes the following options to control how it
operates.
`--help'
`-h'
Print a summary of all of the options to `configure', and exit.
`--help=short'
`--help=recursive'
Print a summary of the options unique to this package's
`configure', and exit. The `short' variant lists options used
only in the top level, while the `recursive' variant lists options
also present in any nested packages.
`--version'
`-V'
Print the version of Autoconf used to generate the `configure'
script, and exit.
`--cache-file=FILE'
Enable the cache: use and save the results of the tests in FILE,
traditionally `config.cache'. FILE defaults to `/dev/null' to
disable caching.
`--config-cache'
`-C'
Alias for `--cache-file=config.cache'.
`--quiet'
`--silent'
`-q'
Do not print messages saying which checks are being made. To
suppress all normal output, redirect it to `/dev/null' (any error
messages will still be shown).
`--srcdir=DIR'
Look for the package's source code in directory DIR. Usually
`configure' can determine that directory automatically.
`--prefix=DIR'
Use DIR as the installation prefix. *note Installation Names::
for more details, including other options available for fine-tuning
the installation locations.
`--no-create'
`-n'
Run the configure checks, but stop before creating any output
files.
`configure' also accepts some other, not widely useful, options. Run
`configure --help' for more details.

65
Makefile.am

@ -0,0 +1,65 @@
include $(GLIB_MAKEFILE)
SUBDIRS = \
. \
include \
libnm-util \
libnm-glib \
introspection \
src \
callouts \
cli \
tui \
tools \
policy \
data \
test \
po \
docs \
man \
examples \
vapi
@GNOME_CODE_COVERAGE_RULES@
EXTRA_DIST = \
CONTRIBUTING \
NetworkManager.pc.in \
intltool-extract.in \
intltool-merge.in \
intltool-update.in \
Makefile.glib \
autogen.sh \
valgrind.suppressions
DISTCHECK_CONFIGURE_FLAGS = \
--enable-tests=yes \
--with-valgrind=no \
--enable-gtk-doc \
--enable-more-warnings=yes \
--with-udev-dir=$$dc_install_base/lib/udev \
--with-wext=no \
--enable-ifcfg-rh \
--enable-ifcfg-suse \
--enable-ifupdown \
--enable-ifnet
DISTCLEANFILES = intltool-extract intltool-merge intltool-update
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = NetworkManager.pc
ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
CLEANFILES = cscope.in.out cscope.out cscope.po.out
cscope:
cscope -b -q -R -Iinclude -ssrc -slibnm-glib -slibnm-util -scli/src;
libgsystem_srcpath := libgsystem
libgsystem_cflags := $(filter-out -DGLIB_VERSION%,$(GLIB_CFLAGS)) -I$(srcdir)/libgsystem
libgsystem_libs = $(GLIB_LIBS)
include libgsystem/Makefile-libgsystem.am
noinst_LTLIBRARIES = libgsystem.la
.PHONY: cscope

169
Makefile.glib

@ -0,0 +1,169 @@
# -*- Mode: makefile -*-
#
# Work-in-progress...
# See https://bugzilla.gnome.org/show_bug.cgi?id=654395
_GLIB_CLEANFILES =
_GLIB_DISTCLEANFILES =
_GLIB_V_GEN = $(_glib_v_gen_$(V))
_glib_v_gen_ = $(_glib_v_gen_$(AM_DEFAULT_VERBOSITY))
_glib_v_gen_0 = @echo " GEN " $(subst .stamp,,$@);
### glib-genmarshal
_GLIB_MARSHAL_GENERATED = $(subst .h,,$(filter %marshal.h,$(GLIB_GENERATED)))
_glib_marshal_prefix = $(subst marshal,,$(subst _marshal,,$(subst -,_,$(notdir $(1)))))_marshal
_glib_marshal_sources_var = $(subst -,_,$(notdir $(1)))_sources
_glib_marshal_sources = $(filter-out %.h,$(filter-out $(GLIB_GENERATED),$($(_glib_marshal_sources_var))))
define _glib_make_genmarshal_rules
$(if $(_glib_marshal_sources),,$(error Need to define $(_glib_marshal_sources_var) for $(1).[ch]))
$(1).list.stamp: $(_glib_marshal_sources) Makefile
$$(_GLIB_V_GEN) LC_ALL=C sed -ne 's/.*_$(_glib_marshal_prefix)_\([_A-Z]*\).*/\1/p' $$(filter-out Makefile, $$^) | sort -u | sed -e 's/__/:/' -e 's/_/,/g' > $(1).list.tmp && \
(cmp -s $(1).list.tmp $(1).list || cp $(1).list.tmp $(1).list) && \
rm -f $(1).list.tmp && \
echo timestamp > $$@
$(1).list: $(1).list.stamp
@true
$(1).h: $(1).list
$$(_GLIB_V_GEN) $$(GLIB_GENMARSHAL) \
--prefix=_$(_glib_marshal_prefix) --header \
$$(GLIB_GENMARSHAL_H_FLAGS) \
$$($(_glib_marshal_prefix)_GENMARSHAL_H_FLAGS) \
$$< > $$@.tmp && \
mv $$@.tmp $$@
$(1).c: $(1).list
$$(_GLIB_V_GEN) (echo "#include \"$$(subst .c,.h,$$(@F))\""; $$(GLIB_GENMARSHAL) \
--prefix=_$(_glib_marshal_prefix) --body \
$$(GLIB_GENMARSHAL_C_FLAGS) \
$$($(_glib_marshal_prefix)_GENMARSHAL_C_FLAGS) \
$$< ) > $$@.tmp && \
mv $$@.tmp $$@
_GLIB_CLEANFILES += $(1).list.stamp $(1).list
_GLIB_DISTCLEANFILES += $(1).h $(1).c
endef
$(foreach f,$(_GLIB_MARSHAL_GENERATED),$(eval $(call _glib_make_genmarshal_rules,$f)))
### glib-mkenums
_GLIB_ENUM_TYPES_GENERATED = $(subst .h,,$(filter %enum-types.h %enumtypes.h,$(GLIB_GENERATED)))
_glib_enum_types_prefix = $(subst -,_,$(notdir $(1)))
_glib_enum_types_guard = __$(shell LC_ALL=C echo $(_glib_enum_types_prefix) | tr 'a-z' 'A-Z')_H__
_glib_enum_types_sources_var = $(_glib_enum_types_prefix)_sources
_glib_enum_types_sources = $(filter-out $(GLIB_GENERATED),$($(_glib_enum_types_sources_var)))
_glib_enum_types_h_sources = $(filter %.h,$(_glib_enum_types_sources))
define _glib_make_mkenums_rules
$(if $(_glib_enum_types_sources),,$(error Need to define $(_glib_enum_types_sources_var) for $(1).[ch]))
$(1).h.stamp: $(_glib_enum_types_h_sources) Makefile
$$(_GLIB_V_GEN) $$(GLIB_MKENUMS) \
--fhead "/* Generated by glib-mkenums. Do not edit */\n\n#ifndef $(_glib_enum_types_guard)\n#define $(_glib_enum_types_guard)\n\n" \
$$(GLIB_MKENUMS_H_FLAGS) \
$$($(_glib_enum_types_prefix)_MKENUMS_H_FLAGS) \
--fhead "#include <glib-object.h>\n\nG_BEGIN_DECLS\n" \
--vhead "GType @enum_name@_get_type (void) G_GNUC_CONST;\n#define @ENUMPREFIX@_TYPE_@ENUMSHORT@ (@enum_name@_get_type ())\n" \
--ftail "G_END_DECLS\n\n#endif /* $(_glib_enum_types_guard) */" \
$$(filter-out Makefile, $$^) > $(1).h.tmp && \
(cmp -s $(1).h.tmp $(1).h || cp $(1).h.tmp $(1).h) && \
rm -f $(1).h.tmp && \
echo timestamp > $$@
$(1).h: $(1).h.stamp
@true
$(1).c.stamp: $(_glib_enum_types_h_sources) Makefile
$$(_GLIB_V_GEN) $$(GLIB_MKENUMS) \
--fhead "/* Generated by glib-mkenums. Do not edit */\n\n#include \"$(notdir $(1)).h\"\n" \
$$(GLIB_MKENUMS_C_FLAGS) \
$$($(_glib_enum_types_prefix)_MKENUMS_C_FLAGS) \
--fhead "$$(foreach f,$$(filter-out Makefile,$$(^F)),\n#include \"$$(f)\")\n\n" \
--vhead "GType\n@enum_name@_get_type (void)\n{\n static volatile gsize g_define_type_id__volatile = 0;\n\n if (g_once_init_enter (&g_define_type_id__volatile))\n {\n static const G@Type@Value values[] = {\n" \
--vprod " { @VALUENAME@, \"@VALUENAME@\", \"@valuenick@\" },\n" \
--vtail " { 0, NULL, NULL }\n };\n GType g_define_type_id =\n g_@type@_register_static (g_intern_static_string (\"@EnumName@\"), values);\n g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);\n }\n\n return g_define_type_id__volatile;\n}\n" \
$$(filter-out Makefile, $$^) > $(1).c.tmp && \
(cmp -s $(1).c.tmp $(1).c || cp $(1).c.tmp $(1).c) && \
rm -f $(1).c.tmp && \
echo timestamp > $$@
$(1).c: $(1).c.stamp
@true
_GLIB_CLEANFILES += $(1).h.stamp $(1).c.stamp
_GLIB_DISTCLEANFILES += $(1).h $(1).c $(1).h.stamp $(1).c.stamp
endef
$(foreach f,$(_GLIB_ENUM_TYPES_GENERATED),$(eval $(call _glib_make_mkenums_rules,$f)))
### glib-compile-schemas
_GLIB_ENUMS_XML_GENERATED = $(filter %.enums.xml,$(GLIB_GENERATED))
_GLIB_GSETTINGS_SCHEMA_FILES = $(filter %.gschema.xml,$(gsettingsschema_DATA))
_GLIB_GSETTINGS_VALID_FILES = $(subst .xml,.valid,$(_GLIB_GSETTINGS_SCHEMA_FILES))
_glib_enums_xml_prefix = $(subst .,_,$(notdir $(1)))
_glib_enums_xml_sources_var = $(_glib_enums_xml_prefix)_sources
_glib_enums_xml_sources = $(filter-out $(GLIB_GENERATED),$($(_glib_enums_xml_sources_var)))
_glib_enums_xml_namespace = $(subst .enums.xml,,$(notdir $(1)))
define _glib_make_enums_xml_rule
$(if $(_glib_enums_xml_sources),,$(error Need to define $(_glib_enums_xml_sources_var) for $(1)))
$(1): $(_glib_enums_xml_sources) Makefile
$$(_GLIB_V_GEN) $$(GLIB_MKENUMS) --comments '<!-- @comment@ -->' --fhead "<schemalist>" --vhead " <@type@ id='$(_glib_enums_xml_namespace).@EnumName@'>" --vprod " <value nick='@valuenick@' value='@valuenum@'/>" --vtail " </@type@>" --ftail "</schemalist>" $$(filter-out Makefile, $$^) > $$@.tmp && mv $$@.tmp $$@
endef
_GLIB_V_CHECK = $(_glib_v_check_$(V))
_glib_v_check_ = $(_glib_v_check_$(AM_DEFAULT_VERBOSITY))
_glib_v_check_0 = @echo " CHECK " $(subst .valid,.xml,$@);
define _glib_make_schema_validate_rule
$(subst .xml,.valid,$(1)): $(_GLIB_ENUMS_XML_GENERATED) $(1)
$$(_GLIB_V_CHECK) $$(GLIB_COMPILE_SCHEMAS) --strict --dry-run $$(addprefix --schema-file=,$$^) && touch $$@
endef
define _glib_make_schema_rules
all-am: $(_GLIB_GSETTINGS_VALID_FILES)
install-data-am: glib-install-schemas-hook
glib-install-schemas-hook: install-gsettingsschemaDATA
@test -n "$(GSETTINGS_DISABLE_SCHEMAS_COMPILE)$(DESTDIR)" || (echo $(GLIB_COMPILE_SCHEMAS) $(gsettingsschemadir); $(GLIB_COMPILE_SCHEMAS) $(gsettingsschemadir))
uninstall-am: glib-uninstall-schemas-hook
glib-uninstall-schemas-hook: uninstall-gsettingsschemaDATA
@test -n "$(GSETTINGS_DISABLE_SCHEMAS_COMPILE)$(DESTDIR)" || (echo $(GLIB_COMPILE_SCHEMAS) $(gsettingsschemadir); $(GLIB_COMPILE_SCHEMAS) $(gsettingsschemadir))
.PHONY: glib-install-schemas-hook glib-uninstall-schemas-hook
endef
_GLIB_CLEANFILES += $(_GLIB_ENUMS_XML_GENERATED) $(_GLIB_GSETTINGS_VALID_FILES)
$(foreach f,$(_GLIB_ENUMS_XML_GENERATED),$(eval $(call _glib_make_enums_xml_rule,$f)))
$(foreach f,$(_GLIB_GSETTINGS_SCHEMA_FILES),$(eval $(call _glib_make_schema_validate_rule,$f)))
$(if $(_GLIB_GSETTINGS_SCHEMA_FILES),$(eval $(_glib_make_schema_rules)))
### Cleanup
.PHONY: clean-glib distclean-glib
clean-am: clean-glib
clean-glib:
$(if $(strip $(_GLIB_CLEANFILES)),-rm -f $(_GLIB_CLEANFILES))
distclean-am: distclean-glib
distclean-glib:
$(if $(strip $(_GLIB_DISTCLEANFILES)),-rm -f $(_GLIB_DISTCLEANFILES))

1270
Makefile.in

File diff suppressed because it is too large

520
NEWS

@ -0,0 +1,520 @@
==============================================
NetworkManager-0.9.10
Overview of changes since NetworkManager-0.9.8
==============================================
This is a new stable release of NetworkManager. Notable changes include:
* Added a new curses-based client called "nmtui" for easier console operation
* Added interactive connection editing and creation mode to nmcli with detailed
help and tab completion support
* nmcli bash completion has been greatly improved
* Added support for Data Center Bridging (DCB) and FibreChannel over Ethernet (FCoE)
* IPv6 autoconfiguration is now done in userspace with libndp instead of the kernel
* The D-Bus daemon is no longer required for root-only operation
* WiFi, ADSL, WWAN, and Bluetooth are now optional plugins, reducing install size
* Added support for Infiniband Partitions
* Network connection files are no longer watched by default, use "nmcli con reload"
to notice changes made externally or set "monitor-connection-files=true" in
NetworkManager.conf's [main] section
* Connections can now be locked to interface names in addition to hardware/MAC addresses
* A new "ignore-carrier" configuration option is available to ignore the carrier
on selected interfaces
* A new "dns=none" option has been added to suppress changes to /etc/resolv.conf
* Changes made to IP addresses, IP routes, and master/slave relationships from
external tools are now recognized and reflected in the D-Bus API
* Assuming the existing configuration of interfaces without changing that
configuration is now more reliable
* The 'root' user is no longer subject to PolicyKit access controls and usage
of D-Bus "at_console" permissions has been removed
* Configuration file snippets can be dropped in /etc/NetworkManager/conf.d to
change smaller sets of configuration options
* Added IP-level support for more software/virtual interfaces types including
GRE, macvlan, macvtap, tun, tap, veth, and vxlan interfaces
* All network interfaces known to the kernel are now exposed through
the D-Bus interface
* Improved support for routing-only VPNs like openswan/libreswan/strongswan
* Added support for "temporary" connections which are not saved to disk until
requested
* Added WWAN autoconnect support and fixed issues with airplane mode handling
* NetworkManager-wait-online systemd service behavior is more reliable
* The dispatcher timeout has increased to 10 minutes, and new "pre-up" and
"pre-down" events have been added which block activation until complete
* NetworkManager no longer prevents Wake-on-LAN functionality from working
* PPPoE now requires userland "rp-pppoe" to work around kernel bugs with
that prevent detecting server-side termination of the PPP link
* An ARP announcement is now sent after IPv4 addresses are configured
* Added a DNS plugin for dnssec-trigger for better DNSSEC operation
* More properties are now exposed via the D-Bus properties interface in
addition to getter/setter functions
* Added support for custom IP address ranges for Shared connections
* Fatal connection failures now block automatic reconnection more reliably
* VPN connection IP details are now available via the D-Bus interface
* VPN plugins can now request additional/new secrets from the user during the
connection process
* 'veth' interfaces are now unmanaged by default to cooperate better with
external tools
==============================================
NetworkManager-0.9.8
Overview of changes since NetworkManager-0.9.6
==============================================
This is a new stable release of NetworkManager. Notable changes include:
* New AvailableConnections property for Device objects
* Better handling of various rfkill/Airplane Mode switches
* Fixed handling of DNS servers for some mobile broadband devices
* Don't duplicate various IPv6 routes added by the kernel
* Ensure buggy ethernet driver carrier indications are handled correctly
* Fix crash in dnsmasq plugin when no nameservers were present
* Add support for 4G LTE network modes
* Fix signal handling when daemonizing at startup
* Don't autoconnect to WiFi networks that have never successfully connected
* Only request new WiFi secrets during the initial association or when the
secrets are known to be wrong, not every time the connection randomly fails
* Add capability to autoconnect VPN connections when a parent connection succeeds
* Add configure-time option for "permissive" system connection editing policy
* Various libnm-glib fixes for asynchronous usage
* Fix gateway handling when given with secondary IP addresses
* Optionally listen to systemd for suspend/resume events instead of UPower
* Fix 'seen-bssids' property when retrieving WiFi connections via D-Bus
* Add support for AP-mode WiFi hotspots (instead of just Ad-Hoc)
* Add a "slaves" property to Bond devices
* Add support for ModemManager 0.7/0.8
* Allow more human-readable formatting of IP address in keyfile connections
* Drop support for dhclient v3
* Add support for DHCPv6 server-side Dynamic DNS
* Add support for bridge master devices and bridge ports
* Fix canceling secrets requests in GUI agents
* Always enable Proactive Key Caching (PKC, also called OKC) for WPA Enterprise
WiFi configurations
==============================================
NetworkManager-0.9.6
Overview of changes since NetworkManager-0.9.4
==============================================
This is a new stable release of NetworkManager. Notable changes include:
* Many libnm-glib fixes, including crashes when NetworkManager restarts
* Enhanced IPv6 stability and compatibility
* Fix regression in carrier handling for devices that don't support carrier detect
* Add ability to connect to new WiFi networks from nmcli
* Add native support for ADSL modems using PPPoE or PPPoATM
* Reduce number of changes made to DNS information during connection setup
* Add support for IPv6-enabled VPN connections
* Add device driver version, firmware version, and autoconnect properties to D-Bus API
* Add on-demand WiFi scan support
* Fix IPv6 default gateway handling for DHCPv6
* Add Vala language bindings
* Fix various crashes and issues in the ifcfg-rh system settings plugin
* Fix race with multiple interfaces running DHCP at the same time
* Add Linux From Scratch (LFS) support
* Allow customized dnsmasq local caching nameserver config via /etc/NetworkManager/dnsmasq.d/
* Fixes for VLAN and bonding when libnl2 or earlier are used
* D-Bus API, libnm-glib, libnm-util, and GObject Introspection documentation updates
==============================================
NetworkManager-0.9.4
Overview of changes since NetworkManager-0.9.2
==============================================
This is a new stable release of NetworkManager. Notable changes include:
* Better handling of WiFi devices via nl80211 when available (instead of WEXT)
* IP configuration is now non-blocking; waiting for IPv6 RA no longer blocks
the device from activating if IPv4 is ready and vice versa
* Addded support for firewall "zones" via FirewallD
* Added basic support for bonded interfaces
* WiFi connections are no longer locked to a specific MAC address if they are
"locally administered" addresses (ie, 02:::::)
* New state change reasons have been added for mobile broadband PIN errors
* Agent-owned secrets are now sent to agents for newly created connections
* Support for non-UTF8-encoded 802.1x passwords has been added
* libnm-glib now fetches some properties more aggressively (like active
connections, access points, etc)
* Added basic support for IP-over-Infiniband interfaces
* Added support for device plugins and converted WiMAX support to a plugin for
easier packaging and simpler dependencies
* Added support for VLAN interfaces
* Added support for 802.1x EAP-FAST authentication
* Added non-blocking mode and API to libnm-glib
* Linux Wireless Extensions (WEXT) support can be disabled at configure time
with --with-wext=no
* IPv6 Privacy Extensions are now enabled by default for new connections
* Support for checking Internet connectivity has been added
* The ifnet system config plugin rewrites config files less often
* A bug causing IPv6 address assignment to fail on newer kernels with libnl3
has been fixed
* Fix a bug in the ifcfg-rh plugin with backticks in WPA passphrases
* Ensure connections that cannot be stored are ignored by the ifnet plugin
* Enable out-of-the-box IPv6 connectivity by allowing IPv4 to fail if IPv6 succeeds
* Allow proxying of DNSSEC data when using the dnsmasq local caching nameserver plugin
* Add support for multiple domain names sent from VPN plugins
* Removed support for WiFi Ad-Hoc WPA connections due to kernel bugs
==============================================
NetworkManager-0.9.2
Overview of changes since NetworkManager-0.9.0
==============================================
This is a new stable release of NetworkManager. Notable changes include:
* Support for libnl2 and libnl3 and various memory leak fixes
* Bug fixes for the ifnet config plugin
* Ensure IPv6 link-local DNS servers work correctly in the dnsmasq DNS plugin
* Add ability for nmcli to delete connections
* Fix setup of connection sharing with newer iptables versions
* Ensure WiMAX activation emits correct signals (fixes initial signal strength)
* Fix an issue with duplicated keyfile connections
* Ensure the 'novj' options is passed through to pppd
* Store timestamps for VPN connections too
* Fix a crash when deleting default wired connections
* Fix a security issue in the ifcfg-rh plugin with newlines in file names
* Fix the "SpecificObject" property for active VPN connection objects
* Improve handling of rfkill on some platforms
* Spaces no longer used in ifcfg config file names
* IPv6 RAs are now accepted when forwarding is configured
* dnsmasq local caching nameserver plugin cache size bumped to 400 entries (from 150)
* Fix handling of SSIDs in the keyfile plugin
* Fix some GObject Introspection annotations in libnm-glib and libnm-util
* Fix setting hostnames from DHCP
* Fixes for building with recent GLib versions
* Don't update routing and DNS until a device is managed
* Fix bug causing IPv6 RA-provided routes to be ignored
* Fix possible wrong handling of 'keyfile' connection certificates
* Correct Shared connection IP address range to be as documented
==============================================
NetworkManager-0.9.0
Overview of changes since NetworkManager-0.8.x
==============================================
This is a new stable release of NetworkManager. Notable changes include:
* All connections and configuration now managed by NetworkManager
* Secrets for any connection can now be stored in user session or by NetworkManager
* All secrets can now be requested each time
* Fast User Switching support
* Support for WiMAX mobile broadband
* Connections can now be restricted to one or more users
* Support for 802.1X certificate subject matching for greater security
* Requires wpa_supplicant 0.7 or later
* Better support for AP roaming using nl80211 and background scanning
* Simplified D-Bus API for easier client usage
* Support for GObject Introspection in libnm-glib and libnm-util
==============================================
NetworkManager-0.8.6
Overview of changes since NetworkManager-0.8.4
==============================================
This is a new stable release of NetworkManager. Notable changes include:
* Fix handling of WINS server address in libnm-glib
* Fix checks for s390 CTC device types
* Fix export of nm_device_get_ip_iface() in libnm-glib
* Fix export of IPv6 DNS GValue conversion functions in libnm-glib
* Recognize and manage platform 'gadget' devices
* Send only "short" hostname, not FQDN, to DHCP servers
* Allow "_" as a valid character for GSM APNs
* Handle shared connections in the ifnet plugin
* Fix Ad-Hoc frequency selection for user-created Ad-Hoc networks
* Allow failed connections to be retried when Ethernet carrier bounces
* Allow usage of paths for certificates and keys in the keyfile plugin
* Fix crash requesting system VPN secrets
* Add ability to blacklist certain MAC addresses for wired & wifi connections
* Ensure users are authorized to share wifi networks (CVE-2011-2176)
==============================================
NetworkManager-0.8.4
Overview of changes since NetworkManager-0.8.2
==============================================
This is a new stable release of NetworkManager. Notable changes include:
* Preliminary support for Exherbo Linux
* Logging fixes to suppress unnecessary messages
* Ensure removed devices are cleaned up
* Fix potential 64-bit crash updating timestamps
* IPv6 setup, routing, and compliance fixes
* Fix WWAN enable/disable handling
* Handle reverse DNS lookups with local caching nameserver configurations
* Ensure usable DNS configuration is written when NetworkManager quits
* No longer updates /etc/hosts when hostname changes
* Request WPAD option from DHCP servers
* Allow use of paths for certificates and keys in connection keyfiles
* Allow operation without any DHCP client installed
* Fix operation with newer versions of dnsmasq
* nmcli support for WWAN connections
* Persistent hostname sent to DHCP servers by default
* Allow disabing PPP support at build time
* Red Hat/Fedora ifcfg plugin fixes for handling S390 CTC device configuration
* Red Hat/Fedora ifcfg plugin fixes for handling IPADDR config items
* Shutdown crash fixes
* Memory leak fixes
* Documentation fixes and updates
* and much more...
==============================================
NetworkManager-0.8.2
Overview of changes since NetworkManager-0.8.1
==============================================
This is a new stable release of NetworkManager. Notable changes include:
* Native local caching nameserver support using dnsmasq
* Automatically detect addition and removal of new VPN plugins
* Support for handling suspend/resume signals from UPower
* Ensure users are allowed to enable/disable WiFi and networking
* Ensure WiFi enable state is perserved across reboot and suspend
* Better handling of /etc/hosts and preservation of custom hostnames
* Support for the systemd session management service
* Better handling of 'keyfile' system connection errors
* Support for S390 network devices
* and much more...
==============================================
NetworkManager-0.7.0
Overview of changes since NetworkManager-0.6.6
==============================================
This is a new major stable release of NetworkManager. Notable changes include:
* Multiple active devices
* Internet connection sharing
* Support for many mobile broadband devices
* Full static IP support
* More reliable connections
* Rich, flexible D-Bus API
* Boot-time connections (no logins required)
==============================================
NetworkManager-0.6.2
Overview of changes since NetworkManager-0.6.2
==============================================
0.6.2 is a bug fix release. Note that NetworkManager no longer automatically
runs dhcdbd if it is not running. This means that it is now the system's
responsibility to start dhcdbd prior to NetworkManager, e.g. in the
distribution's NetworkManager initscript.
* NetworkManager
* Many, many bug fixes (Everyone)
* Dynamic WEP Support (Robert Love)
* nm-applet
* Many bug fixes (Everyone)
==============================================
NetworkManager-0.6.1
Overview of changes since NetworkManager-0.6.0
==============================================
0.6.1 is a minor bug fix release.
* NetworkManager
* Improved activation cancelation (Dan Williams)
* Workarounds for non-WPA drivers (Dan Williams)
* Fix WPA Enterprise crasher (Robert Love)
* nm-applet
* Hide password entry fields by default (Robert Love)
* Add toggle to show/hide password field (Robert Love)
* Add 'Remove' option to right-click menu (Robert Love)
==============================================
NetworkManager-0.6.0
Overview of changes since NetworkManager-0.5.1
==============================================
This releases ushers in WPA support, as well as many other features, bug fixes,
and clean ups.
We now require libnl, a netlink library (http://people.suug.ch/~tgr/libnl/) and
wpa_supplicant, a WPA supplicant (http://hostap.epitest.fi/wpa_supplicant/).
Two new VPN modules are part of the distribution: openvpn and pptp.
* NetworkManager
* WPA and WPA2 support (Dan Williams)
* WPA Enterprise support (Robert Love)
* Rearchitecting, refactoring (Dan Williams)
* wpa_supplicant support (Dan Williams, Kay Sievers)
* NIS support (Robert Love)
* DHCP hostname support (Timo Hoenig)
* ISDN support, improve dial up support (Robert Love)
* Man pages (Robert Love)
* Survive DBUS and HAL restarts (Timo Hoening)
* Generate PID files (Dan Willians)
* Bug fixes and clean ups (the whole gang)
* nm-applet
* New tray icon look and behavior (Robert Love, Dan Williams)
* New wireless security layer (Dan Williams)
* New "Enable Networking" toggle (Robert Love)
* Display speed of current connection (Robert Love)
* Bug fixes and clean ups (the whole gang)
==============================================
NetworkManager-0.5.1
Overview of changes since NetworkManager-0.5.0
==============================================
* NetworkManager
* Don't drop the last scanned AP (Dan Williams)
* Broadcast state change when disconnected (Robert Love)
* The Slackware backend now builds (Nico)
* Don't install unsued config files (Dan Williams)
* Add a test for libnm_glib_unregister_callback (Christopher Aillon)
* Requires wireless-tools 28pre9 (Christopher Aillon)
* nm-applet
* Use g_get_host_name () if we've got it (Christopher Aillon)
* Fix an unitialized variable (Robert Love)
* Fix sensitivity of VPN items (Robert Love)
==============================================
NetworkManager-0.5.0
Overview of changes since NetworkManager-0.4.1
==============================================
* NetworkManager
* Initscripts are now generated
* Not waiting as long for scans to complete (Bill Moss).
* Fix several D-BUS object leaks (John Palmieri, Dan Williams,
Christopher Aillon)
* VPN now advertises state changes
* Make --without-named work (j@bootlab.org)
* Make --with-dhcdbd work correctly (j@bootlab.org)
* Fix timeout scan values (Bill Moss)
* Send notifications of device strength changing so clients do
not have to poll.
* Don't return a UDI device if it doesn't exist (Tomislav Vujec)
* Strip whitespace from the VPN banner (Bill Moss)
* VPN Manager rewritten to better support signals (Dan Williams)
* Don't allow clients to determine what states we should be
scanning in, add logic to scan when we need to.
* Blacklist some common ESSIDs such that multiple access points
with these ESSIDs aren't treated as the same network.
* Support for D-BUS enabled named (Dan Williams)
* Only '#' is a valid comment in resolv.conf (Robert Love)
* Don't try to set auth mode on the AP from the allowed list if
it's NULL (Bill Moss)
* Add internal scanning code so we don't have to use iwlib's
code any longer (Dan Williams)
* libnm now uses guints instead of gints for its callback IDs.
* libnm_glib_unregister_callback () now works.
* Fix our scanning interval (Robert Love)
* Updates to backends for Gentoo, SuSE, RedHat, Debian, and
Slackware (Robert Love, Peter Jones, Bill Nottingham,
j@bootlab.org)
- Dialup support in RedHat backend
- ISDN support in SUSE backend
- Other fixes
* nm-applet
* The applet is no longer threaded (Dan Williams)
* Dialogs no longer block the UI when shown
* Passphrase dialog now treats Esc keypresses properly
* Create Network and Connect to Network dialogs now have
different window titles
* New icons for connecting to a network and to a VPN
(Diana Fong)
* Context menu items have been cleaned up
* Pressing enter in the passphrase entry should activate the
default action.
* Fix icon animation smoothness
* Display more data in the Connection Information dialog
(Robert Love)
============================================
NetworkManager-0.3.1
Overview of changes since NetworkManager-0.3
============================================
NetworkManager:
* Debian backend fixes, Thom May
* Build fixes, Thom May
* Better handling of encrypted devices, Dan Williams
* Better handling of user-selected access points, Dan Williams
NetworkManagerNotification:
* Simplified D-Bus code, Dan Williams
* Better error handling and feedback, Dan Williams
* Greatly simplify the locking to UI smoother, Dan Williams
============================================
NetworkManager-0.3.0
Overview of changes since NetworkManager-0.2
============================================
NetworkManager:
* Lots of fixes, Dan Williams
* Support static IP addresses, Dan Williams
- Get broadcast address from config files, Robert Paskowitz
* Support for non-ESSID-broadcasting base stations, Dan Williams
* Only accept and manager 802.3 and 802.11 devices, Dan Williams
* Don't blow away an active wired connection on startup, Dan Williams
* Improve strength calculation, Dan Williams
* Constantly scanning behavior, Dan Williams
* add .pc file, Colin Walters
* move to syslog, Dan Willemsen
* Improve MD5 hashing of 128-bit passphrases, Colin Walters
* DBUS API docs, Dan Williams
* Cleanups, Colin Walters
* Trusted networks, Dan Williams
* New Backends:
- Debian, Thom May and Mark Roach
- Slackware, Narayan Newton
* Fixes and functionality improvements in Gentoo backend, Robert Paskowitz
Python:
* Example python code, Bryan Clark.
* python test framework, Bryan Clark
NetworkManagerInfo:
* Trusted networks, Dan Williams
* Escape ESSIDs in gconf, Dan Williams
* Lifecycle improvements, John Palmieri
Translations:
* New/Improved translations: da de sv en_CA nb no pa bs pt_BR wa gu es
- Thanks to:
Kjartan Maraas
Christian Rose
Adam Weinberger
Amanpreet Singh Alam
Akagic Amila
Raphael Higino
Pablo Saratxaga
Ankit Patel
Francisco Javier F. Serrador
Martin Willemoes Hansen
Hendrik Brandt
NetworkManagerNotification:
* Complete rewrite, Jonathan Blandford and John Palmieri
- Now a Notification area
- Simpler menu
- Hook up the "other network" dialog to do something
* New icons, Diana Fong

13
NetworkManager.pc.in

@ -0,0 +1,13 @@
prefix=@prefix@
exec_prefix=@exec_prefix@
libdir=@libdir@
includedir=@includedir@
libgnome_serverdir=@libexecdir@
plugindir=@libdir@/NetworkManager
configdir=@sysconfdir@/NetworkManager
Name: NetworkManager
Description: System for maintaining active network connection
Requires:
Version: @VERSION@
Cflags: -I${includedir}/NetworkManager

85
README

@ -0,0 +1,85 @@
******************
2008-12-11: NetworkManager core daemon has moved to git.freedesktop.org!
git clone git://git.freedesktop.org/git/NetworkManager/NetworkManager.git
******************
Networking that Just Works
--------------------------
NetworkManager attempts to keep an active network connection available at all
times. The point of NetworkManager is to make networking configuration and
setup as painless and automatic as possible. NetworkManager is intended to
replace default route, replace other routes, set IP addresses, and in general
configure networking as NM sees fit (with the possibility of manual override as
necessary). In effect, the goal of NetworkManager is to make networking Just
Work with a minimum of user hassle, but still allow customization and a high
level of manual network control. If you have special needs, we'd like to hear
about them, but understand that NetworkManager is not intended for every
use-case.
NetworkManager will attempt to keep every network device in the system up and
active, as long as the device is available for use (has a cable plugged in,
the killswitch isn't turned on, etc). Network connections can be set to
'autoconnect', meaning that NetworkManager will make that connection active
whenever it and the hardware is available.
"Settings services" store lists of user- or administrator-defined "connections",
which contain all the settings and parameters required to connect to a specific
network. NetworkManager will _never_ activate a connection that is not in this
list, or that the user has not directed NetworkManager to connect to.
How it works:
The NetworkManager daemon runs as a privileged service (since it must access
and control hardware), but provides a D-Bus interface on the system bus to
allow for fine-grained control of networking. NetworkManager does not store
connections or settings, it is only the mechanism by which those connections
are selected and activated.
To store pre-defined network connections, two separate services, the "system
settings service" and the "user settings service" store connection information
and provide these to NetworkManager, also via D-Bus. Each settings service
can determine how and where it persistently stores the connection information;
for example, the GNOME applet stores its configuration in GConf, and the system
settings service stores it's config in distro-specific formats, or in a distro-
agnostic format, depending on user/administrator preference.
A variety of other system services are used by NetworkManager to provide
network functionality: wpa_supplicant for wireless connections and 802.1x
wired connections, pppd for PPP and mobile broadband connections, DHCP clients
for dynamic IP addressing, dnsmasq for proxy nameserver and DHCP server
functionality for internet connection sharing, and avahi-autoipd for IPv4
link-local addresses. Most communication with these daemons occurs, again,
via D-Bus.
Why doesn't my network Just Work?
Driver problems are the #1 cause of why NetworkManager sometimes fails to
connect to wireless networks. Often, the driver simply doesn't behave in a
consistent manner, or is just plain buggy. NetworkManager supports _only_
those drivers that are shipped with the upstream Linux kernel, because only
those drivers can be easily fixed and debugged. ndiswrapper, vendor binary
drivers, or other out-of-tree drivers may or may not work well with
NetworkManager, precisely because they have not been vetted and improved by the
open-source community, and because problems in these drivers usually cannot
be fixed.
Sometimes, command-line tools like 'iwconfig' will work, but NetworkManager will
fail. This is again often due to buggy drivers, because these drivers simply
aren't expecting the dynamic requests that NetworkManager and wpa_supplicant
make. Driver bugs should be filed in the bug tracker of the distribution being
run, since often distributions customize their kernel and drivers.
Sometimes, it really is NetworkManager's fault. If you think that's the case,
please file a bug at http://bugzilla.gnome.org and choose the NetworkManager
component. Attaching the output of /var/log/messages or /var/log/daemon.log
(wherever your distribution directs syslog's 'daemon' facility output) is often
very helpful, and (if you can get) a working wpa_supplicant config file helps
enormously.

356
TODO

@ -0,0 +1,356 @@
So you're interested in hacking on NetworkManager? Here's some cool
stuff you could do...
* Internet Connectivity Detection Enhancements
Current connectivity checking is global, while what we really want is to check
connectivity per-interface and update the global state based on the composite
of each device's state. Unfortunately that requires two things:
1) latest libsoup and glib for using libsoup connection state signals, which
allow us to set socket options before the actual connection is made; here
we'd bind the socket to the specific IP address of the interface we're
using, and possibly set SO_BINDTODEVICE as well
2) setting /proc/sys/net/ipv4/conf/<iface>/rp_filter to "2" which tells the
kernel to route the incoming and outgoing packet properly even though the
interface may not have the necessary routes
The first is the largest obstacle, but ideally we implement this and enable it
when we have the required glib and libsoup versions available. One other
complication is that this checking should be done during the
NM_DEVICE_STATE_IP_CHECK phase (along with other operations like WiFi hotspot
auto-login) while the current checks are done globally in nm-manager.c, so
keeping both code paths might be complex.
But ideally, once the device has successfully gotten an IPv4 or IPv6 address, it
should enter the state NM_DEVICE_STATE_IP_CHECK, where a connectivity check is
started. After the check returns, the device would set a property in
NMDevicePrivate to indicate whether Internet access was successful or not, and
advance to the NM_DEVICE_STATE_ACTIVATED state.
The NMManager object, when determining the overall NM_STATE_* state in the
nm_manager_update_state() function, would query this property and set
NM_STATE_CONNECTED_LOCAL, NM_STATE_CONNECTED_SITE, or NM_STATE_CONNECTED_GLOBAL
based on it and the device's state.
* Implement NM_DEVICE_STATE_DISCONNECTING
To allow for "pre-down" scenarios, this state should be implemented before a
device is taken down while it still has connectivity. If the device is
taken down because it's ethernet carrier was dropped, or because the WiFi
connection was terminated by the supplicant, this state is pointless and should
be skipped. But if the user requested a manual "disconnect", or NM is dropping
connections on exit, etc, then this state should be entered. In the future
this state should hook into a new dispatcher action in src/NetworkManagerUtils.c
to exectue dispatcher scripts during the disconnection, and to wait a limited
amount of time for each script to complete before allowing the device to
proceed to the NM_DEVICE_STATE_DISCONNECTED state, fully implementing pre-down.
* Ethernet Network Auto-detection
There are various methods we can use to autodetect which wired network connection
to use if the user connects to more than one wired network on a frequent basis.
First, 802.1x enterprise switches broadcast frames which can be used to indicate
that the switch supports 802.1x and thus allow NetworkManager to select an
802.1x connection instead of blindly trying DHCP. Second, NetworkManager could
listen for traffic from a list of MAC addresses. Third, NetworkManager could
integrate 'arping' functionality to determine if a given IP address matches a
given MAC address, and thus automatically select that connection. All these
methods can co-exist and be used in parallel.
One small caveat is that MAC addresses are trivial to spoof, so just because
NetworkManager has discovered a certain MAC address does not mean the network
is authenticated; only 802.1x security can assure that a network is the network
the user expects it to be.
In any case, a new 'anchor-addresses' property of type string-array should be
added to the NMSettingWired setting. Each string element of this property
should be of the format "<ip>/<mac>" or simply "<mac>". The first format with
an IP address would indicate that "arping"-type behavior should be used to
actively detect the given MAC address; obviously if the given MAC address is
used for passive discovery as well. The second format simply lists a MAC
address to passively listen for.
One drawback of listening or probing for known MAC addresses is an increase in
latency during connections to ethernet networks. The probing/listening delay
should be a reasonable amount of time, like 4 - 5 seconds or so, and should
only be used when a visible connection has anchor addresses.
Next a gboolean 'anchor-probing' variable should be added to the
NMDeviceEthernetPrivate structure in src/nm-device-ethernet.c. This variable
should be set to TRUE whenever the device's carrier turns on *and* there are
visible NMConnections with anchor addresses (ie, connections which are system-
wide or where one of the allowed users of that connection is logged in). Then
probing and listening are started, which involves opening a low-level socket
on the interface and starting the arping run or listening for MAC addresses.
A timer is also started (don't forget to cache the timer's source ID in the
NMDeviceEthernetPrivate data, and to cancel the timer whenever the device
transitions to any state other than DISCONNECTED).
If a known MAC address is discovered as a result of probing or listening, the
probe/listen socket, timeout, and data are cleaned up, and NetworkManager
would begin activation of the NMConnection that specified the found MAC address
in the 'anchor-addresses' property. If two or more connections specify the
same MAC address, the connection with the most recent timestamp should be
preferred.
Similarly, if the probing/listening process detects 802.1x frames the device
should be marked as requring 802.1x authentication until the carrier drops.
This would be accomplished by adding a new property to the NMDeviceEthernet
object and exporting that property through the
introspection/nm-device-ethernet.xml file. This would allow clients like
applets to ensure that users are aware that the device will not allow
un-authenticated connections and that additional credentials are required to
successfully connect to this network.
* VPN re-connect (bgo #349151)
NM should remember whether a VPN was connected if a connection disconnects
(like WiFi drops out or short carrier drop) or if the laptop goes to sleep.
Upon reconnect, if the same Connection is again active, the previously
connected VPN should be activated again as well. Basically, don't just drop
the VPN because WiFi choked for 10 seconds, but reconnect the VPN if it was
connected before the drop.
* VPN IP Methods
Some VPNs (openvpn with TAP for example) require that DHCP is run on a
pseudo-ethernet device to obtain addressing information. This is not currently
possible, but NM already has all the code for DHCP. Thus, a new "method"
key should be defined in include/NetworkManagerVPN.h to allow for DHCP to
be performed if the VPN service daemon requests it in the IP4Config or IP6Config
signals. A patch here:
http://cgit.freedesktop.org/NetworkManager/NetworkManager/commit/?h=vpn-ip-method
shows that. In nm-vpn-connection.c, upon receipt of the D-Bus Ip4Config signal
from the VPN plugin, NetworkManager would inspect the "method" property of the
ip4 config dictionary. If that property was present and set to "auto" then
DHCP would be started using the network interface returned in the dict. The
nm_vpn_connection_ip4_config_get() function should be split up into two
functions, one containing the existing code for static configuration, and a
second for handling DHCP kickoff. Minimal parsing of the response should be
handled in the newly reduced nm_vpn_connection_ip4_config_get() function.
To handle DHCP, the NMVPNConnectionPrivate structure should have two members