Signed-off-by: Richard Cochran <richardcoch...@gmail.com>
---
 port_private.h   |  1 +
 port_signaling.c | 38 ++++++++++++++++++++++++++++++++++++++
 2 files changed, 39 insertions(+)

diff --git a/port_private.h b/port_private.h
index 6e66791..464699b 100644
--- a/port_private.h
+++ b/port_private.h
@@ -172,6 +172,7 @@ void process_follow_up(struct port *p, struct ptp_message 
*m);
 int process_pdelay_req(struct port *p, struct ptp_message *m);
 int process_pdelay_resp(struct port *p, struct ptp_message *m);
 void process_pdelay_resp_fup(struct port *p, struct ptp_message *m);
+int process_signaling(struct port *p, struct ptp_message *m);
 void process_sync(struct port *p, struct ptp_message *m);
 int pid_eq(struct PortIdentity *a, struct PortIdentity *b);
 int source_pid_eq(struct ptp_message *m1, struct ptp_message *m2);
diff --git a/port_signaling.c b/port_signaling.c
index c8b46e9..c26e062 100644
--- a/port_signaling.c
+++ b/port_signaling.c
@@ -18,6 +18,7 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA.
  */
 #include "port_private.h"
+#include "unicast_client.h"
 
 struct ptp_message *port_signaling_construct(struct port *p,
                                             struct address *address,
@@ -44,3 +45,40 @@ struct ptp_message *port_signaling_construct(struct port *p,
 
        return msg;
 }
+
+int process_signaling(struct port *p, struct ptp_message *m)
+{
+       struct tlv_extra *extra;
+       int err = 0;
+
+       switch (p->state) {
+       case PS_INITIALIZING:
+       case PS_FAULTY:
+       case PS_DISABLED:
+               return 0;
+       case PS_LISTENING:
+       case PS_PRE_MASTER:
+       case PS_MASTER:
+       case PS_GRAND_MASTER:
+       case PS_PASSIVE:
+       case PS_UNCALIBRATED:
+       case PS_SLAVE:
+               break;
+       }
+
+       TAILQ_FOREACH(extra, &m->tlv_list, list) {
+               switch (extra->tlv->type) {
+               case TLV_REQUEST_UNICAST_TRANSMISSION:
+                       break;
+               case TLV_GRANT_UNICAST_TRANSMISSION:
+                       unicast_client_grant(p, m, extra);
+                       break;
+               case TLV_CANCEL_UNICAST_TRANSMISSION:
+                       err = unicast_client_cancel(p, m, extra);
+                       break;
+               case TLV_ACKNOWLEDGE_CANCEL_UNICAST_TRANSMISSION:
+                       break;
+               }
+       }
+       return err;
+}
-- 
2.11.0


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Linuxptp-devel mailing list
Linuxptp-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxptp-devel

Reply via email to