]> git.vomp.tv Git - vompserver.git/blob - dsock6.h
IPv6 support for discovery protocol
[vompserver.git] / dsock6.h
1 /*
2     Copyright 2019 Chris Tallon
3
4     This file is part of VOMP.
5
6     VOMP is free software; you can redistribute it and/or modify
7     it under the terms of the GNU General Public License as published by
8     the Free Software Foundation; either version 2 of the License, or
9     (at your option) any later version.
10
11     VOMP is distributed in the hope that it will be useful,
12     but WITHOUT ANY WARRANTY; without even the implied warranty of
13     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14     GNU General Public License for more details.
15
16     You should have received a copy of the GNU General Public License
17     along with VOMP.  If not, see <https://www.gnu.org/licenses/>.
18 */
19
20 #ifndef DSOCK6_H
21 #define DSOCK6_H
22
23 #include <sys/socket.h>
24 #include <sys/select.h>
25
26 #include "defines.h"
27 #include "log.h"
28
29 #define MAXBUFLEN 2000
30
31 class DatagramSocket6
32 {
33   public:
34     DatagramSocket6();
35     ~DatagramSocket6();
36     bool init(USHORT port);
37     void shutdown();
38     unsigned char waitforMessage(unsigned char); // int =0-block =1-new wait =2-continue wait
39     void send(const char *, USHORT, char *, int); // send wants: IP Address ddn style, port,
40                                             // data, length of data
41
42     char*  getData()             { return buf; }      // returns a pointer to the data
43     char*  getFromIPA()          { return fromIPA; }  // returns a pointer to from IP address
44     USHORT getFromPort() const   { return fromPort; } // returns the sender port number
45     int    getDataLength() const { return mlength; }  // returns data length
46
47   private:
48     Log* log;
49     int initted;
50     int socketnum;                  // Socket descriptor
51
52     socklen_t addrlen;              // length of sockaddr struct
53     char buf[MAXBUFLEN];            // main data buffer
54     char fromIPA[40];               // from string (ip address)
55     USHORT fromPort;                // which port user sent on
56     int mlength;                    // length of message
57     struct timeval tv;
58     fd_set readfds;
59 };
60
61 #endif