Kevin Day [Sun, 25 Feb 2024 16:30:29 +0000 (10:30 -0600)]
Update: Disable -fstrict-flex-arrays=3 flag because it doesn't work on GCC 11.
I just did tests on GCC 11, which is not too old.
The -fstrict-flex-arrays flag does not work there.
For now, just disable the flag by setting it to the non-existent gcc_13 mode.
The mode can be added to the mode list and enabled if so desired.
I may make version specific modes available in the future (or not) but that will require some planning.
The fakefile should be designed to test the GCC version, but I would rather avoid such logic by design.
Let the distributor or the system administrator handle such decisions.
Kevin Day [Wed, 17 Jan 2024 00:01:39 +0000 (18:01 -0600)]
Progress: Further work in TacocaT.
This strongly moves in the direction of setting up sending and receiving the different packets.
This includes handling of multiple packet parts.
None of this is ready yet, but progress is being made.
There is currently a strong focus on getting the FSS Payload processing code wrapped up, working, and tested.
Kevin Day [Tue, 2 Jan 2024 16:03:21 +0000 (10:03 -0600)]
Progress: Further work in TacocaT.
The payload is now the only thing that gets written.
The next things to do are to:
- Process the headers and possibly the signatures.
- Go through a lot of the error cases and make sure they are handled.
- Address all of the todo and fixme comments.
- Consider supporting encryption and including optional third-party libraries to perform such tasks.
Kevin Day [Sun, 31 Dec 2023 03:40:55 +0000 (21:40 -0600)]
Progress: Further work in TacocaT.
I previously just jammed on a random seed based on time as a quick short term solution.
I created an f_random FLL project to provide some basic random entropy processing code.
This change set focuses on utilizing these to get set the random entropy.
The setup of the seed is set to non-blocking with a single delayed retry if blocked.
On failure, this still falls back to the time() based setup.
The fallback also must be cast t an unsigned int rather than a long.
Kevin Day [Thu, 28 Dec 2023 05:10:21 +0000 (23:10 -0600)]
Progress: Further work in TacocaT.
I have confirmed that the send and receive to/from tacocat works.
This does send and receive with the current code but the written data writes the entire packet rather than just the payload.
This behavior will change.
This begins changing the design to make the receive consistent with some design differences from the send.
The received packet needs to be processed using the appropriate FSS functions.
Much of this is commented out next to where the work needs to be done.
Kevin Day [Mon, 11 Dec 2023 06:32:38 +0000 (00:32 -0600)]
Progress: Further work in TacocaT.
The F_pipe is being returned on socket write calls because the socket.address.inet4.sin_family (and probably the socket.address.inet4.sin_family) is not being set.
The kt_tacocat_socket_flag_send_connect_e is not needed and is now removed.
Use f_socket_close_fast_e in f_socket_disconnect().
Pass f_socket_flag_signal_not_e as a flag to f_socket_write_stream() so that a signal is not received if f_socket_write_stream() returns F_pipe.
Kevin Day [Mon, 4 Dec 2023 01:48:51 +0000 (19:48 -0600)]
Progress: Further work in TacocaT.
While working on testing, cleaning up, and finish the code I stopped to make changes to the networking code.
This is the random state the code ended up being in while I adjusted focus.
I will have to resume here and figure out what I was last doing before my adjusted focus happened.
Kevin Day [Wed, 29 Nov 2023 04:23:41 +0000 (22:23 -0600)]
Progress: Further work in TacocaT.
The socket id and id_data descriptors need to be initialized to -1 and not 0.
Make sure they are setup after allocation and after processing (or after disconnect).
Provide more verbose error reporting that reports the particular block step the send fails on.
The receive is not yet updated to do the same but in the future it should be updated to do so.
Kevin Day [Wed, 15 Nov 2023 03:49:56 +0000 (21:49 -0600)]
Progress: Further work in TacocaT.
Finish updating the primary structure in kt_tacocat_send_process().
The next thing to do is to test and figure out what is incomplete or broken.
After that, the next thing to do is to address the existing todo's and perform appropriate clean ups.
Kevin Day [Wed, 6 Sep 2023 05:11:09 +0000 (00:11 -0500)]
Progress: Further work in TacocaT and in particular update kt_tacocat_socket_set_t structure.
Restructure the kt_tacocat_socket_set_t to reduce the number of arrays.
I originally had the structure for f_polls_t.
I then got lazy and kept using the same array structure for everything.
Fix the array structure of kt_tacocat_socket_set_t and provide kt_tacocat_socket_sets_t.
The buffer string intended for a generic cache is move into the kt_tacocat_cache_t.
I am not sure if this is even being used and so this buffer string cache may be removed in the future if I fail to find a use for it.
Begin setting up the custom file name variable to resolve the fixme.
Also make preparations for only opening the file on poll and read operations.
Then close the file when done.
This keeps files from being held open for no reason.
Kevin Day [Tue, 5 Sep 2023 02:25:56 +0000 (21:25 -0500)]
Progress: Further work in TacocaT, getting the "receive" working and writing to a file.
This gets the receive mostly working.
There may be a few fixme or todo comments to address.
I decided to not bother with some of the more complex handling of problems to get this program out the door.
To test this, I used the FLL-0.6 branch version of the file specifications/fss-000f.txt.
I then created the Packet header using the bash script like this:
printf '\x00\x00\x00\x15\x78' > test.binary
cat 0.6/specifications/fss-000f.txt >> test.binary
The resulting binary file size is 0x1578 bytes (5496 bytes) and this can be confirmed via the wc command:
wc test.binary
I can then start the TacocaT program in a new terminal like this:
tacocat -r 127.0.0.1:12345 test.out +V
In a different terminal, I use netcat to test (because the "send" support is not yet written).
cat test.binary | netcat 127.0.0.1 12345
Use control-c to terminate TacocaT.
I can then confirm that the file has been created successfully via a md5sum check.
md5sum test.out 0.6/specifications/fss-000f.txt
The checksums should match, and in my testing they do match.
Kevin Day [Thu, 31 Aug 2023 04:12:54 +0000 (23:12 -0500)]
Progress: Further work in TacocaT.
Add the beginnings of some basic sanity checks.
The max buffer size is provided to prevent DOS and similar attacks by sending an infinitely large packet.
The TacocaT program is not designed for nor is it intended to be used for handling infinite streams.
Kevin Day [Wed, 30 Aug 2023 02:13:42 +0000 (21:13 -0500)]
Progress: Further work in TacocaT.
Get the existing, already implemented, TacocaT behavior working and without error.
This fixes some memory allocation mistakes (such as sending a memory address of a string, which the string is already the memory address that is needed).
Move the allocation logic to a separate function to make the code slightly cleaner.
For records purposes, I am currently compiling with the upcoming 0.6.7 (or a recent 0.7.0 dev release) of Featureless Make and the following command:
- `clear ; fake -U build/tacocat/ clean build -w /tmp/fll-0.7/ && ./install.sh -w /tmp/fll-0.7/`
Kevin Day [Mon, 10 Jul 2023 03:22:06 +0000 (22:22 -0500)]
Progress: Further work in TacocaT.
Create a socket set and move all associated arrays into it.
This allows for a receive and a send socket set to keep all of the associated properties together.
Move a lot of the processing functionality into its own functions and reduce some of the redundancy.
Kevin Day [Thu, 29 Jun 2023 02:25:49 +0000 (21:25 -0500)]
Progress: Work in tacocat, doing some cleanup and fixing things up.
This is done before I realized that I needed more functions in f_network project in FLL.
I did a small amount of work and then shifted my time and effort back to f_network project.
Kevin Day [Wed, 28 Jun 2023 03:13:12 +0000 (22:13 -0500)]
Feature: Initial addition of the "TacocaT" program.
The "TacocaT" program is intended to be similar to netcat.
To concatenate multiple network connections in this context simply means to transfer data from one point to another.
The intent and purpose of this program is really to test my network connection software.
This program is only stubbed out at this point in time.
I need to figure out how I want the data files to be setup.
The network code is not implemented at all, yet.
I also decided to tease my plans on improving the existing Kevux DNS alternative network resolution methodology.
Kevin Day [Wed, 28 Jun 2023 03:12:12 +0000 (22:12 -0500)]
Progress: Miscellaneous improvements to the Remove program.
Update the build settings file to be more in line with the FLL program build settings files.
Update the structure where I noticed it has become out of synchronization with the FLL programs structure.
Fix minor mistakes such as "utf8" is present in the file when it should instead be "remove".
Kevin Day [Mon, 19 Jun 2023 20:15:12 +0000 (15:15 -0500)]
Progress: Begin setting up directory recursion handling.
I started drafting out the directory recursion for the remove.
In the middle of this I decided I should really instead focus on this years goal, networking.
I am going to follow up with network based projects and so I am putting this on the back burner.
Kevin Day [Sun, 26 Mar 2023 00:49:50 +0000 (19:49 -0500)]
Progress: Continue work.
Add incomplete copyright printing.
Remove or disable the /proc relating "isolate" functions.
I will think later on if and how I want to support that.
It may be usefully to have a "--proc=/proc" style long parameter if this is decided to be kept.
Add some needed changes that I missed in the previous commit regarding updating to FLL 0.7.x/0.8.x.
Generalize some of the functions a bit more than previously done.
Add more comments about plans to make the future work easier.
It took me a bit of time to remember where I left off and these comments should now help me in the future.
Kevin Day [Fri, 13 Jan 2023 03:19:00 +0000 (21:19 -0600)]
Progress: Continue working on remove program.
Significant development towards completing date and time related checks.
This is not yet complete.
Fix existence test mistake, do not treat the file not found error as an error during simulation.
The settings loading has several loops.
Redesign the main function to start the thread.
The settings loading now checks in some of its loops for an interrupt signal.
Kevin Day [Thu, 5 Jan 2023 01:54:45 +0000 (19:54 -0600)]
Update: De-couple the build settings data file from the install.sh script.
The design is originally focused around the data/build/settings file.
This file is simple enough and easy enough to use that I decided to use it beyond its intended design.
I noticed that the data/build/settings isn't required anymore.
Removing this allows me to better use in other projects, such as those that have only a fakefile or have a different directory location for the build settings data.
Kevin Day [Wed, 4 Jan 2023 02:21:28 +0000 (20:21 -0600)]
Progress: Begin implementation of the 'remove' series of programs.
Much of the work is drafted out and likely to change.
The core of the 'remove' program is implemented.
The 'date' related functionality is actively being worked on.
The actual removal functionality will be implemented after all of the simulation is completed.
Once the remove is implemented and working, then supplementary 'remove' programs, such as 'rm', 'unlink', and 'rmdir' will be implemented.
Kevin Day [Tue, 13 Dec 2022 04:43:18 +0000 (22:43 -0600)]
Update: Add some basic, initial, files.
Provide the initial readme files (more changes to come).
Provide the install.sh file, copied from the FLL project.
Add the different license files for the licenses to be used.
In general, all source code is under the LGPL2.1 or greater license.
In general, all specifications and specification documentation are under the Open Standard License 1.0.
In general, all non-specification and non-specification documentation is under CC By SA 4.0.