summaryrefslogtreecommitdiff
path: root/sysdep/unix/io.c
AgeCommit message (Collapse)Author
2000-03-31Use bsprintf() instead of sprintf().Martin Mares
2000-03-31Include "lib/string.h" instead of <string.h>. It should give us bzero()Martin Mares
and other non-portable functions on all systems.
2000-03-30Defined sk_close() which closes the socket safely even if called fromMartin Mares
socket hook. Replaces the SK_DELETED hack. Squashed a couple of bugs in handling of TCP sockets.
2000-03-20Handle EINPROGRESS properly.Martin Mares
Set IP_DONTROUTE sockopt only if sk->ttl == 1.
2000-03-12Fixed a bunch of FIXME's by removing them :)Martin Mares
2000-03-12Added tm_format_datetime().Martin Mares
1999-12-16Better order of includes.Martin Mares
set_inaddr() moved to sysio.h.
1999-12-16Tried to clean up multicast handling. Now we don't try to guessMartin Mares
multicast abilities depending on definedness of symbols and use hard-wired system-dependent configuration defines instead. Please test whereever you can.
1999-12-08Temporary work-arounds for multicast problems. Needs further investigation.Martin Mares
1999-12-06Allow logging to stderr as well.Martin Mares
1999-12-06Added tracked_fopen() which is a fopen registered in resource database.Martin Mares
Will be used for log files.
1999-12-01Added tm_format_reltime() for formatting of relative time quantities.Martin Mares
1999-11-30Moved TIME_INFINITY to timer.h, so that it's publicly available.Martin Mares
1999-11-17If the main event queue is not empty, call select() with zero timeout, soMartin Mares
that the events are ran again after the FD's are checked. This allows us to schedule I/O checks between processing of user commands.
1999-10-29Implemented unix-domain sockets.Martin Mares
1999-10-02Failure to set socket TOS is not a fatal error.Martin Mares
1999-08-17Added a function for generating 32-bit random numbers.Martin Mares
1999-08-03Support for IPv6 sockets. How nice one doesn't have to ifdef aroundMartin Mares
ten years of API evolution :-)
1999-08-03Basic support for IPv6. The system-dependent part doesn't work yet,Martin Mares
but the core routines are there and seem to be working. o lib/ipv6.[ch] written o Lexical analyser recognizes IPv6 addresses and when in IPv6 mode, treats pure IPv4 addresses as router IDs. o Router ID must be configured manually on IPv6 systems. o Added SCOPE_ORGANIZATION for org-scoped IPv6 multicasts. o Fixed few places where ipa_(hton|ntoh) was called as a function returning converted address.
1999-08-03Added functions for parsing and formatting of dates.Martin Mares
1999-06-01Grrr, the "obvious fix" to multicasting code from yesterday wasMartin Mares
fundamentally wrong. Reversed.
1999-05-31Fix potential multicasting bug.Martin Mares
1999-05-06I rewrote the interface handling code, so that it supports multipleMartin Mares
addresses per interface (needed for example for IPv6 support). Visible changes: o struct iface now contains a list of all interface addresses (represented by struct ifa), iface->addr points to the primary address (if any). o Interface has IF_UP set iff it's up and it has a primary address. o IF_UP is now independent on IF_IGNORED (i.e., you need to test IF_IGNORED in the protocols; I've added this, but please check). o The if_notify_change hook has been simplified (only one interface pointer etc.). o Introduced a ifa_notify_change hook. (For now, only the Direct protocol does use it -- it's wise to just listen to device routes in all other protocols.) o Removed IF_CHANGE_FLAGS notifier flag (it was meaningless anyway). o Updated all the code except netlink (I'll look at it tomorrow) to match the new semantics (please look at your code to ensure I did it right). Things to fix: o Netlink. o Make krt-iface interpret "eth0:1"-type aliases as secondary addresses.
1999-04-14Multicasts once again: When using SO_BINDTODEVICE, don't specify IP addressMartin Mares
of the interface.
1999-04-14Next attempt to get SO_BINDTODEVICE work :)Martin Mares
1999-04-14Use SO_BINDTODEVICE if we're using old multicast API (i.e., struct ip_mreqMartin Mares
and not ip_mreqn). This should get multicasts on unnumbered PtP links work.
1999-04-12Use `struct ip_mreqn' instead of `struct ip_mreq' for multicastMartin Mares
operations on 2.1/2.2 kernels. This allows passing of real interface indexes instead of referencing interfaces by their IP addresses which fails badly in presence of unnumbered interfaces. Unfortunately, this structure is not visible with glibc 2.0 as it provides its own networking headers :-( Both libc5 and glibc 2.1 should be OK.
1999-04-12Fixed a couple of bugs in handling of multicast sockets.Martin Mares
See comments in lib/socket.h for a detailed guide on how to use them.
1999-04-01First few FreeBSD portability fixes.Martin Mares
1999-03-26Moved to a much more systematic way of configuring kernel protocols.Martin Mares
o Nothing is configured automatically. You _need_ to specify the kernel syncer in config file in order to get it started. o Syncing has been split to route syncer (protocol "Kernel") and interface syncer (protocol "Device"), device routes are generated by protocol "Direct" (now can exist in multiple instances, so that it will be possible to feed different device routes to different routing tables once multiple tables get supported). See doc/bird.conf.example for a living example of these shiny features.
1999-03-01Added SK_MAGIC type sockets for internal use by system dependent code,Martin Mares
especially for netlink communication.
1999-02-13Perform gracious shutdown upon receipt of SIGTERM. Finally we canMartin Mares
test the whole protocol shutdown code... :)
1999-02-13Synchronize signals to the main select/event/timer loop.Martin Mares
Parse command line options.
1999-02-11Added simple event scheduling system to avoid recursive callingMartin Mares
of various callbacks. Events are just another resource type objects (thus automatically freed and unlinked when the protocol using them shuts down). Each event can be linked in at most one event list. For most purposes, just use the global event list handled by the following functions: ev_schedule Schedule event to be called at the next event scheduling point. If the event was already scheduled, it's just re-linked to the end of the list. ev_postpone Postpone an already scheduled event, so that it won't get called. Postponed events can be scheduled again by ev_schedule(). You can also create custom event lists to build your own synchronization primitives. Just use: ev_init_list to initialize an event list ev_enqueue to schedule event on specified event list ev_postpone works as well for custom lists ev_run_list to run all events on your custom list ev_run to run a specific event and dequeue it
1998-12-20die() -> bug() where appropriate.Martin Mares
1998-10-19Exporting fill_in_sockaddr() for use by other unix-dependent code.Martin Mares
1998-07-10Replaced remaining references of clock_t by bird_clock_t.Martin Mares
1998-06-04Fixed processing of timers.Martin Mares
1998-06-01Synced to new interface code.Martin Mares
1998-05-26Whee, multicast sockets work!Martin Mares
Implemented recurrent timers.
1998-05-24Added UNIX implementation of both timers and sockets. Timers should work,Martin Mares
sockets were tested only in TCP mode. main.c now contains some test cases for socket code.