rpms/tunctl/F-8 tunctl.c?rev=1.4, NONE, 1.1 tunctl.sgml?rev=238, NONE, 1.1 tunctl.spec, NONE, 1.1
Lubomir Kundrak (lkundrak)
fedora-extras-commits at redhat.com
Wed Mar 26 17:25:04 UTC 2008
- Previous message (by thread): rpms/tunctl/devel tunctl.c?rev=1.4, NONE, 1.1 tunctl.sgml?rev=238, NONE, 1.1 tunctl.spec, NONE, 1.1
- Next message (by thread): rpms/sugar-presence-service/OLPC-2 .cvsignore, 1.40, 1.41 sources, 1.40, 1.41 sugar-presence-service.spec, 1.43, 1.44
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Author: lkundrak
Update of /cvs/pkgs/rpms/tunctl/F-8
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv23646/F-8
Added Files:
tunctl.c?rev=1.4 tunctl.sgml?rev=238 tunctl.spec
Log Message:
Initial import
--- NEW FILE tunctl.c?rev=1.4 ---
/* Copyright 2002 Jeff Dike
* Licensed under the GPL
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <fcntl.h>
#include <unistd.h>
#include <pwd.h>
#include <net/if.h>
#include <sys/ioctl.h>
#include <linux/if_tun.h>
static void Usage(char *name)
{
fprintf(stderr, "Create: %s [-b] [-u owner] [-t device-name] "
"[-f tun-clone-device]\n", name);
fprintf(stderr, "Delete: %s -d device-name [-f tun-clone-device]\n\n",
name);
fprintf(stderr, "The default tun clone device is /dev/net/tun - some systems"
" use\n/dev/misc/net/tun instead\n\n");
fprintf(stderr, "-b will result in brief output (just the device name)\n");
exit(1);
}
int main(int argc, char **argv)
{
struct ifreq ifr;
struct passwd *pw;
long owner = geteuid();
int tap_fd, opt, delete = 0, brief = 0;
char *tun = "", *file = "/dev/net/tun", *name = argv[0], *end;
while((opt = getopt(argc, argv, "bd:f:t:u:")) > 0){
switch(opt) {
case 'b':
brief = 1;
break;
case 'd':
delete = 1;
tun = optarg;
break;
case 'f':
file = optarg;
break;
case 'u':
pw = getpwnam(optarg);
if(pw != NULL){
owner = pw->pw_uid;
break;
}
owner = strtol(optarg, &end, 0);
if(*end != '\0'){
fprintf(stderr, "'%s' is neither a username nor a numeric uid.\n",
optarg);
Usage(name);
}
break;
case 't':
tun = optarg;
break;
case 'h':
default:
Usage(name);
}
}
argv += optind;
argc -= optind;
if(argc > 0)
Usage(name);
if((tap_fd = open(file, O_RDWR)) < 0){
fprintf(stderr, "Failed to open '%s' : ", file);
perror("");
exit(1);
}
memset(&ifr, 0, sizeof(ifr));
ifr.ifr_flags = IFF_TAP | IFF_NO_PI;
strncpy(ifr.ifr_name, tun, sizeof(ifr.ifr_name) - 1);
if(ioctl(tap_fd, TUNSETIFF, (void *) &ifr) < 0){
perror("TUNSETIFF");
exit(1);
}
if(delete){
if(ioctl(tap_fd, TUNSETPERSIST, 0) < 0){
perror("TUNSETPERSIST");
exit(1);
}
printf("Set '%s' nonpersistent\n", ifr.ifr_name);
}
else {
if(ioctl(tap_fd, TUNSETPERSIST, 1) < 0){
perror("TUNSETPERSIST");
exit(1);
}
if(ioctl(tap_fd, TUNSETOWNER, owner) < 0){
perror("TUNSETPERSIST");
exit(1);
}
if(brief)
printf("%s\n", ifr.ifr_name);
else printf("Set '%s' persistent and owned by uid %ld\n", ifr.ifr_name,
owner);
}
return(0);
}
--- NEW FILE tunctl.sgml?rev=238 ---
<!doctype refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [
<!-- Process this file with docbook-to-man to generate an nroff manual
page: `docbook-to-man manpage.sgml > manpage.1'. You may view
the manual page with: `docbook-to-man manpage.sgml | nroff -man |
less'. A typical entry in a Makefile or Makefile.am is:
manpage.1: manpage.sgml
docbook-to-man $< > $@
-->
<!-- Fill in your name for FIRSTNAME and SURNAME. -->
<!ENTITY dhfirstname "<firstname>Matt</firstname>">
<!ENTITY dhsurname "<surname>Zimmerman</surname>">
<!-- Please adjust the date whenever revising the manpage. -->
<!ENTITY dhdate "<date>February 12, 2002</date>">
<!-- SECTION should be 1-8, maybe w/ subsection other parameters are
allowed: see man(7), man(1). -->
<!ENTITY dhsection "<manvolnum>8</manvolnum>">
<!ENTITY dhemail "<email>mdz at debian.org</email>">
<!ENTITY dhusername "Matt Zimmerman">
<!ENTITY dhucpackage "<refentrytitle>TUNCTL</refentrytitle>">
<!ENTITY dhpackage "tunctl">
<!ENTITY debian "<productname>Debian GNU/Linux</productname>">
<!ENTITY gnu "<acronym>GNU</acronym>">
]>
<refentry>
<refentryinfo>
<address>
&dhemail;
</address>
<author>
&dhfirstname;
&dhsurname;
</author>
<copyright>
<year>2001</year>
<holder>&dhusername;</holder>
</copyright>
&dhdate;
</refentryinfo>
<refmeta>
&dhucpackage;
&dhsection;
</refmeta>
<refnamediv>
<refname>&dhpackage;</refname>
<refpurpose>create and manage persistent TUN/TAP interfaces</refpurpose>
</refnamediv>
<refsynopsisdiv>
<cmdsynopsis>
<command>&dhpackage;</command>
<arg choice=opt><option>-f</option> <replaceable>tun-clone-device</replaceable></arg>
<arg><option>-u</option> <replaceable>owner</replaceable></arg>
<arg><option>-t</option> <replaceable>device-name</replaceable></arg>
</cmdsynopsis>
<cmdsynopsis>
<command>&dhpackage;</command>
<arg choice=opt><option>-f</option> <replaceable>tun-clone-device</replaceable></arg>
<arg choice=req><option>-d</option> <replaceable>device-name</replaceable></arg>
</cmdsynopsis>
</refsynopsisdiv>
<refsect1>
<title>DESCRIPTION</title>
<para>This manual page documents briefly the
<command>&dhpackage;</command> command.</para>
<para>This manual page was written for the &debian; distribution
because the original program does not have a manual page.
Instead, it has documentation in HTML format; see below.</para>
<para><command>&dhpackage;</command> allows the host sysadmin to
preconfigure a TUN/TAP device for use by a particular user. That
user may open and use the device, but may not change any aspects
of the host side of the interface.</para>
</refsect1>
<refsect1>
<title>USAGE</title>
<para>To create an interface for use by a particular user, invoke
tunctl without the -d option:</para>
<informalexample>
<screen>
<prompt>#</prompt> <userinput>tunctl -u someuser</userinput>
Set 'tap0' persistent and owned by 'someuser'
</screen>
</informalexample>
<para>Then, configure the interface as normal:</para>
<informalexample>
<screen>
<prompt>#</prompt> <userinput>ifconfig tap0 192.168.0.254 up</userinput>
<prompt>#</prompt> <userinput>route add -host 192.168.0.253 dev tap0</userinput>
<prompt>#</prompt> <userinput>bash -c 'echo 1 > /proc/sys/net/ipv4/conf/tap0/proxy_arp'</userinput>
<prompt>#</prompt> <userinput>arp -Ds 192.168.0.253 eth0 pub</userinput>
</screen>
</informalexample>
<para>To delete the interface, use the -d option:</para>
<informalexample>
<screen>
<prompt>#</prompt> <userinput>tunctl -d tap0</userinput>
Set 'tap0' nonpersistent
</screen>
</informalexample>
</refsect1>
<refsect1>
<title>SEE ALSO</title>
<para>The <ulink
url="http://user-mode-linux.sourceforge.net/UserModeLinux-HOWTO.html"
type=alternate>UserModeLinux-HOWTO</ulink></para>
</refsect1>
<refsect1>
<title>AUTHOR</title>
<para>&dhpackage; was written by Jeff Dike
<email>jdike at karaya.com</email></para>
<para>This manual page was written by &dhusername; &dhemail; for
the &debian; system, based on examples from Jeff Dike.</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:2
sgml-indent-data:t
sgml-parent-document:nil
sgml-default-dtd-file:nil
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
-->
--- NEW FILE tunctl.spec ---
Name: tunctl
Version: 1.4
Release: 2%{?dist}
Summary: Create and remove virtual network interfaces
Group: Applications/System
License: GPL+
URL: http://www.user-mode-linux.org/
Source0: http://www.user-mode-linux.org/cvs/*checkout*/tools/tunctl/tunctl.c?rev=%{version}
# This is from Debian, http://packages.debian.org/sid/uml-utilities
Source1: http://svn.debian.org/viewsvn/*checkout*/pkg-uml/trunk/src/uml-utilities/debian/tunctl.sgml?rev=238
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: docbook-utils
%description
Virtual network interface manipulation tool from User Mode Linux project.
%prep
%setup -T -c -n %{name}-%{version}
%{__cp} %{SOURCE0} tunctl.c
%{__cp} %{SOURCE1} tunctl.sgml
%build
%{__cc} %{optflags} tunctl.c -o tunctl
docbook2man tunctl.sgml
%install
rm -rf $RPM_BUILD_ROOT
install -d $RPM_BUILD_ROOT%{_sbindir}
install -d $RPM_BUILD_ROOT%{_mandir}/man8
install -m 755 tunctl $RPM_BUILD_ROOT%{_sbindir}
install -m 644 TUNCTL.8 $RPM_BUILD_ROOT%{_mandir}/man8/tunctl.8
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root,-)
%{_mandir}/man8/tunctl.8*
%{_sbindir}/tunctl
#%doc
%changelog
* Tue Mar 25 2008 Lubomir Kundrak <lkundrak at redhat.com> 1.4-2
- Move to sbin (Marek Mahut, #434583)
* Fri Feb 22 2008 Lubomir Kundrak <lkundrak at redhat.com> 1.4-1
- Initial packaging
- Previous message (by thread): rpms/tunctl/devel tunctl.c?rev=1.4, NONE, 1.1 tunctl.sgml?rev=238, NONE, 1.1 tunctl.spec, NONE, 1.1
- Next message (by thread): rpms/sugar-presence-service/OLPC-2 .cvsignore, 1.40, 1.41 sources, 1.40, 1.41 sugar-presence-service.spec, 1.43, 1.44
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the fedora-extras-commits
mailing list