mirror of
https://codeberg.org/scip/udpxd.git
synced 2025-12-16 19:40:58 +01:00
move to codeberg
This commit is contained in:
18
.woodpecker/build.yaml
Normal file
18
.woodpecker/build.yaml
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
matrix:
|
||||||
|
platform:
|
||||||
|
- linux/amd64
|
||||||
|
|
||||||
|
labels:
|
||||||
|
platform: ${platform}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
build-berkeley:
|
||||||
|
when:
|
||||||
|
event: [push]
|
||||||
|
image: alpine:latest
|
||||||
|
commands:
|
||||||
|
- apk update
|
||||||
|
- apk add --no-cache bash build-base gdb pkgconfig meson ninja
|
||||||
|
- meson setup --reconfigure build
|
||||||
|
- ninja -C build
|
||||||
|
|
||||||
54
.woodpecker/release.sh
Executable file
54
.woodpecker/release.sh
Executable file
@@ -0,0 +1,54 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# This is my own simple codeberg generic releaser. It takes to
|
||||||
|
# binaries to be uploaded as arguments and takes every other args from
|
||||||
|
# env. Works on tags or normal commits (push), tags must start with v.
|
||||||
|
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
die() {
|
||||||
|
echo $*
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
if test -z "$DEPLOY_TOKEN"; then
|
||||||
|
die "token DEPLOY_TOKEN not set"
|
||||||
|
fi
|
||||||
|
|
||||||
|
git fetch --all
|
||||||
|
|
||||||
|
# determine current tag or commit hash
|
||||||
|
version="$CI_COMMIT_TAG"
|
||||||
|
previous=""
|
||||||
|
log=""
|
||||||
|
if test -z "$version"; then
|
||||||
|
version="${CI_COMMIT_SHA:0:6}"
|
||||||
|
log=$(git log -1 --oneline)
|
||||||
|
else
|
||||||
|
previous=$(git tag -l | grep -E "^v" | tac | grep -A1 "$version" | tail -1)
|
||||||
|
log=$(git log -1 --oneline "${previous}..${version}" | sed 's|^|- |g')
|
||||||
|
fi
|
||||||
|
|
||||||
|
# release body
|
||||||
|
printf "# Changes\n\n %s\n" "$log" > body.txt
|
||||||
|
|
||||||
|
# create the release
|
||||||
|
https --ignore-stdin --check-status -b -A bearer -a "$DEPLOY_TOKEN" POST \
|
||||||
|
"https://codeberg.org/api/v1/repos/${CI_REPO_OWNER}/${CI_REPO_NAME}/releases" \
|
||||||
|
tag_name="$version" name="Release $version" body=@body.txt > release.json
|
||||||
|
|
||||||
|
# we need the id to upload files
|
||||||
|
ID=$(jq -r .id < release.json)
|
||||||
|
|
||||||
|
if test -z "$ID"; then
|
||||||
|
cat release.json
|
||||||
|
die "failed to create release"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# actually upload
|
||||||
|
for file in "$@"; do
|
||||||
|
https --ignore-stdin --check-status -A bearer -a "$DEPLOY_TOKEN" -f POST \
|
||||||
|
"https://codeberg.org/api/v1/repos/${CI_REPO_OWNER}/${CI_REPO_NAME}/releases/$ID/assets" \
|
||||||
|
"name=${file}" "attachment@${file}"
|
||||||
|
done
|
||||||
31
.woodpecker/release.yaml
Normal file
31
.woodpecker/release.yaml
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
# build release
|
||||||
|
|
||||||
|
labels:
|
||||||
|
platform: linux/amd64
|
||||||
|
|
||||||
|
steps:
|
||||||
|
compile:
|
||||||
|
when:
|
||||||
|
event: [tag,manual]
|
||||||
|
image: alpine:latest
|
||||||
|
commands:
|
||||||
|
- apk update
|
||||||
|
- apk add --no-cache bash build-base words-en gdb pkgconfig meson ninja git
|
||||||
|
- meson setup --reconfigure --prefer-static -Dcpp_link_args="-static" --buildtype=release build
|
||||||
|
- ninja -C build
|
||||||
|
- meson dist -C build --formats xztar,gztar,zip
|
||||||
|
- file build/udpxd
|
||||||
|
- mv build/udpxd udpxd-linux-amd64-$CI_COMMIT_TAG
|
||||||
|
- mv build/meson-dist/* .
|
||||||
|
|
||||||
|
release:
|
||||||
|
image: alpine:latest
|
||||||
|
when:
|
||||||
|
event: [tag,manual]
|
||||||
|
environment:
|
||||||
|
DEPLOY_TOKEN:
|
||||||
|
from_secret: DEPLOY_TOKEN
|
||||||
|
commands:
|
||||||
|
- apk update
|
||||||
|
- apk add --no-cache bash httpie jq git
|
||||||
|
- .woodpecker/release.sh udpxd-*
|
||||||
2
Makefile
2
Makefile
@@ -37,7 +37,7 @@ $(DST): $(OBJS)
|
|||||||
$(CC) -c $(CFLAGS) $*.c -o $*.o
|
$(CC) -c $(CFLAGS) $*.c -o $*.o
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o $(DST)
|
rm -rf *.o $(DST) build .cache
|
||||||
|
|
||||||
man:
|
man:
|
||||||
pod2man udpxd.pod > udpxd.1
|
pod2man udpxd.pod > udpxd.1
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ you need either BSD make or GNU make installed to build it.
|
|||||||
First you need to check out the source code. Skip this, if
|
First you need to check out the source code. Skip this, if
|
||||||
you have already done so:
|
you have already done so:
|
||||||
|
|
||||||
git clone git@github.com:TLINDEN/udpxd.git
|
git clone https://codeberg.org/scip/udpxd.git
|
||||||
|
|
||||||
Next, change into the newly created directory 'udpxd' and
|
Next, change into the newly created directory 'udpxd' and
|
||||||
compile the source code:
|
compile the source code:
|
||||||
@@ -53,8 +53,7 @@ Although I'm happy to hear from udpxd users in private email,
|
|||||||
that's the best way for me to forget to do something.
|
that's the best way for me to forget to do something.
|
||||||
|
|
||||||
In order to report a bug, unexpected behavior, feature requests
|
In order to report a bug, unexpected behavior, feature requests
|
||||||
or to submit a patch, please open an issue on github:
|
or to submit a patch, [please open an issue](https://codeberg.org/scip/udpxd/issues).
|
||||||
https://github.com/TLINDEN/udpxd/issues.
|
|
||||||
|
|
||||||
## Copyright and license
|
## Copyright and license
|
||||||
|
|
||||||
@@ -66,4 +65,4 @@ T.v.Dein <tom AT vondein DOT org>
|
|||||||
|
|
||||||
## Project homepage
|
## Project homepage
|
||||||
|
|
||||||
https://github.com/TLINDEN/udpxd
|
https://codeberg.org/scip/udpxd
|
||||||
|
|||||||
88
meson.build
Normal file
88
meson.build
Normal file
@@ -0,0 +1,88 @@
|
|||||||
|
# -*-python-*-
|
||||||
|
|
||||||
|
project(
|
||||||
|
'udpxd',
|
||||||
|
'c',
|
||||||
|
license: 'GPL',
|
||||||
|
version: '0.0.4',
|
||||||
|
meson_version: '>=1.3',
|
||||||
|
default_options: [
|
||||||
|
'warning_level=2',
|
||||||
|
'werror=true',
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
add_project_arguments(
|
||||||
|
[
|
||||||
|
'-Wno-unused-parameter',
|
||||||
|
'-Wno-unused-result',
|
||||||
|
'-Wno-missing-braces',
|
||||||
|
'-Wno-format-zero-length',
|
||||||
|
'-Wvla',
|
||||||
|
'-Wno-sign-compare',
|
||||||
|
'-Wno-narrowing'
|
||||||
|
],
|
||||||
|
language: 'cpp',
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
c = meson.get_compiler('c')
|
||||||
|
conf = configuration_data()
|
||||||
|
|
||||||
|
|
||||||
|
# check for funcs.
|
||||||
|
foreach func : ['getopt', 'malloc', 'fprintf', 'strncpy', 'strlen', 'strtok', 'strchr', 'signal',
|
||||||
|
'select', 'free', 'perror', 'getsockname', 'setegid', 'seteuid', 'syslog',
|
||||||
|
'va_start', 'va_end', 'inet_ntop', 'getifaddrs', 'getnameinfo', 'ntohs', 'memcpy', 'memset', 'sprintf' ]
|
||||||
|
conf.set('HAVE_'+func.to_upper(), c.has_function(func, prefix : '#include <unistd.h>\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <signal.h>\n#include <sys/socket.h>\n#include <syslog.h>\n#include <stdarg.h>\n#include <arpa/inet.h>\n#include <sys/types.h>\n#include <ifaddrs.h>\n#include <netdb.h>\n'))
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
|
||||||
|
# check commandline options
|
||||||
|
prefix = get_option('prefix')
|
||||||
|
|
||||||
|
if get_option('buildtype') == 'debug'
|
||||||
|
conf.set('DEBUG', '1')
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# setup conf map
|
||||||
|
version = '@0@'.format(meson.project_version())
|
||||||
|
conf.set('prefix', prefix)
|
||||||
|
conf.set('UDPXD_VERSION', version)
|
||||||
|
|
||||||
|
|
||||||
|
# write out the config header
|
||||||
|
m = configure_file(
|
||||||
|
input : 'platform.h.in',
|
||||||
|
output : 'platform.h',
|
||||||
|
configuration : conf,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
# code
|
||||||
|
udpxd_sources = files(
|
||||||
|
'client.c',
|
||||||
|
'host.c',
|
||||||
|
'log.c',
|
||||||
|
'net.c',
|
||||||
|
'udpxd.c'
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
executable(
|
||||||
|
'udpxd',
|
||||||
|
[udpxd_sources],
|
||||||
|
install: true
|
||||||
|
)
|
||||||
|
|
||||||
|
# build manual page
|
||||||
|
pod2man = find_program('pod2man', native: true)
|
||||||
|
if pod2man.found()
|
||||||
|
res = run_command(pod2man.full_path(), 'udpxd.pod', 'udpxd.1', check:true)
|
||||||
|
if res.returncode() == 0
|
||||||
|
install_man('udpxd.1')
|
||||||
|
endif
|
||||||
|
endif
|
||||||
1
meson_options.txt
Normal file
1
meson_options.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
# custom build options
|
||||||
101
platform.h.in
Normal file
101
platform.h.in
Normal file
@@ -0,0 +1,101 @@
|
|||||||
|
/* platform.h.in. Generated from configure.ac by autoheader. */
|
||||||
|
|
||||||
|
#define PACKAGE "udpxd"
|
||||||
|
#define UDPXD_VERSION "@VERSION@"
|
||||||
|
|
||||||
|
#mesondefine HAVE_GETOPT
|
||||||
|
#ifndef HAVE_GETOPT
|
||||||
|
error "HAVE_GETOPT not defined"
|
||||||
|
#endif
|
||||||
|
#mesondefine HAVE_MALLOC
|
||||||
|
#ifndef HAVE_MALLOC
|
||||||
|
error "HAVE_MALLOC not defined"
|
||||||
|
#endif
|
||||||
|
#mesondefine HAVE_FPRINTF
|
||||||
|
#ifndef HAVE_FPRINTF
|
||||||
|
error "HAVE_FPRINTF not defined"
|
||||||
|
#endif
|
||||||
|
#mesondefine HAVE_STRNCPY
|
||||||
|
#ifndef HAVE_STRNCPY
|
||||||
|
error "HAVE_STRNCPY not defined"
|
||||||
|
#endif
|
||||||
|
#mesondefine HAVE_STRLEN
|
||||||
|
#ifndef HAVE_STRLEN
|
||||||
|
error "HAVE_STRLEN not defined"
|
||||||
|
#endif
|
||||||
|
#mesondefine HAVE_STRTOK
|
||||||
|
#ifndef HAVE_STRTOK
|
||||||
|
error "HAVE_STRTOK not defined"
|
||||||
|
#endif
|
||||||
|
#mesondefine HAVE_STRCHR
|
||||||
|
#ifndef HAVE_STRCHR
|
||||||
|
error "HAVE_STRCHR not defined"
|
||||||
|
#endif
|
||||||
|
#mesondefine HAVE_SIGNAL
|
||||||
|
#ifndef HAVE_SIGNAL
|
||||||
|
error "HAVE_SIGNAL not defined"
|
||||||
|
#endif
|
||||||
|
#mesondefine HAVE_SELECT
|
||||||
|
#ifndef HAVE_SELECT
|
||||||
|
error "HAVE_SELECT not defined"
|
||||||
|
#endif
|
||||||
|
#mesondefine HAVE_FREE
|
||||||
|
#ifndef HAVE_FREE
|
||||||
|
error "HAVE_FREE not defined"
|
||||||
|
#endif
|
||||||
|
#mesondefine HAVE_PERROR
|
||||||
|
#ifndef HAVE_PERROR
|
||||||
|
error "HAVE_PERROR not defined"
|
||||||
|
#endif
|
||||||
|
#mesondefine HAVE_GETSOCKNAME
|
||||||
|
#ifndef HAVE_GETSOCKNAME
|
||||||
|
error "HAVE_GETSOCKNAME not defined"
|
||||||
|
#endif
|
||||||
|
#mesondefine HAVE_SETEGID
|
||||||
|
#ifndef HAVE_SETEGID
|
||||||
|
error "HAVE_SETEGID not defined"
|
||||||
|
#endif
|
||||||
|
#mesondefine HAVE_SETEUID
|
||||||
|
#ifndef HAVE_SETEUID
|
||||||
|
error "HAVE_SETEUID not defined"
|
||||||
|
#endif
|
||||||
|
#mesondefine HAVE_SYSLOG
|
||||||
|
#ifndef HAVE_SYSLOG
|
||||||
|
error "HAVE_SYSLOG not defined"
|
||||||
|
#endif
|
||||||
|
#mesondefine HAVE_VA_START
|
||||||
|
#ifndef HAVE_VA_START
|
||||||
|
error "HAVE_VA_START not defined"
|
||||||
|
#endif
|
||||||
|
#mesondefine HAVE_VA_END
|
||||||
|
#ifndef HAVE_VA_END
|
||||||
|
error "HAVE_VA_END not defined"
|
||||||
|
#endif
|
||||||
|
#mesondefine HAVE_INET_NTOP
|
||||||
|
#ifndef HAVE_INET_NTOP
|
||||||
|
error "HAVE_INET_NTOP not defined"
|
||||||
|
#endif
|
||||||
|
#mesondefine HAVE_GETIFADDRS
|
||||||
|
#ifndef HAVE_GETIFADDRS
|
||||||
|
error "HAVE_GETIFADDRS not defined"
|
||||||
|
#endif
|
||||||
|
#mesondefine HAVE_GETNAMEINFO
|
||||||
|
#ifndef HAVE_GETNAMEINFO
|
||||||
|
error "HAVE_GETNAMEINFO not defined"
|
||||||
|
#endif
|
||||||
|
#mesondefine HAVE_NTOHS
|
||||||
|
#ifndef HAVE_NTOHS
|
||||||
|
error "HAVE_NTOHS not defined"
|
||||||
|
#endif
|
||||||
|
#mesondefine HAVE_MEMCPY
|
||||||
|
#ifndef HAVE_MEMCPY
|
||||||
|
error "HAVE_MEMCPY not defined"
|
||||||
|
#endif
|
||||||
|
#mesondefine HAVE_MEMSET
|
||||||
|
#ifndef HAVE_MEMSET
|
||||||
|
error "HAVE_MEMSET not defined"
|
||||||
|
#endif
|
||||||
|
#mesondefine HAVE_SPRINTF
|
||||||
|
#ifndef HAVE_SPRINTF
|
||||||
|
error "HAVE_SPRINTF not defined"
|
||||||
|
#endif
|
||||||
44
udpxd.1
44
udpxd.1
@@ -1,4 +1,4 @@
|
|||||||
.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16)
|
.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.42)
|
||||||
.\"
|
.\"
|
||||||
.\" Standard preamble:
|
.\" Standard preamble:
|
||||||
.\" ========================================================================
|
.\" ========================================================================
|
||||||
@@ -38,27 +38,36 @@
|
|||||||
. ds PI \(*p
|
. ds PI \(*p
|
||||||
. ds L" ``
|
. ds L" ``
|
||||||
. ds R" ''
|
. ds R" ''
|
||||||
|
. ds C`
|
||||||
|
. ds C'
|
||||||
'br\}
|
'br\}
|
||||||
.\"
|
.\"
|
||||||
.\" Escape single quotes in literal strings from groff's Unicode transform.
|
.\" Escape single quotes in literal strings from groff's Unicode transform.
|
||||||
.ie \n(.g .ds Aq \(aq
|
.ie \n(.g .ds Aq \(aq
|
||||||
.el .ds Aq '
|
.el .ds Aq '
|
||||||
.\"
|
.\"
|
||||||
.\" If the F register is turned on, we'll generate index entries on stderr for
|
.\" If the F register is >0, we'll generate index entries on stderr for
|
||||||
.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
|
.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
|
||||||
.\" entries marked with X<> in POD. Of course, you'll have to process the
|
.\" entries marked with X<> in POD. Of course, you'll have to process the
|
||||||
.\" output yourself in some meaningful fashion.
|
.\" output yourself in some meaningful fashion.
|
||||||
.ie \nF \{\
|
.\"
|
||||||
. de IX
|
.\" Avoid warning from groff about undefined register 'F'.
|
||||||
. tm Index:\\$1\t\\n%\t"\\$2"
|
.de IX
|
||||||
..
|
..
|
||||||
. nr % 0
|
.nr rF 0
|
||||||
. rr F
|
.if \n(.g .if rF .nr rF 1
|
||||||
.\}
|
.if (\n(rF:(\n(.g==0)) \{\
|
||||||
.el \{\
|
. if \nF \{\
|
||||||
. de IX
|
. de IX
|
||||||
|
. tm Index:\\$1\t\\n%\t"\\$2"
|
||||||
..
|
..
|
||||||
|
. if !\nF==2 \{\
|
||||||
|
. nr % 0
|
||||||
|
. nr F 2
|
||||||
|
. \}
|
||||||
|
. \}
|
||||||
.\}
|
.\}
|
||||||
|
.rr rF
|
||||||
.\"
|
.\"
|
||||||
.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
|
.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
|
||||||
.\" Fear. Run. Save yourself. No user-serviceable parts.
|
.\" Fear. Run. Save yourself. No user-serviceable parts.
|
||||||
@@ -124,7 +133,7 @@
|
|||||||
.\" ========================================================================
|
.\" ========================================================================
|
||||||
.\"
|
.\"
|
||||||
.IX Title "UDPXD 1"
|
.IX Title "UDPXD 1"
|
||||||
.TH UDPXD 1 "2015-2016-04-27" "perl v5.14.2" "User Contributed Perl Documentation"
|
.TH UDPXD 1 "2025-12-01" "perl v5.34.0" "User Contributed Perl Documentation"
|
||||||
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
|
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
|
||||||
.\" way too many mistakes in technical documents.
|
.\" way too many mistakes in technical documents.
|
||||||
.if n .ad l
|
.if n .ad l
|
||||||
@@ -138,7 +147,8 @@ udpxd \- A general purpose UDP relay/port forwarder/proxy
|
|||||||
\&
|
\&
|
||||||
\& Options:
|
\& Options:
|
||||||
\& \-\-listen \-l <ip:port> listen for incoming requests
|
\& \-\-listen \-l <ip:port> listen for incoming requests
|
||||||
\& \-\-bind \-b <ip> bind ip used for outgoing requests
|
\& \-\-bind \-b <ip[:port]> bind ip used for outgoing requests
|
||||||
|
\& specify port for promiscuous mode
|
||||||
\& \-\-to \-t <ip:port> destination to forward requests to
|
\& \-\-to \-t <ip:port> destination to forward requests to
|
||||||
\& \-\-daemon \-d daemon mode, fork into background
|
\& \-\-daemon \-d daemon mode, fork into background
|
||||||
\& \-\-pidfile \-p <file> pidfile, default: /var/run/udpxd.pid
|
\& \-\-pidfile \-p <file> pidfile, default: /var/run/udpxd.pid
|
||||||
@@ -178,7 +188,9 @@ the background and becomes a daemon. It writes it pidfile to
|
|||||||
\&\f(CW\*(C`/var/run/udpxd.pid\*(C'\fR, which can be changed with the \fB\-p\fR
|
\&\f(CW\*(C`/var/run/udpxd.pid\*(C'\fR, which can be changed with the \fB\-p\fR
|
||||||
option. If started as root, it also drops privileges to the
|
option. If started as root, it also drops privileges to the
|
||||||
user \f(CW\*(C`nobody\*(C'\fR or the user specified with \fB\-u\fR and chroots
|
user \f(CW\*(C`nobody\*(C'\fR or the user specified with \fB\-u\fR and chroots
|
||||||
to \f(CW\*(C`/var/empty\*(C'\fR or the directory specified with \fB\-c\fR.
|
to \f(CW\*(C`/var/empty\*(C'\fR or the directory specified with \fB\-c\fR. udpxd
|
||||||
|
will log to syslog facility user.info if \fB\-v\fR is specified and
|
||||||
|
if running in daemon mode.
|
||||||
.PP
|
.PP
|
||||||
\&\fBCaution: if not running in daemon mode, udpxd does not drop
|
\&\fBCaution: if not running in daemon mode, udpxd does not drop
|
||||||
its privileges and will continue to run as root (if started as
|
its privileges and will continue to run as root (if started as
|
||||||
@@ -275,12 +287,12 @@ address:
|
|||||||
.IX Header "BUGS"
|
.IX Header "BUGS"
|
||||||
In order to report a bug, unexpected behavior, feature requests
|
In order to report a bug, unexpected behavior, feature requests
|
||||||
or to submit a patch, please open an issue on github:
|
or to submit a patch, please open an issue on github:
|
||||||
<https://github.com/TLINDEN/udpxd/issues>.
|
<https://codeberg.org/scip/udpxd/issues>.
|
||||||
.SH "LICENSE"
|
.SH "LICENSE"
|
||||||
.IX Header "LICENSE"
|
.IX Header "LICENSE"
|
||||||
This software is licensed under the \s-1GNU\s0 \s-1GENERAL\s0 \s-1PUBLIC\s0 \s-1LICENSE\s0 version 3.
|
This software is licensed under the \s-1GNU GENERAL PUBLIC LICENSE\s0 version 3.
|
||||||
.PP
|
.PP
|
||||||
Copyright (c) 2015-2016 by T. v. Dein.
|
Copyright (c) 2015\-2017 by T. v. Dein.
|
||||||
.PP
|
.PP
|
||||||
This software uses \fButhash\fR (bundled), which is
|
This software uses \fButhash\fR (bundled), which is
|
||||||
Copyright (c) 2003\-2013 by Troy D. Hanson.
|
Copyright (c) 2003\-2013 by Troy D. Hanson.
|
||||||
|
|||||||
23
udpxd.h
23
udpxd.h
@@ -22,22 +22,21 @@
|
|||||||
#ifndef _HAVE_UDPXD_H
|
#ifndef _HAVE_UDPXD_H
|
||||||
#define _HAVE_UDPXD_H
|
#define _HAVE_UDPXD_H
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <stdint.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <time.h>
|
|
||||||
#include <getopt.h>
|
#include <getopt.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <time.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
#include <sys/socket.h>
|
|
||||||
#include <netinet/in.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/fcntl.h>
|
|
||||||
#include <arpa/inet.h>
|
#include <arpa/inet.h>
|
||||||
|
#include <netinet/in.h>
|
||||||
|
#include <sys/fcntl.h>
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
|
||||||
#define UDPXD_VERSION "0.0.4"
|
#include "platform.h"
|
||||||
|
|
||||||
|
|
||||||
void usage();
|
void usage();
|
||||||
int parse_ip(char *src, char *ip, char *pt);
|
int parse_ip(char *src, char *ip, char *pt);
|
||||||
|
|||||||
@@ -135,7 +135,7 @@ B</var/run/udpxd.pid>: created if running in daemon mode (B<-d>).
|
|||||||
|
|
||||||
In order to report a bug, unexpected behavior, feature requests
|
In order to report a bug, unexpected behavior, feature requests
|
||||||
or to submit a patch, please open an issue on github:
|
or to submit a patch, please open an issue on github:
|
||||||
L<https://github.com/TLINDEN/udpxd/issues>.
|
L<https://codeberg.org/scip/udpxd/issues>.
|
||||||
|
|
||||||
=head1 LICENSE
|
=head1 LICENSE
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user