e734452ddf5fd7d9dce4b34f1b77d44ff5e1f8a2
[radsecproxy.git] / lib / packet.c
1 #include <string.h>
2 #include <freeradius/libradius.h>
3 #include "libradsec.h"
4 #include "libradsec-impl.h"
5
6
7 int
8 _packet_create (struct rs_connection *conn, struct rs_packet **pkt_out,
9                 int code)
10 {
11   struct rs_packet *p;
12   RADIUS_PACKET *rpkt;
13
14   *pkt_out = NULL;
15
16   rpkt = rad_alloc (1);
17   if (!rpkt)
18     return rs_conn_err_push (conn, RSE_NOMEM, __func__);
19   rpkt->id = -1;
20   rpkt->code = code;
21
22   p = (struct rs_packet *) malloc (sizeof (struct rs_packet));
23   if (!p) {
24     rad_free (&rpkt);
25     return rs_conn_err_push (conn, RSE_NOMEM, __func__);
26   }
27   memset (p, 0, sizeof (struct rs_packet));
28   p->rpkt = rpkt;
29
30   *pkt_out = p;
31   return RSE_OK;
32 }
33
34 int
35 rs_packet_create_acc_request (struct rs_connection *conn,
36                               struct rs_packet **pkt_out,
37                               const char *user_name, const char *user_pw)
38 {
39   struct rs_packet *pkt;
40   struct rs_attr *attr;
41
42   if (_packet_create (conn, pkt_out, PW_AUTHENTICATION_REQUEST))
43     return -1;
44   pkt = *pkt_out;
45
46   if (rs_attr_create (conn, &attr, "User-Name", user_name))
47     return -1;
48   if (rs_packet_add_attr (pkt, attr))
49     return -1;
50
51   if (rs_attr_create (conn, &attr, "User-Password", user_name))
52     return -1;
53   if (rs_packet_add_attr (pkt, attr))
54     return -1;
55
56   return RSE_OK;
57 }
58
59 int
60 rs_packet_send (struct rs_conn *conn, const struct rs_packet *pkt,
61                 void *user_data)
62 {
63   rad_encode (pkt->rpkt, NULL, pkt->conn->secret);
64 #if defined (DEBUG)
65   fprintf (stderr, "%s: about to send this to %"
66   print_hex (pkt);
67 #endif
68
69   
70
71   return RSE_NOSYS;
72 }
73
74 int rs_packet_receive(struct rs_conn *conn, struct rs_packet **pkt)
75 {
76   return RSE_NOSYS;
77 }