Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft: Create Network driver instead of directly using sockets. #330

Draft
wants to merge 286 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from 7 commits
Commits
Show all changes
286 commits
Select commit Hold shift + click to select a range
baa8793
Fixed handle_port_absent_message.
Jakio815 Feb 1, 2024
13feaab
Fixed handle_federate_failed.
Jakio815 Feb 1, 2024
219b0cf
Fix main function
Jakio815 Feb 1, 2024
878715e
Try fixing net function for git history
Jakio815 Feb 1, 2024
e16f8a0
Remove net_wait_for_federates for history
Jakio815 Feb 1, 2024
2daa206
Fix function names to original names
Jakio815 Feb 1, 2024
6b654a7
Fix send_rejects
Jakio815 Feb 1, 2024
a61d2d2
Fix respond_to_erroneous_connections
Jakio815 Feb 1, 2024
b1f7841
Merge branch 'main' of github.com:lf-lang/reactor-c into netdriver
Jakio815 Feb 1, 2024
d24cab6
Minor fix
Jakio815 Feb 1, 2024
183285e
Minor fix
Jakio815 Feb 1, 2024
7605169
Minor fix
Jakio815 Feb 1, 2024
2cac773
Temporarily add create_real_time_tcp_socket_errexit()
Jakio815 Feb 2, 2024
5a62b8d
Fix clock_synchronization thread
Jakio815 Feb 2, 2024
91ea5a1
Add breaks to switch case
Jakio815 Feb 2, 2024
3a95d81
Handle_timed message
Jakio815 Feb 2, 2024
0fbfda4
Fix handle adress query and address ad
Jakio815 Feb 3, 2024
eda21c0
Fix debug message
Jakio815 Feb 5, 2024
7e9f360
Fix read_netdrv to make it stateful
Jakio815 Feb 8, 2024
c2f6f0a
Fixed tagged message bugs
Jakio815 Feb 8, 2024
7d6f14f
Merge branch 'main' of github.com:lf-lang/reactor-c into netdriver
Jakio815 Feb 8, 2024
c400a13
Fix handle_federate_resign && fix comments && add message_type unders…
Jakio815 Feb 8, 2024
c66be9b
Fix send_failed signal && add resign msg_type
Jakio815 Feb 9, 2024
5e7e796
Fix authenticated bugs
Jakio815 Feb 9, 2024
0f9a5c1
Erase unused code
Jakio815 Feb 9, 2024
1a5aa83
Add timed message forwarding large buffers
Jakio815 Feb 9, 2024
46906c1
Fix return of read messages to return the bytes read, not success and…
Jakio815 Feb 9, 2024
68178c4
Change read return type to ssize_t
Jakio815 Feb 12, 2024
cbfd302
Make inner switch case to be handled in a different helper function.
Jakio815 Feb 14, 2024
5da5cef
Merge branch 'main' of github.com:lf-lang/reactor-c into netdriver
Jakio815 Feb 14, 2024
31461aa
Make socket_open to api
Jakio815 Feb 15, 2024
054a8f3
Add some comments
Jakio815 Feb 15, 2024
5643b28
Fix netdrv_accept fixing /DistributedPhysicalActionUpstream.lf
Jakio815 Feb 15, 2024
b5e42bc
Add commits
Jakio815 Feb 15, 2024
4acfdce
Add helper functions
Jakio815 Feb 15, 2024
8f33200
Starting changes to federate.c
Jakio815 Feb 15, 2024
2099dcd
Finished until lf_create_server()
Jakio815 Feb 15, 2024
059c6c4
Finished lf_handle_p2p_connections_from_federates
Jakio815 Feb 16, 2024
db2ef8b
Minor fix
Jakio815 Feb 16, 2024
cd8532c
Finished lf_connect_to_federate
Jakio815 Feb 16, 2024
4a12bbd
Fix handling messsages
Jakio815 Feb 16, 2024
9569c96
Fix federate's p2p tagged message and similiar messages
Jakio815 Feb 19, 2024
9946584
Fix socket open and netdrv free
Jakio815 Feb 20, 2024
1d81a9b
Minor fix
Jakio815 Feb 20, 2024
58af408
Fix bug on tagged message
Jakio815 Feb 20, 2024
6189256
Fix clock sync
Jakio815 Feb 23, 2024
474c7c1
Merge branch 'main' of github.com:lf-lang/reactor-c into netdriver
Jakio815 Feb 23, 2024
9d2c3d5
Fix proto
Jakio815 Feb 23, 2024
5ead7cc
Return -1 when priv is not initialized yet and try to get the port nu…
byeonggiljun Feb 24, 2024
05abbb5
Add ADDRESS_QUERY_REPLY msg
Jakio815 Feb 24, 2024
1c3ae84
Merge branch 'netdriver' of github.com:lf-lang/reactor-c into netdriver
Jakio815 Feb 24, 2024
1d46d89
Fix handle address query when port is unavailable.
Jakio815 Feb 24, 2024
a0e9931
Fix proto initializztion
Jakio815 Feb 25, 2024
ad1ee04
Fix probe message
Jakio815 Feb 25, 2024
59e4ffe
Remove unnecessary socket related structs
Jakio815 Feb 25, 2024
eada726
Minor changes
Jakio815 Feb 27, 2024
dd4085c
Merge branch 'main' of github.com:lf-lang/reactor-c into netdriver
Jakio815 Feb 27, 2024
a5b491a
Add include to clock_sync.h
Jakio815 Mar 12, 2024
a205b2f
Fix stack smashing for RTI
Jakio815 Mar 15, 2024
a053a54
Merge branch 'main' of github.com:lf-lang/reactor-c into netdriver
Jakio815 Mar 15, 2024
50faf05
Run clang-format
Jakio815 Mar 15, 2024
25b021f
Fix wrong emerged
Jakio815 Mar 15, 2024
a45d5c8
Fix merge conflict error
Jakio815 Mar 15, 2024
8401fd8
Finally fixed bug.... The federation ID should have a maximum value.
Jakio815 Mar 18, 2024
d2ff61b
Fix hmac authentication MSG read.
Jakio815 Mar 22, 2024
79b8c70
Minor fix of comments
Jakio815 Mar 22, 2024
af06b33
Add gitmodules adding sst-c-api
Jakio815 Mar 23, 2024
9a5550e
Add sst-c-api as submodule
Jakio815 Mar 23, 2024
b83f35b
Add lf_sst_support.c .h bases
Jakio815 Mar 23, 2024
586128c
Revert mistakes
Jakio815 Mar 25, 2024
bd5de3a
Add empty mqtt support .c .h
Jakio815 Mar 27, 2024
42274f7
Remove unneeded functions yet for sst_support.c
Jakio815 Mar 27, 2024
ea976ea
Clean net_util.h
Jakio815 Mar 27, 2024
bbd39de
Clean net_common.h
Jakio815 Mar 27, 2024
d16f4f7
Clean rti_remote.h
Jakio815 Mar 27, 2024
aed4c89
Make socket_common. h .c && Implement create_server(), which is used …
Jakio815 Mar 27, 2024
ce7c565
Apply create_server() to rti and fed.
Jakio815 Mar 27, 2024
f4c4d24
Minor fix
Jakio815 Mar 27, 2024
60a06ec
Cleanup socket_support.c & .h
Jakio815 Mar 27, 2024
11096d7
Cleanup net_util .h .c
Jakio815 Mar 27, 2024
db69d8f
Update accept_connection to establilsh_communication_session
Jakio815 Mar 27, 2024
0cde9f0
Add skeleton for lf_mqtt_support.c
Jakio815 Mar 27, 2024
55449d1
Change all netdrv_accepts to establish_communication_session
Jakio815 Mar 27, 2024
7395a99
Fix comments
Jakio815 Mar 27, 2024
f8f5c7b
Fix not to use clock_netdrv on rti.
Jakio815 Mar 27, 2024
d8bc0de
Fix clock_synchronization_thread
Jakio815 Mar 27, 2024
77b6d66
Minor cleanup
Jakio815 Mar 27, 2024
c61fafa
Enable MQTT build
chanijjani Mar 28, 2024
e36e41d
All tests except FeedbackDelay5.lf works
Jakio815 Mar 28, 2024
5640ec9
Formatting federate.c
Jakio815 Mar 28, 2024
2e44179
Fixed federate compile
Jakio815 Mar 28, 2024
3693035
Merge branch 'netdriver' of https://github.com/lf-lang/reactor-c into…
chanijjani Mar 28, 2024
4626b95
Fix merge conflicts
Jakio815 Mar 28, 2024
bc0e864
RTI now compiles selectively by COMM_TYPE keyword
Jakio815 Mar 29, 2024
5f3f3d6
Add cmake to reactor-c cmake
Jakio815 Mar 29, 2024
6f8d8c1
Start sst support
Jakio815 Mar 29, 2024
050df43
Merge branch 'netdriver' of github.com:lf-lang/reactor-c into netdriver
chanijjani Mar 29, 2024
2f009ef
Enable MQTT build
chanijjani Mar 29, 2024
56129b1
Merge branch 'netdriver' of github.com:lf-lang/reactor-c into netdriver
Jakio815 Mar 29, 2024
3d526a0
Change reactor-c CMakelists.txt, Add network apis.
Jakio815 Mar 29, 2024
6643bb7
Comment out federated/network/CMakeLists.txt
Jakio815 Mar 29, 2024
0613db7
Change path for core/Cmakelists.txt
Jakio815 Mar 29, 2024
6840b65
Fix federate build
chanijjani Mar 29, 2024
6193944
Merge branch 'netdriver' of github.com:lf-lang/reactor-c into netdriver
chanijjani Mar 29, 2024
51665b3
Change netdriver to drv in arguments
Jakio815 Mar 29, 2024
79af83a
Move create server to lf_socket support.c && Move socket_open to sock…
Jakio815 Mar 29, 2024
adbc4f6
Revert commented out parts
Jakio815 Mar 29, 2024
0f4706b
Make sst build work
Jakio815 Mar 29, 2024
193c096
Remove server_type_t temporarily for compile...
Jakio815 Mar 30, 2024
aae595b
Add create_server and establish_communication_session for SST
Jakio815 Mar 30, 2024
a628dcb
Remove gitmodules and sst-c-api
Jakio815 Mar 30, 2024
be7c1d1
Fix errors during lfc-dev build
chanijjani Mar 30, 2024
09df989
Merge branch 'netdriver' of github.com:lf-lang/reactor-c into netdriver
chanijjani Mar 30, 2024
39256a3
Minor fix on sst support.c
Jakio815 Mar 31, 2024
5816734
Remove comments
Jakio815 Mar 31, 2024
9693579
Fix handle clock sync warnings and errors.
Jakio815 Apr 1, 2024
025b53e
Apply formatting
Jakio815 Apr 1, 2024
771958b
Re-link lov-level-platform-impl to lf-network-api
Jakio815 Apr 1, 2024
194c9cc
Add skeleton for netdrv_connect, peek_from_netdrv at lf_socket_suppor…
Jakio815 Apr 1, 2024
41ecd1f
Enable comm-type target property
chanijjani Apr 1, 2024
7bd0048
Merge branch 'netdriver' of github.com:lf-lang/reactor-c into netdriver
chanijjani Apr 1, 2024
43ee9df
Revert reactor-c/core/CMakelists.
Jakio815 Apr 1, 2024
1831e93
Fix handle tagged_messages
Jakio815 Apr 1, 2024
8732830
Remove unused header includes in main.c
Jakio815 Apr 1, 2024
9ce244d
Merge branch 'netdriver' of github.com:lf-lang/reactor-c into netdriver
chanijjani Apr 1, 2024
194f6f6
Merge branch 'netdriver' of github.com:lf-lang/reactor-c into netdriver
Jakio815 Apr 1, 2024
45e4992
Minor fix
Jakio815 Apr 2, 2024
1e5e5c0
Add SST configs
Jakio815 Apr 2, 2024
b2b8eaa
Add set_specified_port()
Jakio815 Apr 2, 2024
5cf168a
Minor fix
Jakio815 Apr 2, 2024
9d2d66d
Change logic at lf_connect_to_rti
Jakio815 Apr 2, 2024
9da6645
Minor fix
Jakio815 Apr 2, 2024
3f3a125
Update sst support. establish comm, netdrv connect. Still needs fix
Jakio815 Apr 2, 2024
8e8cda3
Minor fix
Jakio815 Apr 4, 2024
cfbcd7c
Fix fed config
Jakio815 Apr 4, 2024
26c4f4a
Fix fed_config
Jakio815 Apr 4, 2024
8aa92a9
Fix netdrv->open to get federtate ID
Jakio815 Apr 4, 2024
e7e3c27
Change logic for federate's connect.
Jakio815 Apr 5, 2024
2fbb8dc
Change sst_open, get federate ID. && Add read and write functions usi…
Jakio815 Apr 5, 2024
1be65ef
Minor fix
Jakio815 Apr 5, 2024
f5150b9
Fix build issues on Mac
hokeun Apr 5, 2024
3add411
" Fix header includes"
Jakio815 Apr 5, 2024
aedef8c
Add #include <unistd.h>
Jakio815 Apr 5, 2024
c4bf6a4
Fixed to read on mesasge based, not going over the next message.
Jakio815 Apr 6, 2024
5d649ef
Minor fix
Jakio815 Apr 6, 2024
d89f8f3
Fix call to undeclared function write; ISO C99 and later do not suppo…
hokeun Apr 6, 2024
0fba8c6
Fix fatal error: sst-c-api/c_api.h file not found by adding include_d…
hokeun Apr 6, 2024
b3dc2fc
Fix fatal error: sst-c-api/c_api.h file not found b
hokeun Apr 6, 2024
543617d
Fix compiler warnings
hokeun Apr 6, 2024
491a671
Fix error: passing 'unsigned char *' to parameter of type 'char *' co…
hokeun Apr 6, 2024
4680193
Minor fix - remove commented out functions
Jakio815 Apr 6, 2024
e842d32
Get federate's sst config path as command line
Jakio815 Apr 6, 2024
542dd1b
Change federate config name
Jakio815 Apr 6, 2024
06284da
Add --sst options to federate
Jakio815 Apr 7, 2024
6667bc0
Add SSTskeleton.config
Jakio815 Apr 7, 2024
a4153b1
Minor fix -remove unneeded configs.
Jakio815 Apr 7, 2024
c634add
Warning fix
Jakio815 Apr 7, 2024
4a7a07b
Add RTI options to get -sst as sstconfig path.
Jakio815 Apr 7, 2024
6d687d6
Fix a function not returnning anything
hokeun Apr 8, 2024
4ce3526
Revert wrong commit
hokeun Apr 8, 2024
baf5723
Add mqtt netdrv_init()
Jakio815 Apr 8, 2024
2d2bce9
Change netdrv_init() to get federate id and federation id.
Jakio815 Apr 8, 2024
91781d2
Remove type/ header from each support. files.
Jakio815 Apr 8, 2024
13e4b7f
Add each support.h headers to the c files.
Jakio815 Apr 8, 2024
82a450c
Add address, qos, timeout values.
Jakio815 Apr 8, 2024
0492207
Move qos address, timeout values to .c file.
Jakio815 Apr 8, 2024
6995ca3
Add create server and read to mqtt support.
Jakio815 Apr 9, 2024
769772c
Minor fix
Jakio815 Apr 9, 2024
d22b32e
Implement mqtt support. Almost working....
Jakio815 Apr 9, 2024
65329b7
Implement read, write, connect... so on...
Jakio815 Apr 9, 2024
17bd272
Add mqtt join and ack messages
Jakio815 Apr 9, 2024
fd431d4
Fix bugs and add mqtt join and ack protocols.
Jakio815 Apr 9, 2024
7a789cb
Remove function pointers of open and close.
Jakio815 Apr 9, 2024
5832b51
Reorganize code and change some names.
Jakio815 Apr 9, 2024
9818da8
Add netdriver.c to take out common functions of the read and write cl…
Jakio815 Apr 9, 2024
e435ca2
Reorganize sst support.c
Jakio815 Apr 9, 2024
b08aee7
Reorganize
Jakio815 Apr 9, 2024
1b08f0f
Reorganize
Jakio815 Apr 9, 2024
d1444a9
Minor fix
Jakio815 Apr 10, 2024
2aac754
Fix mqtt support. Remove base64 encoding decoding and it's libraries.
Jakio815 Apr 27, 2024
822530b
Fix read to return 0 on connection lost.
Jakio815 Apr 27, 2024
3422b81
Fix rti config
Jakio815 Apr 28, 2024
2691170
Add skeleton for openssl_required definition.
Jakio815 Apr 28, 2024
e13376b
Add temporary configs.
Jakio815 Apr 28, 2024
a14801b
Make a common connect to socket function.
Jakio815 Apr 28, 2024
e959a67
Minor fix
Jakio815 Apr 28, 2024
28d9278
Merge branch 'main' of github.com:lf-lang/reactor-c into netdriver
Jakio815 Apr 28, 2024
862febd
Fix conflicts
Jakio815 Apr 28, 2024
873dd8d
Fix unsused variable errors.
Jakio815 Apr 28, 2024
8315cb4
Add resign message
Jakio815 Apr 28, 2024
bbe209a
FIx sst read
Jakio815 Apr 29, 2024
f7d8a72
Remove library
Jakio815 May 11, 2024
e3ac4f2
Merge branch 'main' of github.com:lf-lang/reactor-c into netdriver
Jakio815 May 11, 2024
4b4d2b2
Fix to return code
Jakio815 May 12, 2024
a59d915
Fix to get server_type_t when create_server()
Jakio815 May 13, 2024
35e0711
Minor fix
Jakio815 May 13, 2024
d4eeded
Add initialize_common_netdrv() to not repeat code && Apply server_type_t
Jakio815 May 13, 2024
9b0ca53
Add initialize_common_netdrv
Jakio815 May 13, 2024
c58bbad
Minor fix on netdriver CMake.
Jakio815 May 14, 2024
187dee4
Add send_address_advertisement_to_RTI && minor formatting.
Jakio815 May 14, 2024
2556451
Minor comments and formatting.
Jakio815 May 14, 2024
b1b030b
Fix declaration of send_address_advertisement_to_RTI
Jakio815 May 14, 2024
199ec22
Change function names to connector and listener
Jakio815 May 14, 2024
ca645a6
Move send_address_advertisement_to_RTI() back to federate.c
Jakio815 May 14, 2024
5362a71
Change multiple term changes.
Jakio815 May 14, 2024
3b3e550
Fix connect_to_socket with timeout time and better errors
Jakio815 May 14, 2024
327068b
Fix federate ID to uint16_t
Jakio815 May 15, 2024
c54d449
Create function create_topic_federation_id_A_to_B to make a topic nam…
Jakio815 May 15, 2024
60d155e
Add set_MQTT_target_ID.
Jakio815 May 15, 2024
f86d82f
Add stdint.h to mqtt_support.h
Jakio815 May 15, 2024
19856a5
Minor fixes.
Jakio815 May 16, 2024
23acbe5
Set back federate ID to int
Jakio815 May 16, 2024
707fd1e
Fix bugs, add comments.
Jakio815 May 16, 2024
b442b81
Make connect retries for MQTT connect()
Jakio815 May 17, 2024
63ba4b3
Minor comments.
Jakio815 May 17, 2024
eb61921
Minor change on MQTT connect.
Jakio815 May 17, 2024
499be8b
Minor fix
Jakio815 May 20, 2024
90efa9a
Add retries for connect and subscribe
Jakio815 May 20, 2024
b029972
Add retry for the total logic itself.
Jakio815 May 21, 2024
72a6c03
Take the read outside from the while loop
Jakio815 May 21, 2024
00dc72f
Fix to establish communication first, then do the fedID etc.. hanshake.
Jakio815 May 21, 2024
1b0e985
Remove MQTT connect with retries.
Jakio815 May 21, 2024
ca5798e
Change message name from MQTT_RTI_RESIGNED to MQTT_RESIGNED.
Jakio815 May 21, 2024
28e6999
Better close_netdrv() on MQTT support && Minor fix
Jakio815 May 21, 2024
ab44dc3
Update comments from socket to netdriver
Jakio815 May 21, 2024
69e1403
Update create_TCP_server for better port handling.
Jakio815 May 21, 2024
2b25a95
Minor fix.
Jakio815 May 21, 2024
2d93e2c
Add MQTTClient_receive to retry.
Jakio815 May 21, 2024
0202275
Minor fixes. Enable handling resign.
Jakio815 May 22, 2024
a48e850
Fix Clock-sync to work on MQTT.
Jakio815 May 22, 2024
9150fe4
Fix many comments and bugs.
Jakio815 May 23, 2024
1043170
Add better logs && Fix names for conflicts on topic and ClientID names.
Jakio815 May 24, 2024
f9c0d03
Add checking for drv is open.
Jakio815 May 24, 2024
74b2ef3
Fix checking if netdrv to rti is not NULL
Jakio815 May 24, 2024
5fe49a7
Move netdrv_mutex to netdriver.c
Jakio815 May 24, 2024
d71f9d0
Add LF_MUTEX_INIT(&netdrv_mutex); for also the rti use the same mutex…
Jakio815 May 24, 2024
32b459b
Minor fix
Jakio815 May 24, 2024
5ca9fe2
Remove log
Jakio815 May 24, 2024
d677b75
Add mutex and error handling. Still getting segfaults on termination.
Jakio815 May 24, 2024
1ad0a34
Reveal mutex locks..
Jakio815 May 24, 2024
30fef48
Removing close netdrivers on netdrv_close_on_error
Jakio815 May 24, 2024
c27ff6b
Move _lf_termination_executed to netdriver.c for checking the status …
Jakio815 May 30, 2024
9f3cd86
Remove old configs.
Jakio815 Jun 18, 2024
eddbe73
Add comments.
Jakio815 Jun 19, 2024
afb4c44
Apply Erling's fix on clearing out chunks.
Jakio815 Jun 20, 2024
ff613cf
Checked buffer length for read
Jakio815 Jun 20, 2024
abac681
Change bytes_read to 0 for close() situations.
Jakio815 Jun 21, 2024
9f4b822
Minor fix
Jakio815 Jun 25, 2024
18a1c16
Merge branch 'main' of github.com:lf-lang/reactor-c into netdriver
Jakio815 Jun 25, 2024
7e5997a
Fix RTI build
Jakio815 Jun 26, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions core/federated/RTI/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ add_executable(
${CoreLib}/utils/util.c
${CoreLib}/tag.c
${CoreLib}/federated/network/net_util.c
${CoreLib}/federated/network/lf_socket_support.c
${CoreLib}/utils/pqueue_base.c
${CoreLib}/utils/pqueue_tag.c
${CoreLib}/utils/pqueue.c
Expand Down
3 changes: 2 additions & 1 deletion core/federated/RTI/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -281,7 +281,8 @@ int main(int argc, const char* argv[]) {
initialize_federate(fed_info, i);
rti.base.scheduling_nodes[i] = (scheduling_node_t *) fed_info;
}

_lf_initialize_clock();

int socket_descriptor = start_rti_server(rti.user_specified_port);
wait_for_federates(socket_descriptor);
free_scheduling_nodes(rti.base.scheduling_nodes, rti.base.number_of_scheduling_nodes);
Expand Down
7 changes: 5 additions & 2 deletions core/federated/RTI/rti_remote.c
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
*/

#include "rti_remote.h"
#include "net_util.h"
// #include "net_util.h"
#include <string.h>


Expand Down Expand Up @@ -1561,7 +1561,6 @@ int32_t start_rti_server(uint16_t port) {
// Use the default starting port.
port = STARTING_PORT;
}
_lf_initialize_clock();
// Create the TCP socket server
rti_remote->socket_descriptor_TCP = create_server(specified_port, port, TCP);
lf_print("RTI: Listening for federates.");
Expand Down Expand Up @@ -1632,6 +1631,10 @@ void initialize_RTI(rti_remote_t *rti){
initialize_rti_common(&rti_remote->base);
rti_remote->base.mutex = &rti_mutex;

// TODO: How to make this compile dependent? When should the options be determined?
rti_remote->rti_netdrv = socket_init(TCP);
rti_remote->clock_netdrv = socket_init(UDP);

// federation_rti related initializations
rti_remote->max_start_time = 0LL;
rti_remote->num_feds_proposed_start = 0;
Expand Down
9 changes: 9 additions & 0 deletions core/federated/RTI/rti_remote.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
#include <unistd.h> // Defines read(), write(), and close()
#include <strings.h> // Defines bzero().

#include "net_util.h"
#include "rti_common.h"

#ifdef __RTI_AUTH__
Expand All @@ -32,6 +33,9 @@
#include "lf_types.h"
#include "message_record/message_record.h"

//TODO: Need to be fixed later.
#include "lf_socket_support.h"

/////////////////////////////////////////////
//// Data structures

Expand Down Expand Up @@ -119,6 +123,11 @@ typedef struct rti_remote_t {
*/
const char* federation_id;

//TODO: Does it have to be a pointer?
netdrv_t *rti_netdrv;
netdrv_t *clock_netdrv;


/************* TCP server information *************/
/** The desired port specified by the user on the command line. */
uint16_t user_specified_port;
Expand Down
2 changes: 1 addition & 1 deletion core/federated/network/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
set(LF_NETWORK_FILES net_util.c)
set(LF_NETWORK_FILES net_util.c lf_socket_support.c)
list(APPEND INFO_SOURCES ${LF_NETWORK_FILES})

list(TRANSFORM LF_NETWORK_FILES PREPEND federated/network/)
Expand Down
99 changes: 99 additions & 0 deletions core/federated/network/lf_socket_support.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@

#include <netinet/ether.h>
#include <linux/if.h> /* IFNAMSIZ */
#include <arpa/inet.h> /* htons */
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
#include <stdbool.h>
#include <stdio.h>
#include <errno.h>

#include "util.h"
#include "lf_socket_support.h"
// #include "net_util.h"

static socket_priv_t *get_priv(netdrv_t *drv)
{
if (!drv)
return NULL;
return (socket_priv_t *)(drv+1);
}

// static int socket_open(netdrv_t *drv)
// {
// socket_priv_t *priv = get_priv(drv);
// priv->sock = socket(AF_PACKET, SOCK_RAW, htons(priv->proto));
// if (priv->sock < 0)
// return -1;

// /* If Rx, timeout is a good thing */
// if (priv->timeout_us > 0) {
// struct timeval tv = {
// .tv_sec = priv->timeout_us / 1e6,
// .tv_usec = priv->timeout_us % 1000000,
// };
// if (setsockopt(priv->sock, SOL_SOCKET, SO_RCVTIMEO, (const char*)&tv, sizeof tv) == -1) {
// printf("%s(): Could not set timeout on socket (%d): %s\n",
// __func__, priv->sock, strerror(errno));
// close(priv->sock);
// return -1;
// }
// }
// /* bind to device, ... */

// printf("Socket created\n");
// return 0;
// }

// static void socket_close(netdrv_t *drv)
// {
// if (!drv)
// return;
// socket_priv_t *priv = get_priv(drv);
// if (priv->sock > 0) {
// close(priv->sock);
// priv->sock = -1;
// }
// }

// static int socket_recv(netdrv_t *drv, void * buffer, int size)
// {
// if (!drv)
// return -1;
// socket_priv_t *priv = get_priv(drv);
// if (priv->timeout_us > 0) {
// int res = -1;
// do {
// res = recv(priv->sock, buffer, size, MSG_TRUNC);
// } while (res > 0);
// return res;
// }
// return recv(priv->sock, buffer, size, MSG_TRUNC);
// }

// static int socket_send(netdrv_t *drv, void * buffer, int size)
// {
// if (!drv)
// return -1;
// socket_priv_t *priv = get_priv(drv);
// return send(priv->sock, buffer, size, MSG_DONTWAIT);
// }

netdrv_t * socket_init(int protocol) {
//TODO: Should it be malloc? To support different network stacks operate simulatneously?
netdrv_t *drv = malloc(sizeof(*drv) + sizeof(socket_priv_t)); //Don't need to call malloc() twice.
// if (!drv) {// check if malloc worked.
// lf_print_error_and_exit("Falied to malloc netdrv_t.");
// }
// memset(drv, 0, sizeof(*drv));

socket_priv_t *priv = get_priv(drv); //drv+1 return.
priv->proto = protocol;

// drv->init = socket_open;
// drv->close = socket_close;
// drv->read = socket_recv;
// drv->write = socket_send;
return drv;
}
27 changes: 27 additions & 0 deletions core/federated/network/net_util.c
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,33 @@ THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
/** Number of nanoseconds to sleep before retrying a socket read. */
#define SOCKET_READ_RETRY_INTERVAL 1000000

int netdrv_open(netdrv_t *drv)
{
if (!drv)
return -1;
return drv->open(drv);
}
void netdrv_close(netdrv_t *drv)
{
if (drv)
drv->close(drv);
}

int netdrv_read(netdrv_t *drv, void * buffer, int size)
{
if (!drv)
return -1;
return drv->read(drv, buffer, size);
}

int netdrv_write(netdrv_t *drv, void * buffer, int size)
{
if (!drv)
return -1;
return drv->write(drv, buffer, size);
}


int create_real_time_tcp_socket_errexit() {
int sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (sock < 0) {
Expand Down
15 changes: 15 additions & 0 deletions include/core/federated/network/lf_socket_support.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#ifndef LF_SOCKET_SUPPORT_H
#define LF_SOCKET_SUPPORT_H

#include "net_util.h"

typedef struct socket_priv_t {
int sock;
int proto;
int port;
int user_specified_port;
} socket_priv_t;

netdrv_t * socket_init(int protocol);

#endif // LF_SOCKET_SUPPORT_H
11 changes: 11 additions & 0 deletions include/core/federated/network/net_util.h
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,17 @@ int host_is_big_endian(void);

#ifdef FEDERATED

typedef struct netdrv_t {
int ( *open)(struct netdrv_t *drv);
void (*close)(struct netdrv_t *drv);
int ( *read)(struct netdrv_t *drv, void * buffer, int size);
int (*write)(struct netdrv_t *drv, void * buffer, int size);
} netdrv_t;

int netdrv_open(netdrv_t *drv);
void netdrv_close(netdrv_t *drv);
int netdrv_read(netdrv_t *drv, void * buffer, int size);
int netdrv_write(netdrv_t *drv, void * buffer, int size);

/**
* @brief Create an IPv4 TCP socket with Nagle's algorithm disabled
Expand Down
Loading